Weitere ähnliche Inhalte Ähnlich wie BMXUG ブロックチェーンハンズオン 20190622 (20) Mehr von Kohei Nishikawa (20) BMXUG ブロックチェーンハンズオン 201906222. 作るもの
• 目的
• 緊急時に商品の在庫を融通するための在庫管理ブロックチェーン
• ロジック
• 各商品を登録
• 地震や異常気象などの緊急時に店舗間で、一般薬品など各商品の在庫を融通する処理を記録する。
• 融通された商品は、問題発生に備え、融通処理別に管理できるようにする。
• 自店舗の在庫からの出荷した後の残数を記録する
2
画面
A店からB店に風邪
薬を100箱融通
結果を返す
同期
同期
同期
在庫情報と
処理の履歴
ハンズオン対象
A店
B店
風邪薬が足りない、
いくらか融通して
欲しい。
わかった!
記録
記録
3. 演習端末
• 演習用端末
• インターネットに接続できること
• Webブラウザ:Google Chrome シークレットウィンドウを推奨
• 画面:10.1インチ以上のPC、Mac、タブレット
• Google Chrome シークレットウィンドウの出し方
• Google Chromeを起動し、画面右上からアクセス
シークレット
ウィンドウは
虫眼鏡が表示
3
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ファイルをコピーすると簡単。
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]);
});
}
14. 動作確認 (1) :ユーザー登録
⑫ Deploy changes
をクリック
問題なければ、このような
メッセージが表示される
⑬ Test をクリック
⑭ Create New Participant
をクリック
14
18. 動作確認 (5):アイテム登録
⑳ 右の表をもとに在庫があ
る商品情報を入力します。
項目名 入力値 (原則 英数字) 備考
itemId 自動で割当られます。
owner resource:org.example.User#の後に、ユー
ザー登録で割当られた番号に書き換えます。
stock 100 在庫数
name 商品名
code 商品の英数字名
status 商品の在庫を融通可能など。例 OK
㉑ Create New をクリック
㉒ 登録情報を確認
18
20. 動作確認 (7) 在庫融通の確認
㉔ Submit Transaction
をクリック
項目名 入力内容 (原則 英数字)
from resource:org.example.
Item#の後に、店舗A の
商品ID を入力。
to resource:org.example.
Item#の後に、店舗B の
商品ID を入力。
code 商品コード
amount 数量
㉕ 右の表をもとに融通する
店ごとの商品IDと共通する商
品コード、数量を入力。
㉖ Submit をクリック
20
22. 動作確認 (9)
22
㉗ All Transactions を
クリック
㉘ トランザクション(データ処理)
履歴が表示されている
㉙ トランザクション(在庫融通処理)の確認
として、「view record」をクリック
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」を起動すると、ブロックチェーン開発がスタートできます。