Skip to content

Latest commit

 

History

History
310 lines (198 loc) · 18 KB

README-ja.md

File metadata and controls

310 lines (198 loc) · 18 KB

Build Status

Global financing with blockchain

ブロックチェーンテクノロジを使用したグローバルファイナンスアプリケーションは、購入者、販売者、プロバイダ、荷送人、および金融会社など、ネットワークのさまざまなメンバーによる注文に対するアクションを追跡します。 これらのアクションは次のとおりです。

  • バイヤーが注文を作成します
  • 売り手は商品の提供元に連絡します
  • 荷送人は商品を配達します
  • 金融会社は売り手への支払いを処理します

このユースケースは商品購入などに伴い揉め事が発生した際の解決に対処でき、業界のあらゆる分野に適用できます。 ここではBob DillによるRedBookチュートリアル use case より、同じアプリケーションインターフェースを使用しています。 このユースケースでは、Node.jsスマートコントラクトとNode.js Webアプリケーションを使用しています。

このCode Patternは、IBM Blockchain Platform Extension for VS Codeを使用してNode.jsスマートコントラクトをパッケージ化する方法を示しています。 次に、この拡張機能を使用して、Hyperledger Fabricネットワークのローカルインスタンスをセットアップし、その上にコントラクトをインストールしてインスタンス化できます。 Node.js Webアプリケーションは、 'fabric-network' sdkを使用してネットワークと対話できます。

このCode Patternを一通り完成させると、以下のことが理解できます。

  • Node.jsスマートコントラクトの開発
  • VS Code用 IBM Blockchain Platform Extensionを使用し、スマートコントラクトをパッケージ化した、Hyperledger Fabric ローカルインスタンスへのデプロイ
  • デプロイされたFabricネットワークとやり取りするためのNode.jsブロックチェーンWebアプリケーションの開発

Note: 注:スマートコントラクトを代わりにIBM Blockchain Platform(IBM Cloud上)にデプロイするには、この コードパターン に従ってください.

アーキテクチャフロー

VS Code用のIBM Blockchain Platform Extensionを使用して、以下のことを行います。

  1. スマートコントラクトをパッケージ化します。
  2. ローカルのHyperledger Fabric Networkを起動します。
  3. ピアノードにチェーンコードをインストールします。
  4. ピアノードでチェーンコードをインスタンス化します。
  5. Global Financeアプリケーションを使って、 fabric-network npmライブラリを使ったAPI呼び出しを通してHyperledger Fabricネットワークとやり取りします。管理者はアプリケーションを使用して新しい参加者を作成することもできます。

含まれるコンポーネント

  • IBM Blockchain Platform Extension for VS Code は、Hyperledger Fabric環境への接続を含む、スマートコントラクトの開発、テスト、および展開を支援するように設計されています。
  • Hyperledger Fabric v1.4 は、高度な機密性、回復力、柔軟性、およびスケーラビリティを提供するモジュラーアーキテクチャーに支えられた分散型元帳ソリューションのプラットフォームです。
  • Visual Studio Code は、最新のWebおよびクラウドアプリケーションの構築およびデバッグ用に再定義および最適化されたコードエディタです。

注目のテクノロジー

  • Node.js は、サーバーサイドのJavaScriptコードを実行する、オープンソースのクロスプラットフォームのJavaScriptランタイム環境です。
  • Bootstrap は、HTML、CSS、およびJavaScriptで開発するためのオープンソースのツールキットです。

アプリケーションの実行

このコードパターンを設定して実行するには、次の手順に従います。 ステップの詳細は以下のとおりです。

前提条件

下記 IBM Blockchain Platform Extension for VS Code の要件に従う必要があります:

ステップ

  1. Clone the repo
  2. Use the VS Code extension to set up a smart contract on a basic Fabric network
  3. Run the application

1. リポジトリのクローン

任意のフォルダにリポジトリをCloneします:

git clone https://github.com/IBM/global-financing-blockchain.git

2. VS Code extension を使用して、基本的なFabricネットワークにスマートコントラクトを設定する

Visual Studio Code を開き contract フォルダを開きます。

スマートコントラクトをパッケージ化する

VS Codeの他のオプションを見るために F1 キーを押してください。 その中から IBM Blockchain Platform: Package Open Project を選択します。

左側の IBM Blockchain Platform 拡張ボタンをクリックしてください。 これにより、パッケージ化されたコントラクトが一番上に表示され、ブロックチェーン接続が一番下に表示されます。

ローカルでファブリックを設定する

LOCAL FABRIC OPS のメニューをクリックし Start Fabric Runtime を選択してネットワークを起動します。 これにより、ローカルのFabric設定に必要なDockerイメージがダウンロードされ、ネットワークが起動します。 ネットワークが設定されると、出力ウィンドウが表示されます。 エディターの左側に FABRIC ENVIRONMENTS が表示されます。 このセクションの下に Local Fabric が表示されます。 それをクリックして、ローカルファブリックを起動します。

拡張機能は、ネットワーク内のノードとして機能するDockerコンテナーをプロビジョニングします。 プロビジョニングが完了し、ネットワークが稼働すると、スマートコントラクトをインストールしてインスタンス化するオプション、 Channels の情報、 Nodes の下のピア、そして Organizations の下の organization msp が表示されます。 これで、スマートコントラクトをインストールする準備ができました。

スマートコントラクトをインストールしてインスタンス化する

インストール

*下部にある FABRIC ENVIRONMENTS セクションで、 Smart Contracts > Installed > + Install をクリックします。 次の図のようなポップアップが表示されます。

