Amazon Managed BlockchainがリリースされたのでHyperledger Fabricも合わせて情報をまとめてみた

AWS re:Invent 2018で発表されたブロックチェーンネットワークを簡単に構築・管理できる「Amazon Managed Blockchain」ですが、しばらくPreviewとして利用可能だったのが2019/05/01に正式リリースされました。(まってた！)

AWSのマネージドブロックチェーンサービスが一般に公開 | TechCrunch Japan
https://jp.techcrunch.com/2019/05/01/2019-04-30-aws-opens-up-its-managed-blockchain-as-a-service-to-everybody/

「Amazon Managed Blockchain」一般提供へ｜独自ブロックチェーンを簡単に構築 | 仮想通貨ニュースメディア ビットタイムズ
https://bittimes.net/news/54962.html

New – Amazon Managed Blockchain – Create & Manage Scalable Blockchain Networks | AWS News Blog
https://aws.amazon.com/jp/blogs/aws/new-amazon-managed-blockchain-create-manage-scalable-blockchain-networks/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+AmazonWebServicesBlog+%28Amazon+Web+Services+Blog%29

そもそも「Amazon Managed Blockchain」がどういったサービスで何ができるのか、よくわかっていなかったので調べて情報をまとめてみました。


## ざっくり知りたい方は

こちらをご参考ください。
Amazon Managed Blockchain を使ってみた / tried using Amazon Managed Blockchain - Speaker Deck
https://speakerdeck.com/kaikou/tried-using-amazon-managed-blockchain


## Amazon Managed Blockchainとは

スケーラブルなブロックチェーンネットワークを構築・運用するのに、インフラ面は気にしなくて良いよーってサービスです。利用できるブロックチェーンフレームワークはHyperledger FabricとEthereumとなっています。
※Ethereumは現時点(2019/05/07)ではまだ利用できません。

Amazon Managed Blockchain
https://aws.amazon.com/jp/managed-blockchain/

>Amazon Managed Blockchain はフルマネージド型のサービスで、一般的なオープンソースフレームワークである Hyperledger Fabric や Ethereum* を使用して、スケーラブルなブロックチェーンネットワークを簡単に作成し管理できます。


### Amazon Managed Blockchain以外のサービス

Amazon Managed Blockchainと同じようなサービスをまとめてみました。(2019/05/07時点)
基本的にはHyperledger Fabricが採用されており、Oracle CloudとIBMのサービスがAmazon Managed Blockchainと同じフルマネージド型のサービスとなっています。
発表・リリース時期を調べてみたところ、Oracle CloudとIBMのサービスが2017年発表・リリースされており、Amazon Managed Blockchainは後発となります。

|サービス|フルマネージド|フレームワーク|
|---|:---:|---|
|Amazon Managed Blockchain<br>|○|Hyperledger Fabric、<br>Ethereum(提供予定)|
|Blockchain Cloud Service<br>(Oracle Cloud)|○|Hyperledger Fabric|
|Blockchain Platform<br>(IBM)|○|Hyperledger Fabric|
|AWS Blockchain Templates|△|Hyperledger Fabric、<br>Ethereum|
|Azure Blockchain Workbench<br>(Preview)|~~△~~○|Ethereum|
|GCP (提供まだ)|？|Hyperledger Fabric(？)、<br>Ethereum(？)|


#### AWS Blockchain Templates

AWS Blockchain TemplatesはAWS CloudFormationを利用してブロックチェーンネットワークが構築できるサービスとのこと。Amazon Managed Blockchainと違い、フルマネージドではないので、AWSのリソースは自前で管理する必要があります。

AWS Blockchain Templates とは - AWS Blockchain Templates
https://docs.aws.amazon.com/ja_jp/blockchain-templates/latest/developerguide/what-are-blockchain-templates.html

>AWS Blockchain Templates を使用すると、さまざまなブロックチェーンフレームワークを使用して AWS 上でブロックチェーンネットワークを迅速に作成してデプロイできます。


#### Blockchain Cloud Service(Oracle Cloud)

Blockchain Cloud Service | Oracle 日本
https://www.oracle.com/jp/cloud/blockchain/

