web-dev-qa-db-ja.com

スマートコントラクトはブロックチェーンのどこにありますか(EthereumまたはHyperledger)

それでは、典型的な貿易金融プロセスの流れを考えてみましょう。エクスポーターは、出荷の条件を含む契約を展開し、展開が完了するとハッシュが生成されます。

質問:

1)契約はどこに保存されますか?
2)税関や輸入業者などの他の参加者は、この契約にどのようにアクセスできますか?
3)ブロックチェーン上の契約への参加者レベルのアクセスをアクティブ化できますか?

14
Saurabh

EthereumとHyperledgerには、まったく異なるいくつかの側面があります。詳細に詳しくなりすぎないように、やや簡略化した答えと長すぎる答えを出してみましょう。

まず第一に、Ethereumは主に、特定の意図された方法で機能するパブリックブロックチェーンです。同様に、ビットコインブロックチェーンは特定の意図された方法で機能します。 Hyperledgerはそのようなものではなく、分散型台帳テクノロジー(私の用語ではブロックチェーンとは異なります)の傘であり、すべてが非常に柔軟なアーキテクチャを提供することを目的としているため、ほとんどすべてのプロパティであらゆる種類の台帳ベースのシステムを構築できます必要。これを、たとえばプラグイン可能な部品を備えた独自のアルトコインを生成するテクノロジーを提供する仮想のビットコイン傘と比較することができます。コンセンサス、ブロックチェーンストレージ、ノード構成など。要するに、これらはすべて異なる問題を解決することを目的としており、すべてが当てはまるとは考えないでください。

あなたの質問に戻ります。

1)契約はどこに保存されますか?

イーサリアムはチェーン上にコントラクト(スマートコントラクトと呼ばれます)を持っています。つまり、コードはバイトコードにコンパイルされ、結果のバイトはトランザクション内で送信されてイーサリアムブロックチェーンに永続化されます。これは、スマートコントラクトを展開するときに一度実行されます。この後、他のトランザクションとスマートコントラクトを対話できます。

ハイパーレジャーは理論的にはこれを定義していません。元帳にあるか、そうでない可能性があります。たとえば、Fabricを使用すると、サンドボックス化されたDockerコンテナーにコードがデプロイされ、トランザクションを使用して対話することができます。

2)税関や輸入業者などの他の参加者はどのようにしてこの契約にアクセスできますか?

簡単に言えば、資格情報を介してアクセス権が与えられます。

これはイーサリアムとハイパーレジャーの両方で開いており、自分で決めることができます。ここで、両方の場合のコードが、Ethereumのブロックチェーン上のコードとして、およびFabricのDockerコンテナーとしてデプロイされていると想定します。

イーサリアムでは、コードは少し単純化され、一般にアクセス可能/表示されます。つまり、スマートコントラクトとやり取りできる必要のある人だけがチェックできるように、何らかのチェックを行う必要があります。 1つの方法は、(トランザクションの)送信者をチェックして、特定の送信者のみを許可することです。これは従来のシステムに似ており、通常、データの表示と変更を許可するために認証/承認を行う必要があります。

Hyperledgerでは、おそらく同じようにモデル化されます。ファブリックには、システムのさまざまな部分へのアクセスを許可する証明書を配布する認証局もあります。例えば。輸送、保証、または取引。

3)ブロックチェーン上の契約への参加者レベルのアクセスをアクティブ化できますか?

はい。そのため、両方のシステムの各参加者には資格情報があり、スマートコントラクトの設計者はこれを使用してアクセスを制御できます。

また、Fabricには、アクセス制御に使用される台帳を分割するチャネルがあります。

HTH。

16
murrekatt

1)契約は元帳にあります。トランザクションが呼び出されるたびに、コントラクトの対応するメソッドがすべての検証ピアで実行されます。

2)他の参加者は、事前定義されたユーザー資格情報を使用してこの契約にアクセスできます。これを使用して、自分を登録し、契約のトランザクションを呼び出すことができます。

3)はい。すべてのユーザーの属性を定義し、特定の属性を持つユーザーのみが契約の特定の部分にアクセスできるようにすることで、契約への参加者レベルのアクセスをアクティブ化できます。

6
Chaitanya Reddy