*次に、パッケージ化されたコントラクトを選択します:globalfinancing@0.0.1 Packaged 0.0.1は、 package.json からです。 Line: "version": "0.0.1"

インストールが完了すると、 Successfully installed on peer peer0.org1.example.com というメッセージが表示されます。 また、contractが FABRIC ENVIRONMENTS の下の Installed の下にリストされていることを確認してください。

インスタンス化

  • Smart Contracts の下に、 Instantiated というセクションが表示されます。 その下の + Instantiate をクリックします。

  • Extensionは、インスタンス化するコントラクトとバージョンを尋ねます。 globalfinancing@0.0.1 Installed を選択します。

  • Extensionは、インスタンス化時に呼び出す関数を尋ねます。 instantiate と入力します

  • 次に、関数の引数を尋ねます。 ここでは引数は不要なので、何も入力せずにエンターキーを押してください。

  • 次に、Extensionは、プライベートデータコレクションの構成ファイルを提供するかどうかを尋ねます。 No をクリックします。

  • 最後に、Extensionはスマートコントラクトのエンドースメントポリシーを選択するかどうかを尋ねます。 Default (single endorser, any org) を選択します。

コントラクトのインスタンス化が完了すると、 Successfully instantiated smart contract というメッセージが表示され、 FABRIC ENVIRONMENTS の下の Instantiated の下に globalfinancing@0.0.1 が表示されます。

CAノードにIdentityを追加する

ここで、CA(認証局)ノードを使用してidentityを作成します。 アプリケーションを認証して実行するには、identity情報とキーファイルが必要です。

左側のペインの FABRIC ENVIRONMENTS セクションで、 Nodes を展開し、 ca.org1.example.com を右クリックします。 Create Identity(register and enroll) を選択します。

表示された入力ボックスに User1@org1.example.com を入力しEnterを押します。

Extensionは、このidentityに属性を追加するかどうかを尋ねます。 No をクリックします。

Once the identity is successfully created, you should get the message Successfully created identity 'User1@org1.example.com'. You can now see User1@org1.example.com in the FABRIC WALLETS section under Local Fabric Wallet. identityが正常に作成されると、 Successfully created identity 'User1@org1.example.com' というメッセージが表示されます。 これで、 Local Fabric Wallet の下の FABRIC WALLETS セクションに User1@org1.example.com が表示されます。

Walletをエクスポートする

FABRIC WALLETS の下で、 Local Fabric Wallet を右クリックし、 Export Wallet を選択します。

エクスポート先は任意の場所で結構です。

エクスポートされたディレクトリから、 User1 @ org1.example.com のフォルダを、このリポジトリを複製したディレクトリ内の次の場所にコピーします。

/global-financing-blockchain/web-app/controller/restapi/features/fabric/_idwallet/User1@org1.example.com

これでアプリケーションを実行する準備が整いました。

3. アプリケーションの実行

新しいターミナルで web-app ディレクトリへ移動します:

cd global-financing-blockchain/web-app/

Build the node dependencies:

npm install

Run the application:

npm start

Unified member's view:

トラブルシューティング

  • もしこのようなエラーが発生した場合: error: [Remote.js]: Error: Failed to connect before the deadline URL:grpc://localhost:17051 error: [Network]: _initializeInternalChannel: Unable to initialize channel. Attempted to contact 1 Peers. Last error was Error: Failed to connect before the deadline URL:grpc://localhost:17051

このエラーは、connection.jsonファイルでオーダー/認証局/ peerに使用されているポートが、VS Code用のIBM Blockchain Platform Extensionのsettings.jsonファイルでデフォルトのポートとして指定されているものと同じではないために発生したものです。settings.jsonファイルに指定されているものと一致するように、connection.jsonファイル内のポートを更新する必要があります。

左端にある歯車アイコンのボタンをクリックし、Settingsを選択します。左側のナビゲーションパネル内のExtensionsが展開され、"Settings"タブが新しく開き、Blockchain configurationを選択します。Edit in settings.jsonをクリックしてBlockchain platform extension用のsettings.jsonファイルを開きます。次のような内容が記載されていることが確認できると思います:

{
    "ibm-blockchain-platform.fabric.runtime": {
        "ports": {
            "orderer": 17053,
            "peerRequest": 17057,
            "peerChaincode": 17058,
            "peerEventHub": 17059,
            "certificateAuthority": 17060,
            "couchDB": 17061,
            "logs": 17062
        },
        "developmentMode": false
    },
    "ibm-blockchain-platform.fabric.wallets": [],
    "ibm-blockchain-platform.fabric.gateways": []
}

あなたのプロジェクト用のconnection.jsonファイルの中のorderer、peerそしてCAポートをこのsettings.jsonファイルで指定された orderer peerRequestそして certificateAuthorityポートに置き換えてください。

このCode Patternの拡張

このアプリケーションは、いくつかの方法で拡張できます。

  • すべてのメンバーのためのWalletを作成し、アプリケーションと対話するためにメンバーのWalletを使用してください。
  • IBM Cloud上のIBM Blockchain Platformスターター・プランを通じて対話するようにアプリケーションを更新します。

関連リンク

ライセンス

このCode Patternは、Apache Software License、Version 2の下でライセンスされています。このCode Pattern内で呼び出される個別のサードパーティコードオブジェクトは、それぞれのプロバイダによって、独自の個別のライセンスに従ってライセンスされています。 Contributions are subject to the Developer Certificate of Origin, Version 1.1 (DCO) and the Apache Software License, Version 2.

Apache Software License (ASL) FAQ