Hyperledgerファブリックの研究ノート - アプリケーション

1、基本的なプロセス

次の図は、プロセスを示しスマートアプリケーションはSDKによって、コマーシャル・ペーパーの契約を呼び出すだけです。

2、札入れ

ウォレットX.509デジタル証明書の所有者、組織内およびリンクするには、トランザクションコンテキストを介して取得することができ、契約の実行中にホルダー異なる権限を持つホルダーの異なるIDを持っているネットワークに接続するためのアクセス許可、およびインテリジェンスを提供しますこのアイデンティティ。ウォレットは唯一のアイデンティティを格納されている任意の現金またはトークンを、堆積しません。

トップissue.jsが分かるでゲートウェイとアプリケーションは、ネットワークに接続するFileSystemWalletブロック鎖クラスを使用して2つのクラスを含みます。

const { FileSystemWallet, Gateway } = require('fabric-network');

アプリケーションは、ウォレットのカテゴリを使用しています。

const wallet = new FileSystemWallet('../identity/user/isabella/wallet');

3、ゲートウェイ

それに接続されissue.jsゲートウェイ:

await gateway.connect(connectionProfile, connectionOptions);

gateway.connect()は2つの重要なパラメータがあります。

connectionProfileは:ピアゲートウェイの一連の接続プロファイルのファイルシステムの場所を識別する。リードYAMLの使用を容易にするために、JSONオブジェクトのロードは、以下のコードに変換されます。

let connectionProfile = yaml.safeLoad(file.readFileSync('./gateway/connectionProfile.yaml', 'utf8'));

connectionOptions:ブロック鎖がネットワークに接続された方法を制御issue.js(アプリケーション・コード)のための一連。これは、ゲートウェイのニーズに接続されているアイデンティティ、ユーザ名と財布を指定するだけでなく、SDKを介して、いくつかのインテリジェントな動作を実現します。

let connectionOptions = {
  identity: userName,
  wallet: wallet,
  eventHandlerOptions: {
    commitTimeout: 100,
    strategy: EventStrategies.MSPID_SCOPE_ANYFORTX
  },
}

使用接続プロファイルおよび接続オプションを担当するゲートウェイは、トランザクションが正しいピア・ノードに送信されます提案しました。

4、ネットワークチャンネル

connectionProfile.yamlゲートウェイは、これらのピアは、ネットワークの複数のチャネルを結合することができるので、そう実際ゲートウェイはわずかにアプリケーションルートネットワークの複数のチャンネルへのアクセスを提供し、issue.jsアクセスPaperNet方法を提供する設定ファイルに定義されているピア。

チャンネルの特定のアプリケーションを選択します。

const network = await gateway.getNetwork('PaperNet');

アプリケーションは、複数のゲートウェイ・ピアに接続することにより、ネットワークのサブネットワークに加えてもよいです。各ピアは、それらの異なる用途に応じて、ネットワークの複数のチャネルに追加され、異なるチャネルで異なる権限財布IDを持っています。

5、ビルドへの提案

直接このインテリジェント契約CommercialPaperContractに接続されているアプリケーション:

const contract = await network.getContract('papercontract', 'org.papernet.commercialpaper');

papercontract.js複数のインテリジェンスの契約が含まれているチェーンコードファイルで、papercontractは知性契約の名でpapercontract.jsチェーンコードから必要なインテリジェンスの契約を選択し、チェーンコードファイルはチャンネル名にインストールして展開されています。getContract()メソッドは、デフォルトを見つけたので、チェーンコードが唯一のスマート契約の場合は、契約が名を省略することができるインテリジェントなチェーンコードの最初の契約を使用しています。

提案された取引を提出する6、

提案された取引は、別のメソッドSDKを提出するための呼び出しです。

const issueResponse = await contract.submitTransaction('issue', 'MagnetoCorp', '00001', '2020-05-31', '2020-11-30', '5000000');

塗布後のスマート契約のように見えますが()すぐに得た制御submitTransactionを呼び出しますが、それはそうではありません。舞台裏では、SDKはconnectionOptionsを使用してconnectionProfileが提案された取引に正しいネットワークノードに送信されます。しかし、これらのチューブを使用しないアプリケーションは、ちょうどsubmitTransaction SDKを立ち上げ、その後、すべての操作の残りの部分を完了します。

注、submitTransactionAPIは、トランザクションが正常に、ソート完了を確認し、そのブックに提出されたかどうかを知ることができない場合ではないので、必要なモニタトランザクション提出プロセスを、含まれています。

図7に示すように、処理に応じて

そして、トランザクションが提案されているように、契約の呼び出しがすぐに得た制御後のインテリジェントなアプリケーションを見えるかもしれませんが、実際には、SDKによって行われ、他のプロセスの背後にある同じコンセンサスケースではありません。

公開された23元の記事 ウォンの賞賛0 ビュー1256

おすすめ

転載: blog.csdn.net/Nemoosi/article/details/104708877