3

この例https://github.com/IBM-Blockchain/marblesをローカルで実行しました。この例では、 https: //github.com/ibm-blockchain/marbles-chaincode から golang チェーンコードがダウンロードされていることがわかりました。そして、チェーンコードはハードディスクの /marbles/node_modules/ibm-blockchain-js/temp/unzip に保管されました。nodejs コード内で golang チェーンコードがどのように実行されたか説明していただけますか?

4

3 に答える 3

3

Marbles アプリについては詳しく見ていませんが、一般的に言えば、nodejs コードはバリデーター ネットワークの単なるクライアントであり、バリデーターは、nodejs ベースのクライアントから完全に切り離された方法で golang ベースのチェーンコードを処理しています。このプロセスでは、バリデーターはチェーンコードをダウンロード/取得し、分離コンテナー内でローカルにコンパイルします。[golang::chaincode]->[nodejs::client]->(network)->[golang::validator]->[golang::container] のようなプロセスを見ることができます。したがって、最初と最後の部分は golang/chaincode に関連しており、途中で起こることは多かれ少なかれトランスポートです。つまり、クライアントが nodejs でバリデーターが golang であるという事実は、ここではほとんど問題になりません。

于 2016-04-26T16:03:58.030 に答える
0

ここに記載されているように、

ここに画像の説明を入力

cc との対話は、ネットワーク上のピアへの HTTP REST 呼び出しで行われます。ibc-jsSDK は、REST 呼び出しの詳細を抽象化します。これにより、ドット表記を使用して GoLang 関数 ( などchaincode.invoke.init_marble(args)) を呼び出すことができます。

ユーザーは、ブラウザーで Node.js アプリケーションと対話します。このクライアント側の JS コードは、バックエンド Node.js アプリケーションへの websocket を開きます。ユーザーがサイトを操作すると、クライアント JS がバックエンドにメッセージを送信します。

バックエンドの Node.js は、(SDK を介して) HTTP 要求をブロックチェーン ピアに送信し、ユーザーのアクションを実行します。ピアは、暇なときにチェーンコード コンテナーと通信します。以前の HTTP リクエストは、実際には実行するチェーンコードの「送信」であったことに注意してください。実際には後日 (通常はミリ秒) 実行されます。

cc コンテナーは目的の操作を実行し、台帳に記録します。つまり、ビー玉を作成/転送します。

于 2016-09-08T01:53:42.120 に答える