>オラクルは、より簡単にブロックチェーンを採用して、業界でもっとも包括的なエンタープライズ・グレードの自律型ブロックチェーン・クラウド・サービスによって企業を変革する方法を提供します。Oracle Blockchain Cloud Serviceを使用すれば、ビジネス・プロセスやアプリケーションをセキュアに拡張しながら、ビジネス・トランザクションの処理を格段に迅速化することが可能です。

Oracle Blockchain Cloud Service 触ってみた（Dataspiderとの連携もちょっと紹介） - Qiita
https://qiita.com/Yosuke_Sakaue/items/159d86fb5022426d4bce

ブラウザ上でチェーンコードの管理ができて良さそうです。


#### Blockchain Platform(IBM)

Blockchain Platform - 概要 - 日本 | IBM
https://www.ibm.com/jp-ja/cloud/blockchain-platform

>複数の組織からなるビジネス・ネットワークの開発、ガバナンス、運用をスピードアップするために設計された、企業向けブロックチェーン・プラットフォームです。

IBM Blockchain Platform の概説
https://cloud.ibm.com/docs/services/blockchain?topic=blockchain-get-started-ibp&locale=ja#get-started-ibp

>IBM® Blockchain Platform には、任意の環境にブロックチェーン・コンポーネントをデプロイできる、フルスタックのマネージド Blockchain as a Service (BaaS) オファリングが用意されています。 IBM Cloud 環境にも、IBM Cloud Private 経由でオンプレミス環境にも、サード・パーティーのクラウド (Amazon Web Services (AWS) など) 環境にもデプロイできます。


#### Azure Blockchain Workbench(Preview)

~~AWS Blockchain Templatesと似たような印象です。~~

Azure Blockchain Workbench | Microsoft Azure
https://azure.microsoft.com/ja-jp/features/blockchain-workbench/

>Azure Blockchain Workbench では、わずか数回のクリックでコンソーシアム ネットワークを構成、デプロイできます。Workbench の自動台帳デプロイ、ネットワーク構築、既成のブロックチェーン コマンドは、開発/テストでの調査に最適であり、インフラストラクチャの開発時間が大幅に短縮されます。

Azure Blockchain Workbench を展開する | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/blockchain/workbench/deploy

>Azure Blockchain Workbench は、Azure Marketplace のソリューション テンプレートを使って展開されます。 テンプレートを使うと、ブロックチェーン アプリケーションの作成に必要なコンポーネントを簡単に展開できます。 展開が済むと、Blockchain Workbench を使ってクライアント アプリにアクセスし、ユーザーとブロックチェーン アプリケーションを作成および管理できます。

##### 追記 2019/05/09

こちらの記事をみると、フルマネージドなサービスでした。
ブラウザ上でスマートコントラクトが管理できるみたいです。

Azure Blockchain WorkbenchでHello Blockchain! - Qiita
https://qiita.com/shingo_kawahara/items/6acceac42ec2701bf336


#### GCP

ブロックチェーン関連のサービスを提供するとブログ記事内で発表されましたが、まだ動きはなさそうです。(2019/05/07時点)

グーグル、クラウドプラットフォームに分散型台帳ソリューションを提供 | Cointelegraph
https://jp.cointelegraph.com/news/google-to-offer-distributed-ledger-solutions-in-cloud-platform-marketplace

>　またグーグルは、今年末にGCPマーケットプレイスでハイパーレジャーファブリック（Hyperledger Fabric）とイーサリアムプロトコルのオープンソース統合をテストできるようにすると書いている。

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/

>New DLT solutions. Customers can now explore ways they might use distributed ledger technology (DLT) frameworks on GCP with launch partners including Digital Asset and BlockApps, and try open-source integrations for Hyperledger Fabric and Ethereum later this year in our GCP Marketplace. Learn more at Next ’18 at our DLT Partnerships session.


## Hyperledger Fabricとは

利用できるブロックチェーンフレームワークとしてHyperledger FabricとEthereumがありますが、Hyperledger Fabricについて知らなかったので調べてみました。Ethereumについてはまだ利用できないため(2019/05/07時点)利用できるようになったらしっかりと調べたいと思います。

Hyperledger Fabric(ハイパーレッジャー ファブリック)とは、ブロックチェーン(分散型台帳技術)に関するOSS(オープンソースソフトウェア)で、Linux OSおよび周辺技術の保護や標準化などを行う非営利組織「Linux Foundation」のプロジェクト「Hyperledger」で取り扱われています。IBMさんが開発していたものがOSS化されたみたいです。
Hyperledgerプロジェクトにはグローバル企業だけでなく、日本の大手ITベンダーも参加しており、Hyperledger Fabricはエンタープライズ向けとしての利用が想定されているようです。

