Edited at

Azure Blockchain WorkbenchでDApps開発入門

この記事は,Microsoft Azure Advent Calendar 2018,15日目のエントリーです.


この記事はこんな人向け


  • Blockchain on Azureの現状を簡単に把握したい。

  • ブロックチェーンまだよくわからないけど、アプリ開発には興味がある。

  • コンソーシアム型DApps開発したい。


Blockchain Workbenchとは?

分散型アプリケーション(DApps)に必要なAzureリソース一括作成・管理できるテンプレートの1つです。(公式ドキュメント)

もろもろの設定をして、デプロイボタンを押すだけで、以下のようなリソースが一括で作成されます。

ノードとして、Ethereum PoAがサポートされていて、Hyperledger FabricCordaが今後サポート予定です。



(公式ドキュメントより引用)

初期設定で作成される主要なコンポーネントは以下の通りです。


  • VM スケールセット(ブロックチェーンノードおよび各種同期用)

  • Web AppおよびWebAPI

  • SQL Database (オフチェーンデータベース)

  • Event Grid(トランザクションFIFOキュー)

  • Key Vault(秘密鍵管理)


Workbenchを利用するメリット

1. 開発期間の短縮

必要なコンポーネントが設定済みでデプロイできるので、開発期間が大幅に短縮できます。

2. 好きな言語・フレームワークでアプリ開発可能

Swagger準拠のREST APIが作成されるので、自分の好きな言語・フレームワークでアプリ開発できます。

3. Microsoftによるアップデートスクリプトの提供

ブロックチェーンはまだまだ発展途上の技術で、頻繁に開発されています。一度デプロイしたブロックチェーンノードを最新のバージョンにアップデートするのは手間がかかります。Workbenchでは、Microsoftからアップデートスクリプトが提供されており、最新版に比較的簡単に追従することができます。


Workbenchを利用する時に考慮すべき点

1. Azure ADの利用が必須

組織単位での利用が前提になっているので、Azure ADが必須になっています。

なので、初期設定やローカルでのデバッグが少々煩雑になります。ローカルでデバッグする時は、Postmanを使用したりNode.jsのサンプルを使用したりしてtokenを取得してAPIを叩く必要があります。

2. 秘密鍵はKey Vaultで一元管理

DApps開発の悩みどころの一つが "秘密鍵をどう管理するか?"だと思います。現状、秘密鍵を各ユーザーに管理してもらうというのは、現実的ではない気がします。 Workbenchでは、Key Vaultで一元管理します。Key VaultにはWeb API経由でアクセスするので、ローカルやアプリでトランザクションに署名することはできません。


開発者ツール

ブロックチェーンと既存のツール・アプリとの橋渡しを容易にする開発者ツールが提供されています。

これを利用することで、例えば、以下のようなことが可能です。

* トランザクションをSMSで通知する

* IoTデバイスと連携する

* スマートコントラクト開発でCI/CDする

* Excelに取引データを出力する

今ある資産とブロックチェーンを組み合わせたハイブリットなアプリ開発が可能になります。toB向けのサービスを開発する上で、とても便利です。

ブロックチェーン使ってExcel出力とかギャグみたいだろ?要件に入ってくるんだなこれが。


Tips

ノードサイズはF1

ベンチマークツールの測定結果によると、F1がコスパのいい選択肢になりそうです。

スマートコントラクトサンプル集

GitHubにworkbenchのスマートコントラクトのサンプルがあります。ステートの遷移図などもあり、わかりやすいです。


情報源

公式ドキュメント

公式ブログ

channel9

GitHub

公式twitter