2016-04-26 6 views
2

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

答えて

3

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

3

Marblesチェーンコード(別名スマートコントラクト)を実装するGolangコードは、Node.jsアプリケーション内で実行されません。チェーンコードは、アプリケーションがブロックチェーンに格納された状態変数を変更するために相互作用するものです。この場合の状態は、どのようなビー玉が存在するか、所有者が誰であるか、どの色であるかなどです。しかし、チェーンコード自体(Golangコード)はドッキング・コンテナとしてパッケージ化され、ブロックチェーンにデプロイされ、トランザクション。 Node.jsコードは、これらのトランザクションを構築してドッカーコンテナに送信し、チェーンコード実行の結果を受け取り、現在の状態のアプリケーションビューを更新します。

ちょうど参考までに、Marblesアプリケーションは、Hyperledger Fabricプロジェクトの上で動作するアプリケーションを実装する方法を示すために実装されました。 Hyperledgerは現在、Golangをスマートな契約言語として完全にサポートしていますが、すぐにもっと多くの言語が登場します。

+0

私はこの例をbluemix hyperledgerネットワークでローカルに実行します。私は、MarblesアプリケーションがGitリポジトリからチェーンコードをダウンロードして解凍したことを確認しました。大理石アプリは、非妥当性確認ピアとしてチェッカーコードをローカルにドッカーコンテナにパックして、ブルーミックスハイパーシェーダーネットワークと通信したり、チェーンコードをネットワークに送信したりすることができますか? – scorpiovn

+0

あなたの質問を読んだところ、IBM Blockchain on Bluemixサービスが既に設定されているようです。これは、Bluemixにすでに2つの検証対象ピアとCAサービスが用意されていることを意味します。私が誤解しているかどうかを教えてください。 – angrbrd

+0

上記の設定が正確であれば、Marblesサンプルをローカルで実行している場合、チェーンコードをダウンロードして解凍する理由は、チェーンコードをイントロスペクトし、呼び出し関数名とクエリ関数名を識別するためです。これは、ファブリックコードではなくアプリケーションレベルのコードです。次に、ピア・レスト・エンドポイントに送信するデプロイ・トランザクションを構成します。 deployトランザクションには、Marblesチェーンコードを含むGithubリポジトリへのポインタが含まれています。チェーンコードはGithubレポから引き出され、ピア上のDockerにデプロイされます。 Marblesアプリの中にはありません。これが明らかな場合はお知らせください。 – angrbrd

0

としては、CCが ネットワーク上のピアへのHTTP REST呼び出しで行われるとの対話here

enter image description here

を記載しました。 ibc-js SDKは、 離れたRESTコールの詳細を抽象化します。これにより、ドット表記法を使用してGoLang関数 (chaincode.invoke.init_marble(args)など)を呼び出すことができます。

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

バックエンドNode.jsは、ユーザーの アクションを実行するために、ブロックチェーンのピアにHTTP リクエスト(SDK経由)を送信します。同僚はその レジャーでチェーンコードコンテナと通信します。以前のHTTPリクエストは実際にチェーンコードの「提出」 が実行されたものであり、実際には後で実行されます(通常 ミリ秒)。

ccコンテナは、希望の操作 を実行し、それを元帳に記録します。大理石の作成/転送

関連する問題