下記が参考になります。

日本企業も注目する「Hyperledger Fabric」とは何か (1/4) - キーマンズネット
https://www.keyman.or.jp/kn/articles/1704/25/news158.html


### Hyperledger Fabricの特徴

Hyperledger Fabricはパーミッション型のプライベート(コンソーシアム)ブロックチェーンとなっており、ビットコインのようなパブリックブロックチェーンと違って、仮想通貨(暗号資産)の送金機能を持たず、台帳管理に徹した実装となっています。

ブロックチェーンの種類については下記が参考になります。

ブロックチェーンは大きく分けて3種類あるパブリック、プライベート、コンソーシアムそれぞれの違いと特徴 | BlockchainGame News
https://news.blockchaingame.jp/130

複数の管理主体により共同で運用されるブロックチェーン「コンソーシアムチェーン」
https://gaiax-blockchain.com/consortium-chain


ブロックチェーンの種類ごとの特徴をざっくりとまとめてみました。

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


### Hyperledger Fabricの仕組み

Amazon Managed BlockchainでHyperledger Fabricネットワークを構築するにはHyperledger Fabricの仕組みを把握している必要があります。

Hyperledger Fabricの開発元であるIBMさんがわかりやすいドキュメントを用意してくれているのでそちらが参考になります。全6回のシリーズになっており、ひととおり読むとHyperledger Fabricについて大まかに把握できます。

Hyperledger Fabric 入門, 第 1 回: 基本的な構成
https://www.ibm.com/developerworks/jp/cloud/library/cl-hyperledger-fabric-basic-1/index.html

Amazon Managed BlockchainでHyperledger Fabricネットワークを構築するのに大事そうな点をドキュメントからピックアップします。

#### 基本的な構成要素

Hyperledger Fabricは主にPeer、Orderer、CA(Certificate Authority/サーティフィケイト オーソーリティー)の3種類の要素で構成されています。

Hyperledger Fabric 入門, 第 1 回: 基本的な構成
https://www.ibm.com/developerworks/jp/cloud/library/cl-hyperledger-fabric-basic-1/index.html

##### Peer

- トランザクションの検証や実行
- ブロックへの書き込み
- ブロックチェーンネットワーク内の各Peerが同じ内容の台帳とチェーンコードを保有
  - 台帳はブロックチェーンとステートDBで構成される
    - ブロックチェーン: チェーンコードの実行履歴
    - ステートDB: トランザクション実行の最新の結果
  - チェーンコードはビジネス上の条件や契約をビジネスロジックとして実装したプログラム
- 2種類のPeerがある
  - Endorsement(エンドースメント) Peer: トランザクションの検証を行う
  - Committing Peer: ブロック(台帳)への書き込みを行う


##### Orderer

- トランザクションを順序付けしてネットワーク内のPeerにチャネル単位でブロードキャストする
  - トランザクションは順序付け後、ブロックにまとめられてPeerに送信される


##### CA

- ブロックチェーンネットワーク内のユーザとPeerの情報登録
  - 情報はMSP(Membership Service Provider)という仕組みで管理される
- 証明書(ECerts)の発行・管理
  - CAで発行された証明書を利用して署名したトランザクションのみ実行できる

トランザクションの流れはドキュメントにある下記の図がわかりやすいです。
<img width="1193" alt="" src="https://www.ibm.com/developerworks/jp/cloud/library/cl-hyperledger-fabric-basic-2/fig1.png">


#### クライアントとHyperledger Fabricの接続

ブロックチェーンネットワークの台帳の更新や参照を行うのにSDKが提供されており、それでクライアントとHyperledger Fabric間の通信を行います。

Hyperledger Fabric 入門, 第 2 回: Peer/チャネル/Endorsement Policy の解説
https://www.ibm.com/developerworks/jp/cloud/library/cl-hyperledger-fabric-basic-2/index.html


通信の流れについては下記の図が参考になります。
<img width="1193" alt="" src="https://www.ibm.com/developerworks/jp/cloud/library/cl-hyperledger-fabric-basic-2/fig2.png">


#### チャネルで台帳の共有範囲を制御

