Slide 1

Slide 1 text

ブロックチェーン LT会 #1 名古屋
 アイレット株式会社 甲斐
 Amazon Managed Blockchain
 を使ってみた


Slide 2

Slide 2 text

アイレット株式会社 ( クラウドパック )
 事業戦略本部 技術開発セクション 大阪グループ 
 AI、ブロックチェーンの調査・検証など 
 システムエンジニア
 Python TypeScript C# Go Ruby etc... 
 バックグラウンド
 小さなSESでエンジニア ( 4年 )
 フリーランスでエンジニア ( 8年 )
 事業会社でシステム部マネージャー ( 7年 )
 プレイングマネージャー
 サーバレス大好きっ子
 38歳、既婚、子供 3人 ( 高3、中2、小3 )
 甲斐 甲
 ( かい こう )
 Qiita@kai_kou
 twitter@k_aik_ou
 自己紹介


Slide 3

Slide 3 text

自己紹介


Slide 4

Slide 4 text

本LTの目的
 Amazon Managed Blockchain
 の概要と使い方を紹介
 初めて聞いたけど、気になるかも
 名前は知っているけど、よく知らない
 使ってみようと考えてる


Slide 5

Slide 5 text

本LTの目的
 ブロックチェーン について
 今回は割愛します m(_ _)m
 他のLTに期待!
 \ 15分でおさまらなーい / 


Slide 6

Slide 6 text

アジェンダ
 - Amazon Managed Blockchain とは
 - ブロックチェーンフレームワーク について
 - 実際に環境構築して使ってみた


Slide 7

Slide 7 text

駆け足になるので、詳しくは
 Qiita記事みてね@kai_kou


Slide 8

Slide 8 text

Amazon Managed Blockchain とは


Slide 9

Slide 9 text

Amazon Managed Blockchain とは
 AWS re:Invent 2018 で発表された
 スケーラブル な
 ブロックチェーンネットワーク が
 作成・管理できる
 フルマネージド型 サービス
 2019/05/01 リリース!
 参考: re:Invent 2018 / Andy Jassy Keynote / Amazon Managed Blockchain | Amazon Web Services ブログ

Slide 10

Slide 10 text

