【レポート】Deep Dive Amazon Managed Blockchain #AWSSummit
こんにちは HIRANO@おんせん県おおいた です。
いよいよ、AWS Summit Online Japan始まりましたね。
今回はAmazon Managed Blockchainについて、アーキテクチャの詳細や、構成例を紹介したセッションを聞きましたので、レポートします。
セッション概要
アマゾン ウェブ サービス ジャパン株式会社 技術統括本部 ソリューションアーキテクト 中武 優樹
Amazon Managed Blockchain の機能、API、Hyperledger Fabric SDK、および新しいメンバーを追加してファブリックチャネルに参加する方法について詳しく説明します。Amazon Managed Blockchain を利用している事例や、実際にアプリケーションへ組み込む際のアーキテクチャについても解説します。
動画と資料
セッションの動画と資料はこちら
レポート
スピーカー: AWSJ 中武優樹さん
セッションの対象者
- Amazon Managed Blockchain を利用している/利用を検討している
- Amazon Managed Blockchain を活用したアーキテクチャを探している
- ブローックチェーンとは?はこちら(BlackBelt資料)を参照してください
Amazon Managed Blockchainとは
- ブロックチェーンの課題
- 設定が複雑
- スケールするのが難しい
- 管理が複雑
- コスト
- Amazon Managed Blockchainとは
- 複雑な設定や運用から解放
- 一般的なオープンソースフレームワークであるHyperledger FabricとEthereumを使用可能
- スケーラブルなブロックチェンネットワークを簡単に作成/管理できるフルマネージドサービス
- Amazon Managed Blockchainの特徴
- Fully managed
- ブロックチェーンネットワークを数分で作成可能
- Open-source 対応
- 2つのフレームワークをサポート(※Ethereumは準備中)
- Decentralized
- 民主的にネットワークを管理
- 信頼性と拡張性
- バックエンドにAmazon QLDBを使用
- Low cost
- 利用された分のみの支払い
- Integrated
- 様々なAWSサービスとインテグレーション
- Fully managed
- Amazon Managed Blockchainの構築フロー
- ネットワークを作成
- ブロックチェーンフレームワークを選択、クリックするだけで、ブロックチェーンネットワークとAWSアカウントのメンバーシップを設定することができる。
- メンバーの招待
- 他のAWSアカウントを招待してネットワークに参加させることができる
- ノードの追加
- 分散台帳のコピーを格納するブロックチェーンピアノードを作成および構成
- ネットワークを作成
- Amazon Managed Blockchain アーキテクチャ
- 主要コンポーネントをマネージドサービスで提供
- PrivateLink経由でセキュアにアクセス可能
Hyperledger Fabric on Amazon Managed Blockchain
- Hyperledger Fabric 主要コンポーネント
- Ordering Service
- トランザクションの配信と順序づけを行う
- Certificate Authority
- Hyperledger Fabric用のCAを用意、証明書の発行や失効の管理を行う
- Peer Node
- 実際の台帳データベースのコピーを保存する
- Ordering Service
- Hyperledger Fabricのトランザクションフロー
- クライアントがCAから証明書を取得する
- クライアントが証明書で署名し、トランザクションを発行、Peerに送付
- PeerがChaincodeを仮実行してValidationを行う
- Peerが署名して仮実行結果をクライアントに返す
- クライアントが結果をOrdering Serviceにトランザクションを送付
- Ordering Serviceが受け取ったトランザクションを順序づけを定義
- Ordering Serviceが各Peerに1ブロック分のトランザクションをブロードキャスト
- 各Peerは受け取ったブロックを検証し、台帳に書き込む
- Chaincodeの基本
- Hyperledger Fabricで実行するChaincodeは3つの言語をサポート(Go,Node.js,Java)
- Chaincodeを書く際には、3つの関数が必要(Init(),Invoke(),Query())
- Channelsによるアクセスコントロール
- ブロックチェーンネットワークを分割し、データの共有範囲を限定することが可能
- 例えば、(全員ではなく)特定のステークホルダーにのみデータを共有する、ということができる
- チャンネルというグループ化のしくみで、ネットワーク内の特定のメンバー間でトランザクションを分離
- Endorsementポリシー
- ブロックチェーンの肝となる第三者認証を提供
- 台帳に反映する際、どういうEndorsementを集める必要があるかを決める条件
Amazon Managed Blockchain Architecture Pattern
- ブロックチェーンネットワークを誰が持つのか
- ピアノードを誰が持つのか(例:サプライチェーン)
- 各社でピアノードを持つ
- 例:各卸業者、ステークホルダーごとに分散台帳のコピー(Peer)を持つ
- 共同でピアノードを持つ
- 例:コンソーシアムのグループ、組合ごとに分散台帳のコピー(Peer)を持つ
- ピアノードは持たない
- 例:各事業者は分散台帳のコピー(Peer)を持たない。提供されるサービスのみを利用。
- 各社でピアノードを持つ
- アーキテクチャの構造に影響する。最初に仕様として決める必要がある。
- ビジネススキームを含めて検討が必要。
- ピアノードを誰が持つのか(例:サプライチェーン)
- どういうアーキテクチャにするべきか
- アプリケーションサーバー
- 仮想サーバーやサーバレスにするのか
- ある程度足回りからカスタマイズして運用していくのか
- サーバーの運用負荷を縮小していきたいのか
- 認証に関わるコンテンツをオフロード
- トランザクションの合意形成に、秘密鍵を使用した署名を行う
- 秘密鍵をセキュアな環境で保護する必要がある
- AWSマネージドサービスを利用し、運用負荷や責任範囲を小さくすることが必要
- アプリケーションサーバー
- 例: Serverless+Blockchain
- API GatewayでREST APIを提供する例
- VPCエンドポイントを介してAmazon Managed Blockchainに接続
- 認証情報の保管にAWS Secrets Managerを利用
- Full Serverlessで構成、運用負荷・責任範囲を小さくできる
- イベントの活用
- Hyperledger Fabricではイベントベースで後続のパイプラインに処理を流すことが可能
- トランザクションが台帳にコミットされるタイミング、Chaincodeが実行されるタイミングなどで後続の処理を実行可能
- 利用シーン
- ブロックチェーン単位での分析は、KVSという特性上、難しい
- イベントリスナーから、トランザクションごとに、分析用途ののデータストアに流す
- 例: Blockchain events listener
- イベントリスナーをAWS FargateのTaskとしてデプロイ
- VPCエンドポイントを介してAmazon Managed Blockchainに接続
- 認証情報の保管にAWS Secrets Managerを利用
- AWS FargateからAmazon Kinesis Data Firehoseにデータを流す
- AWS Lambdaでデータの変換ができる
- S3でバックアップ可能
- OLAP用途として、Amazon Redshift / Amazon Elasticsearch Serviceが利用可能
- S3経由で、分析、機械学習などのパイプラインにデータを流すことも可能
まとめ
- まとめ
- ブロックチェーンのピアを誰が持つのかを最初に検討する必要がある
- イベントリスナーを利用して、データの活用シーンをひろげることを推奨
- ハンズオン
- イベントリスナーの詳細についてはこちらを
- Blockchain@Loft
- AWS Loft Tokyoにて各月でMeetupを開催しているBlockchainコミュニティ
- Tech回、Biz回を交互に開催し、幅広く情報交換を行う
感想
AMBが採用しているHyperledger Fabricのトランザクションフローがわかりやすく紹介されていました! また、AMBのArchitecture PatternもAWSならではの構成で参考になりました。
Blockchainは仮想通貨だけの世界ではありません。様々なビジネスへ応用できる可能性を持っています。 是非活用していきましょう!