チャネルはブロックチェーンネットワーク内に作られた仮想ネットワークで、ネットワーク内の特定の参加者間だけで、台帳の共有や接続できるクライアントアプリケーションを制御できます。

Peerは複数のチャネルに参加でき、複数チャネルに参加すると同じ数の台帳を持つことになります。

下記の図がチャネル構成を理解するのにわかりやすいです。
<img width="1193" alt="" src="https://www.ibm.com/developerworks/jp/cloud/library/cl-hyperledger-fabric-basic-2/fig3.png">


## まとめ

Amazon Managed Blockchainについて調べてみましたが、自前でブロックチェーンネットワークを構築するのに比べて、謳い文句どおりインフラ面を意識せずに済みそうな印象です。
ただし、ブロックチェーンネットワークが構築できても、ブロックチェーンフレームワークについて知っておかないと活用できなさそうな感じでした。先発するOracle CloudやIBMのサービスだとネットワークを管理する機能が充実してそうな印象でしたので、今後の機能充実に期待です。


## 参考

Amazon Managed Blockchain
https://aws.amazon.com/jp/managed-blockchain/

AWS におけるブロックチェーン
https://aws.amazon.com/jp/blockchain/

AWSのマネージドブロックチェーンサービスが一般に公開 | TechCrunch Japan
https://jp.techcrunch.com/2019/05/01/2019-04-30-aws-opens-up-its-managed-blockchain-as-a-service-to-everybody/

「Amazon Managed Blockchain」一般提供へ｜独自ブロックチェーンを簡単に構築 | 仮想通貨ニュースメディア ビットタイムズ
https://bittimes.net/news/54962.html

New – Amazon Managed Blockchain – Create & Manage Scalable Blockchain Networks | AWS News Blog
https://aws.amazon.com/jp/blogs/aws/new-amazon-managed-blockchain-create-manage-scalable-blockchain-networks/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+AmazonWebServicesBlog+%28Amazon+Web+Services+Blog%29

AWS Blockchain Templates とは - AWS Blockchain Templates
https://docs.aws.amazon.com/ja_jp/blockchain-templates/latest/developerguide/what-are-blockchain-templates.html

Blockchain Cloud Service | Oracle 日本
https://www.oracle.com/jp/cloud/blockchain/

Blockchain Platform - 概要 - 日本 | IBM
https://www.ibm.com/jp-ja/cloud/blockchain-platform

IBM Blockchain Platform の概説
https://cloud.ibm.com/docs/services/blockchain?topic=blockchain-get-started-ibp&locale=ja#get-started-ibp

Azure Blockchain Workbench | Microsoft Azure
https://azure.microsoft.com/ja-jp/features/blockchain-workbench/

Azure Blockchain Workbench を展開する | Microsoft Docs
https://docs.microsoft.com/ja-jp/azure/blockchain/workbench/deploy

グーグル、クラウドプラットフォームに分散型台帳ソリューションを提供 | Cointelegraph
https://jp.cointelegraph.com/news/google-to-offer-distributed-ledger-solutions-in-cloud-platform-marketplace

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/

日本企業も注目する「Hyperledger Fabric」とは何か (1/4) - キーマンズネット
https://www.keyman.or.jp/kn/articles/1704/25/news158.html

ブロックチェーンは大きく分けて3種類あるパブリック、プライベート、コンソーシアムそれぞれの違いと特徴 | BlockchainGame News
https://news.blockchaingame.jp/130

複数の管理主体により共同で運用されるブロックチェーン「コンソーシアムチェーン」
https://gaiax-blockchain.com/consortium-chain

Hyperledger Fabric 入門, 第 1 回: 基本的な構成
https://www.ibm.com/developerworks/jp/cloud/library/cl-hyperledger-fabric-basic-1/index.html

Hyperledger Fabric 入門, 第 2 回: Peer/チャネル/Endorsement Policy の解説
https://www.ibm.com/developerworks/jp/cloud/library/cl-hyperledger-fabric-basic-2/index.html

Oracle Blockchain Cloud Service 触ってみた（Dataspiderとの連携もちょっと紹介） - Qiita
https://qiita.com/Yosuke_Sakaue/items/159d86fb5022426d4bce

Azure Blockchain WorkbenchでHello Blockchain! - Qiita
https://qiita.com/shingo_kawahara/items/6acceac42ec2701bf336