Amazon Managed Blockchain とは
 ( 基本的には )
 AWSマネジメントコンソールで、
 ブロックチェーンネットワークが
 簡単に構築できる
 
 ※ネットワーク設定などは別 (後述


Slide 11

Slide 11 text

Amazon Managed Blockchain とは
 利用できるブロックチェーンフレームワーク
 Hyperledger Fabric
 ハイパーレッジャー ファブリック
 Ethereum (予定)
 イーサリアム


Slide 12

Slide 12 text

Amazon Managed Blockchain とは
 類似サービス
 Blockchain Cloud Service ( Oracle Cloud )
 Blockchain Platform ( IBM )
 Blockchain Workbench ( Azure )
 Blockchain Templates ( AWS )
 GCP ?


Slide 13

Slide 13 text

Blockchain Cloud Service
 ( Oracle Cloud )
 Blockchain Platform
 ( IBM )
 Blockchain Workbench
 ( Azure )
 Blockchain Templates
 ( AWS )
 GCP ?
 
 Amazon Managed Blockchain とは
 Hyperledger Fabric、
 Ethereum
 Hyperledger Fabric
 
 Ethereum
 
 Hyperledger Fabric
 Ethereum
 ?
 
 フルマネージド
 
 フルマネージド
 
 フルマネージド
 
 環境構築
 
 ?
 
 フレームワーク
 タイプ


Slide 14

Slide 14 text

フルマネージド
 
 フルマネージド
 
 フルマネージド
 
 環境構築
 
 ?
 
 Blockchain Cloud Service
 ( Oracle Cloud )
 Blockchain Platform
 ( IBM )
 Blockchain Workbench
 ( Azure )
 Blockchain Templates
 ( AWS )
 GCP ?
 
 Amazon Managed Blockchain とは
 Hyperledger Fabric、
 Ethereum
 Hyperledger Fabric
 
 Ethereum
 
 Hyperledger Fabric
 Ethereum
 ?
 
 フレームワーク
 タイプ
 似ているサービス


Slide 15

Slide 15 text

Blockchain Cloud Service
 ( Oracle Cloud )
 Blockchain Platform
 ( IBM )
 Blockchain Workbench
 ( Azure )
 Blockchain Templates
 ( AWS )
 GCP ?
 
 Amazon Managed Blockchain とは
 2017年10月
 
 2017年09月
 
 2018年05月
 
 2018年04月
 
 2018年07月
 
 発表
 2018年07月
 
 2017年10月
 
 Preview
 
 2018年04月
 
 ?
 
 リリース
 Managed Blockchain は 2018年11月 発表 2019年05月 リリース 


Slide 16

Slide 16 text

ブロックチェーンフレームワーク について


Slide 17

Slide 17 text

ブロックチェーンフレームワーク について
 利用できるブロックチェーンフレームワーク
 Hyperledger Fabric
 ハイパーレッジャー ファブリック
 Ethereum (予定)
 イーサリアム


Slide 18

Slide 18 text

Hyperledger Fabric とは
 ハイパーレッジャー ファブリック
 
 ブロックチェーンフレームワーク について


Slide 19

Slide 19 text

Hyperledger Fabric とは
 Hyperledger Fabric ( ハイパーレッジャー ファブリック ) は、
 Linux Foundation の Hyperledger プロジェクトで取り扱われる
 ブロックチェーンに関する OSS ( オープンソースソフトウェア ) のひとつ。
 参考: Hyperledger Fabric – Hyperledger

Slide 20

Slide 20 text

Hyperledger Fabric とは
 ブロックチェーンには大きくパブリック、プライベート、コンソーシアムの種類があ り、Hyperledger Fabricはコンソーシアムブロックチェーンで、主にエンタープライズ 向けとなります。
 他多数
 参考: Hyperledger Fabric – Hyperledger

Slide 21

Slide 21 text

管理者
 管理方法
 参加
 情報公開
 合意形成
 承認速度
 スマートコントラクト  
 利用モデル
 Hyperledger Fabric とは
 パブリック
 ブロックチェーンの種類
 プライベート
 コンソーシアム
 なし
 分散型
 自由
 制限なし
 PoW、PoSなど
 遅い
 あり / なし
 Bitcoin、Ethereum
 など
 あり(単独)
 中央集権型
 承認制
 制限可
 組織内承認
 早い
 あり
 Ethereum、mijin、miyabi など
 あり (複数)
 中央集権型
 承認制
 制限可
 特定者間のコンセンサス 
 早い 
 あり
 Hyperledger Fabric、 
 Hyperledger Swatooth Lake、 
 Hyperledger Iroha など


Slide 22

Slide 22 text

Ethereum とは
 イーサリアム
 
 Amazon Managed Blockchain で
 まだ利用できないので割愛します m(_ _)m
 \ 15分でおさまらなーい /
 ブロックチェーンフレームワーク について


Slide 23

Slide 23 text

フルマネージドサービス
 ( Amazon Managed Blockchain )
 +
 ブロックチェーンフレームワーク
 ( Hyperledger Fabric / Ethereum )
 =
 ブロックチェーンネットワーク
 ブロックチェーンフレームワーク について


Slide 24

Slide 24 text

ブロックチェーンフレームワーク を
 ( Hyperledger Fabric / Ethereum )
 知らなきゃ使えない
 ブロックチェーンフレームワーク について


Slide 25

Slide 25 text

Hyperledger Fabric を
 ハイパーレッジャー ファブリック
 もうちょっと詳しく
 ブロックチェーンフレームワーク について


Slide 26

Slide 26 text

Hyperledger Fabric をもうちょっと詳しく
 開発元のIBMさんが
 日本語でわかりやすい
 コンテンツを公開
 
 ざっくりと引用して紹介
 参考: Hyperledger Fabric 入門

Slide 27

Slide 27 text

Hyperledger Fabric をもうちょっと詳しく
 参考: Hyperledger Fabric 入門

Slide 28

Slide 28 text

Peer
 Orderer
 CA
 Hyperledger Fabric をもうちょっと詳しく
 3つの構成要素
 参考: Hyperledger Fabric 入門

Slide 29

Slide 29 text

Peer
 Hyperledger Fabric をもうちょっと詳しく
 アプリケーションとの接続
 トランザクションの検証・実行
 台帳の保有
 ブロックチェーン: Txの実行履歴 
 ステートDB: データの最新状態
 チェーンコード ( CC ) の実行
 ビジネスロジック
 プログラム言語で記述
 ステートDBへのアクセス
 参考: Hyperledger Fabric 入門

Slide 30

Slide 30 text

Orderer
 Hyperledger Fabric をもうちょっと詳しく
 トランザクションの順序付け
 順序付け後ブロックにまとめる
 ブロック送信
 該当Peerにブロードキャスト
 参考: Hyperledger Fabric 入門

Slide 31

Slide 31 text

CA ( Certificate Authority : サーティフィケイト オーソーリティー )
 Hyperledger Fabric をもうちょっと詳しく
 ユーザー、Peerの登録・管理
 MSPという仕組みを利用
 証明書 ( ECerts ) の発行・管理
 証明書がないとトランザクションが 
 実行できない
 参考: Hyperledger Fabric 入門

Slide 32

Slide 32 text

Hyperledger Fabric をもうちょっと詳しく
 参考: Hyperledger Fabric 入門

Slide 33

Slide 33 text

Hyperledger Fabric をもうちょっと詳しく
 参加組織ごとに PeerとCAを管理 Ordererは 複数組織で共有 参考: Hyperledger Fabric 入門

Slide 34

Slide 34 text

Hyperledger Fabric をもうちょっと詳しく
 チャネル
 仮想ネットワーク
 情報のプライバシーを保護
 
 参考: Hyperledger Fabric 入門

Slide 35

Slide 35 text

Hyperledger Fabric をもうちょっと詳しく
 チェーンコード ( CC )
 ビジネスロジック
 Ethereumだとスマートコントラクト 
 プログラミング言語で記述
 Go、Node,js、Javaで実装
 台帳にアクセス
 APIが提供されている
 Peerにデプロイ ( インスタンス化 ) 
 参考: Hyperledger Fabric 入門

Slide 36

Slide 36 text

Hyperledger Fabric をもうちょっと詳しく
 チェーンコード ( CC )
 参考: Hyperledger Fabric 入門

Slide 37

Slide 37 text

Hyperledger Fabric をもうちょっと詳しく
 チェーンコード ( CC )
 参考: Hyperledger Fabric 入門

Slide 38

Slide 38 text

Hyperledger Fabric をもうちょっと詳しく
 参考: Hyperledger Fabric 入門

Slide 39

Slide 39 text

Hyperledger Fabric
 ハイパーレッジャー ファブリック
 だいたいわかった
 Hyperledger Fabric をもうちょっと詳しく


Slide 40

Slide 40 text

実際に環境構築して使ってみた


Slide 41

Slide 41 text

実際に環境構築して使ってみた
 1. ネットワークとメンバー作成
 2. インターフェイスVPCエンドポイント作成
 3. Client ( EC2インスタンス ) のセットアップ
 4. 管理者をCAに登録
 5. Peerノード作成
 6. チャネル作成
 7. チェーンコードの実装とデプロイ
 構築の流れ


Slide 42

Slide 42 text

実際に環境構築して使ってみた
 1. ネットワークとメンバー作成
 2. インターフェイスVPCエンドポイント作成
 3. Client ( EC2インスタンス ) のセットアップ
 4. 管理者をCAに登録
 5. Peerノード作成
 6. チャネル作成
 7. チェーンコードの実装とデプロイ
 構築の流れ
 AWSっぽいところ


Slide 43

Slide 43 text

実際に環境構築して使ってみた
 組織 = メンバー = AWSアカウント
 参考: Hyperledger Fabric 入門 
 Key Concepts: Managed Blockchain Networks, Members, and Peer Nodes - Amazon Managed Blockchain

Slide 44

Slide 44 text

実際に環境構築して使ってみた
 1. ネットワークとメンバー作成
 2. インターフェイスVPCエンドポイント作成
 3. Client ( EC2インスタンス ) のセットアップ
 4. 管理者をCAに登録
 5. Peerノード作成
 6. チャネル作成
 7. チェーンコードの実装とデプロイ
 構築の流れ
 参考: Key Concepts: Managed Blockchain Networks, Members, and Peer Nodes - Amazon Managed Blockchain

Slide 45

Slide 45 text

実際に環境構築して使ってみた
 1. ネットワークとメンバー作成
 2. インターフェイスVPCエンドポイント作成
 3. Client ( EC2インスタンス ) のセットアップ
 4. 管理者をCAに登録
 5. Peerノード作成
 6. チャネル作成
 7. チェーンコードの実装とデプロイ
 構築の流れ
 AWSマネジメントコンソール or AWS CLI EC2インスタンスでFabric CLI or Fabric SDK ( Node.js、Java )

Slide 46

Slide 46 text

実際に環境構築して使ってみた
 コマンド実行例
 # AWS CLI コマンド $ aws managedblockchain xxxxx # Hyperledger Fabric CLI コマンド # Dockerコンテナで実行 $ docker exec cli xxxxx よく利用するコマンド


Slide 47

Slide 47 text

実際に環境構築して使ってみた
 $ aws managedblockchain create-network \ --name TestNetwork \ --description TestNetworkDescription \ --framework HYPERLEDGER_FABRIC \ --framework-version 1.2 \ --framework-configuration '{"Fabric": {"Edition": "STARTER"}}' \ --voting-policy '{ "ApprovalThresholdPolicy": { "ThresholdPercentage": 50, "ProposalDurationInHours": 24, "ThresholdComparator": "GREATER_THAN"}}' \ --member-configuration '{ "Name": "org1", "Description": "Org1 first member of network", "FrameworkConfiguration": { "Fabric": {"AdminUsername": "AdminUser", "AdminPassword": "Password123"}}}' ネットワーク作成
 コマンド実行例


Slide 48

Slide 48 text

実際に環境構築して使ってみた
 $ aws ec2 create-vpc-endpoint \ --vpc-id vpc-xxxxxxxx \ --security-group-ids sg-xxxxxxxxx \ --subnet-ids subnet-xxxxxxxx \ --service-name \ com.amazonaws.us-east-1.managedblockchain.n-XXXXXXXXXXXXX \ --vpc-endpoint-type Interface \ --private-dns-enabled インターフェイスVPCエンドポイント作成 
 コマンド実行例


Slide 49

Slide 49 text

実際に環境構築して使ってみた
 $ aws managedblockchain create-node \ --network-id n-XXXXXXXXXXXXXXX \ --member-id m-XXXXXXXXXXXXXX \ --node-configuration InstanceType=bc.t3.small,\ AvailabilityZone=us-east-1a Peerノード作成
 コマンド実行例


Slide 50

Slide 50 text

実際に環境構築して使ってみた
 $ docker exec -e "CORE_PEER_TLS_ENABLED=true" \ -e "CORE_PEER_TLS_ROOTCERT_FILE=mb.pem" \ -e "CORE_PEER_ADDRESS=$PEER" \ -e "CORE_PEER_LOCALMSPID=$MSP" \ -e "CORE_PEER_MSPCONFIGPATH=$MSP_PATH" \ cli peer channel create -c mychannel \ -f /opt/home/mychannel.pb -o $ORDERER \ --cafile mb.pem --tls チャネル作成
 コマンド実行例


Slide 51

Slide 51 text

$ docker exec -e "CORE_PEER_TLS_ENABLED=true" \ -e "CORE_PEER_TLS_ROOTCERT_FILE=/opt/home/mb.pem" \ -e "CORE_PEER_ADDRESS=$PEER" \ -e "CORE_PEER_LOCALMSPID=$MSP" \ -e "CORE_PEER_MSPCONFIGPATH=$MSP_PATH" \ cli peer chaincode invoke \ -C mychannel \ -n mycc -c '{"Args":["invoke","a","b","10"]}' \ -o $ORDERER --cafile /opt/home/mb.pem --tls 2019-04-04 01:25:39.699 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Chaincode invoke successful. result: status:200 実際に環境構築して使ってみた
 チェーンコード実行 ( Invoke )
 コマンド実行例


Slide 52

Slide 52 text

実際に環境構築して使ってみた
 チェーンコード実行 ( Query )
 コマンド実行例
 $ docker exec -e "CORE_PEER_TLS_ENABLED=true" \ -e "CORE_PEER_TLS_ROOTCERT_FILE=/opt/home/mb.pem" \ -e "CORE_PEER_ADDRESS=$PEER" \ -e "CORE_PEER_LOCALMSPID=$MSP" \ -e "CORE_PEER_MSPCONFIGPATH=$MSP_PATH" \ cli peer chaincode query \ -C mychannel \ -n mycc -c '{"Args":["query","a"]}' 100

Slide 53

Slide 53 text

詳しくは (2回目
 Qiita記事みてね@kai_kou


Slide 54

Slide 54 text

リージョン指定
 us-east-1 ( バージニア北部 ) のみ
 AWSアカウントの権限
 作成権限が必要 ( VPNエンドポイント、セキュリティグループ、 
 EC2インスタンス、Managed Blockchain ) 
 実際に環境構築して使ってみた
 構築のポイント


Slide 55

Slide 55 text

Hyperledger Fabricのバージョン
 Ver1.2 のみ利用可能 ( 最新は Ver1.4 )
 複数組織 ( メンバー ) での構成
 AWSアカウントのID ( 12桁 ) で招待・管理
 Docker利用
 Hyperledger Fabric CLI実行用のDockerコンテナ
 EC2インスタンスにパッケージインストールが必要
 実際に環境構築して使ってみた
 構築のポイント


Slide 56

Slide 56 text

実際に環境構築して使ってみた
 Managed Blockchain で管理 Managed Blockchain
 とは別に開発・構築・運用


Slide 57

Slide 57 text

実際に環境構築して使ってみた


Slide 58

Slide 58 text

実際に環境構築して使ってみた


Slide 59

Slide 59 text

実際に環境構築して使ってみた


Slide 60

Slide 60 text

- Managed Blockchainでインフラを意識せずに
 ブロックチェーンネットワーク構築と運用ができそう
 - 後発サービスとなるので
 他サービスの比較・検討してもよいかも
 - ブロックチェーンの種類・フレームワークを知り
 用途に応じた選択が必要っぽい
 まとめ


Slide 61

Slide 61 text

- re:Invent 2018 / Andy Jassy Keynote / Amazon Managed Blockchain | Amazon Web Services ブログ 
 https://aws.amazon.com/jp/blogs/news/reinvent-2018-andy-jassy-keynote-amazon-managed-blockchain/ 
 - Hyperledger Fabric – Hyperledger 
 https://www.hyperledger.org/projects/fabric 
 - Hyperledger Fabric 入門, 第 1 回: 基本的な構成 
 https://www.ibm.com/developerworks/jp/cloud/library/cl-hyperledger-fabric-basic-1/index.html 
 - Key Concepts: Managed Blockchain Networks, Members, and Peer Nodes - Amazon Managed Blockchain 
 https://docs.aws.amazon.com/managed-blockchain/latest/managementguide/network-components.html 
 - Blockchain Cloud Service | Oracle 日本 
 https://www.oracle.com/jp/cloud/blockchain/ 
 - Blockchain Platform - 概要 - 日本 | IBM 
 https://www.ibm.com/jp-ja/cloud/blockchain-platform 
 - ブロックチェーン テクノロジとアプリケーション | Microsoft Azure 
 https://azure.microsoft.com/ja-jp/solutions/blockchain/ 
 - Building a better cloud with our partners at Next ‘18 
 https://www.blog.google/products/google-cloud/building-a-better-cloud-with-our-partners-at-next-18/ 
 - Amazon Managed BlockchainがリリースされたのでHyperledger Fabricも合わせて情報をまとめてみた - Qiita 
 https://qiita.com/kai_kou/items/5a968f42c5f96296f6fe 
 - Amazon Managed BlockchainでHyperledger Fabricのブロックチェーンネットワークを構築してみた - Qiita 
 https://qiita.com/kai_kou/items/e02e34dd9abb26219a7e 
 参考


Slide 62

Slide 62 text

ありがとうございました!