Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

BMXUG ブロックチェーンハンズオン 20190622

401 views

Published on

Code & Response Day Numazu #2 のブロックチェーンハンズオン資料です。

Published in: Business
  • Login to see the comments

  • Be the first to like this

BMXUG ブロックチェーンハンズオン 20190622

  1. 1. Blockchain hands-on Hyperledger Fabric & Hyperledger Composer 2019-06-22 Code and Response Day Numazu #2 1
  2. 2. 作るもの • 目的 • 緊急時に商品の在庫を融通するための在庫管理ブロックチェーン • ロジック • 各商品を登録 • 地震や異常気象などの緊急時に店舗間で、一般薬品など各商品の在庫を融通する処理を記録する。 • 融通された商品は、問題発生に備え、融通処理別に管理できるようにする。 • 自店舗の在庫からの出荷した後の残数を記録する 2 画面 A店からB店に風邪 薬を100箱融通 結果を返す 同期 同期 同期 在庫情報と 処理の履歴 ハンズオン対象 A店 B店 風邪薬が足りない、 いくらか融通して 欲しい。 わかった! 記録 記録
  3. 3. 演習端末 • 演習用端末 • インターネットに接続できること • Webブラウザ:Google Chrome シークレットウィンドウを推奨 • 画面:10.1インチ以上のPC、Mac、タブレット • Google Chrome シークレットウィンドウの出し方 • Google Chromeを起動し、画面右上からアクセス シークレット ウィンドウは 虫眼鏡が表示 3
  4. 4. 演習環境 (1) IBM公式版 https://composer-playground.mybluemix.net/ (2) 本日限定版 http://blockchain.cgm-u.com:8080 IBM公式版の動きが悪いとき にはこちらを使ってください。 IBM公式版とは連携してい ないのでご注意ください。 最初の画面はどちらも 一緒です。 Let’s Blockchain! をクリック 4
  5. 5. 演習環境の違い (1) IBM公式版 https://composer-playground.mybluemix.net/ (2) 本日限定版 http://blockchain.cgm-u.com:8080 Deploy a new business network をクリック クリックして、ブロック チェーン作成画面へ。 Deploy a new business network をクリック 画面を下に移動し、 「Connection:Web Browser」と 表示されている位置まで移動。 5
  6. 6. ビジネスネットワーク作成 ② 英数字で名称を 入力 ③ admin@の後に上記 で入力した名称を入力 例 1st-blockchain 例 admin@1st-blockchain ①テンプレートでは、empty- business-networkを選択 ④ Deployをクリック 6
  7. 7. ビジネスネットワークの確認 作成したビジネス ネットワーク この中でブロック チェーンを作る ⑤ Connect Nowを クリック ここで、ブロック チェーンを開発、 テストができる ⑥ Model Fileを クリック 7
  8. 8. モデル定義ファイルの編集 ファイルが消える ので触れない! 8 ⑦これと同じ内 容に書き換える
  9. 9. モデル定義 namespace org.example //モノ asset Item identified by itemId { o String itemId --> User owner o Double stock o String name o String code o String status } //人 participant User identified by userId { o String userId o String firstname o String lastname } 9 //トランザクション transaction ItemTransfer { --> Item from --> Item to o String code o Double amount } //トランザクション transaction withDraw { -->Item itemId o Double amount } https://bitbucket.org/kolinzlabs/handson-material/src/master/zaikoshare/ から model.ctoファイルをコピーすると簡単。
  10. 10. ロジック定義ファイルを追加 ⑧ Add a file を クリック ⑨ Script File(js) を選択 ⑩ Add をクリック 10
  11. 11. ロジック定義ファイルの編集 Script File が選 ばれている ⑪ これと同じ内容 に書き換える 11
  12. 12. ロジック定義 前半 12 https://bitbucket.org/kolinzlabs/handson- material/src/master/zaikoshare/ からscript.js ファイルをコピーすると前半部分と後半部 分が簡単に1回で済みます。 /** * Sample transaction * @param {org.example.ItemTransfer} itemTransfer * @transaction */ function itemTransfer(itemTransfer) { if(itemTransfer.from.stock < itemTransfer.amount) { throw new Error('Item stock is not enough!'); } if (itemTransfer.from.code != itemTransfer.code) { throw new Error('Item Code not matched!'); } itemTransfer.from.stock -= itemTransfer.amount; itemTransfer.to.stock += itemTransfer.amount; return getAssetRegistry('org.example.Item').then(function(assetRegis try) { return assetRegistry.updateAll([itemTransfer.from,itemTransfer.to]); }); }
  13. 13. ロジック定義 後半 13 https://bitbucket.org/kolinzlabs/handson-material/src/master/zaikoshare/ からscript.jsファイルをコピーすると 前半部分と後半部分が簡単に1回で済みます。 /** * To withDraw amount from an item * @param {org.example.withDraw} withDraw * @transaction */ function withdraw(withDraw) { withDraw.itemId.stock -= withDraw.amount; return getAssetRegistry('org,example.Item').then(function(assetRegistry) { return assetRegistry.update(withDraw.Id); }); }
  14. 14. 動作確認 (1) :ユーザー登録 ⑫ Deploy changes をクリック 問題なければ、このような メッセージが表示される ⑬ Test をクリック ⑭ Create New Participant をクリック 14
  15. 15. 動作確認 (2):ユーザー登録 ⑮ 右の表をもとに姓、名を 入力します。 ⑯ Create New をクリック 項目名 入力内容 (原則 英数字) userID 自動で割当られます。 firstName 名 lastName 姓 ⑰ 登録情報を確認 編集 削除 追加登録 15
  16. 16. 動作確認 (3):ユーザー登録 16 最低2名登録します。店舗Aと店舗Bの担当者のイメージです。 店舗A 店舗B
  17. 17. 動作確認 (4):アイテム登録 ⑱ Item をクリック ⑲ Create New Asset をクリック 17
  18. 18. 動作確認 (5):アイテム登録 ⑳ 右の表をもとに在庫があ る商品情報を入力します。 項目名 入力値 (原則 英数字) 備考 itemId 自動で割当られます。 owner resource:org.example.User#の後に、ユー ザー登録で割当られた番号に書き換えます。 stock 100 在庫数 name 商品名 code 商品の英数字名 status 商品の在庫を融通可能など。例 OK ㉑ Create New をクリック ㉒ 登録情報を確認 18
  19. 19. 動作確認 (6):アイテム登録 19 ㉓ 店舗Aと店舗Bの間で、在庫を融通するため、同じ商品を登録します。 店舗A の商品 店舗B の商品
  20. 20. 動作確認 (7) 在庫融通の確認 ㉔ Submit Transaction をクリック 項目名 入力内容 (原則 英数字) from resource:org.example. Item#の後に、店舗A の 商品ID を入力。 to resource:org.example. Item#の後に、店舗B の 商品ID を入力。 code 商品コード amount 数量 ㉕ 右の表をもとに融通する 店ごとの商品IDと共通する商 品コード、数量を入力。 ㉖ Submit をクリック 20
  21. 21. 動作確認 (8):在庫融通結果 21 店舗A の商品 店舗B の商品 在庫を融通したことで、店舗A の在庫が減り、 店舗B の在庫が増えている。
  22. 22. 動作確認 (9) 22 ㉗ All Transactions を クリック ㉘ トランザクション(データ処理) 履歴が表示されている ㉙ トランザクション(在庫融通処理)の確認 として、「view record」をクリック
  23. 23. Export 23 bna形式として保存 開発を途中で止めるときは、Export機能を用いて、bnaファイルとして出力します。 「Define」タブを クリック。 作成したビジネスネットワーク を保存するために、「Export」 をクリック
  24. 24. Import 24 ビジネスネットワーク 作成画面で、bnaファイ ルをアップロード Deployをクリック 「Export」で出力したbnaファイル を、Importすることで、続きから ブロックチェーンの開発を再開す ることができます。
  25. 25. PC上で開発環境を整える手順 25 1. Linux環境またはMacOS X が使えるマシンを用意します。 Linux環境の場合は、OracleのVirtual Box がよく使われます。 2. Linuxは、Ubuntu 16.04 Server にします。 こちらからダウンロードできます。 http://releases.ubuntu.com/16.04/ubuntu-16.04.6-server-amd64.iso 3. ダウンロードしたISOイメージを用いて、Virtual Boxに、Ubuntu 16.04 Serverによる仮想マシンを 構築します。ネットワークアダプタは、NATで、ポートフォワーディングで、22番と8080番ポートに つながるように設定します。 4. Hyperledger Composer & Fabric に必要なdockerなどをインストールします。 参照先 https://hyperledger.github.io/composer/latest/installing/installing-prereqs.html 5. Hyperledger Composer & Fabric をインストールします。 参照先 https://hyperledger.github.io/composer/latest/installing/development-tools.html 6. 「composer-playground」を起動すると、ブロックチェーン開発がスタートできます。
  26. 26. その他 26 1. ブロックチェーンにおけるブロックの中身を見たい。 Hyperledger Explorer https://cn.hyperledger.org/projects/explorer 2. いろいろなサンプルが欲しい IBM Developer https://developer.ibm.com/jp/components/hyperledger-composer/

×