Azure Blockchain Workbenchの設定方法を解説する!

Azure Blockchain Workbenchの設定方法を解説する!

Azure Blockchain Workbenchとは?

Microsoftが提供するクラウドサービス「Azure」上で、ブロックチェーンを簡単に構築できるサービスになります。詳しい内容や導入メリット等は以下を参考にしてください。

詳細情報:Microsoftのブロックチェーンクラウドサービス「Azure Blockchain Workbench」と利用例

※本記事のキャプチャは執筆時点(2019/4)に撮影したもので、現在はUIが変わっている可能性がございます。恐縮ではございますが、ご了承ください。

今回行う内容について

Azure Blockchain Workbenchを利用し、以下の流れに沿って簡単にブロックチェーン間環境を作ってみます。

  • Azure Active Directory(Azure AD)セットアップ
  • Azure Blockchain Workbenchの作成
  • スマートコントラクトを作成
  • テスト

Azure Active Directory のセットアップ

※Azure ADについての概要は以下の記事を参考にしてください。

詳細情報:概要をわかりたい人のためのAzure Active Directory(Azure AD)の基本

Azure Blockchain Workbenchを含む多くのAzureサービスでは、アカウント管理のためのAzure Active Directory (Azure AD)の設定が必要になります。

ここでは、以下の流れで作業を行います。
①Azure ADのテナントを作成
➁アプリ登録の作成
③グループ作成とユーザー・アプリの関連付け

①Azure ADのテナントを作成

▼まずは、Azure Portalへログインします。Microsoftアカウントがある方は、そのままサインインしましょう。ない場合は作成します。

参考:Azure Portal 画面

▼Azure Portalのトップ画面から、左側のメニュー最上部にあるリソースの作成 > ID > Azure Active Directoryの順でクリックし、ディレクトリ作成の画面に遷移します。

▼ディレクトリの作成を行います。組織名とドメイン名を入力し、リージョンは「日本」を選択します。新しいディレクトリを作成するのに少し時間がかかります。

②アプリ登録の作成

▼次にAzure ADにアプリの登録の作成を行います。Azure Active Directory > アプリの登録 > 新しいアプリケーションの登録から、登録が行えます。

▼アプリの登録画面から、まずは作成を行います。以下の形で入力後、下部の「作成」ボタンを押します。

  • 名前:任意の名前
  • アプリケーションの種類:Web アプリ/API
  • サインオン URL: http://localhost/

▼Azure ADのアプリの登録画面に戻り、先ほど作成したアプリを選択します。
もし先ほど作成したアプリが表示されない場合は、下の図のように「アプリケーションをすべて表示」を押して表示させてください。

すると先ほど作成したアプリが表示されるはずです。

▼アプリを選択すると下のような画面が表示されます。
設定 > キー の順番にクリックしてキーの設定からパスワードを作成します。

▼下記のように記入し「保存」ボタンを押します。保存ボタンを押した後は、ページ遷移しないように注意してください。
説明:Client Secret
有効期限:期限なし
値:何も入力しない

▼新しくできたパスワードを保存します。パスワードが表示されるタイミングはここだけですので、「値」の欄に表示されたパスワードを必ず保存してください。

▼Azure ADのアプリの登録画面に戻り「マニフェスト」をクリックするとエディター画面が開きます。

▼開いたエディター画面で、”appRoles”の定義を探します。

▼appRolesの定義を下記のJSONに書き換えます。”id”の箇所はGUIDと入っていますが、次の項目でGUIDの値を取得し書き換えていきます。

▼ GUIDとはプログラムを一意に特定するためのIDで、他のプログラムと重複を避ける必要があります。こちらのサイトから、GUIDを取得できます。「GUID生成実行」ボタンからGUIDを取得し、値をコピーしてください。
そのほかにおAzure Cloud Shell 内で PowerShellから値を取得することも可能です。いろいろな方法があるので、好きな形で取得してください。

▼上記のJSONの内容に、取得してきたGUIDをidの値に書き込み、appRolesの内容を編集します。「保存」ボタンを押して、書き換えた内容を保存してください。
最終的には、エディターの内容は以下のような形になります。
黄色線の内部が、書き換えたJSONで、赤線部が取得してきたGUIDになります。

▼ 再び、Azure ADのアプリの登録画面に戻り、 設定 > 必要なアクセス許可 の順にクリックします。

▼必要なアクセス許可の画面上部の「追加」ボタンを押します。

▼APIアクセス追加をクリックし、APIの選択で「Microsoft Graph」を選び、下部の「選択」ボタンを押します。

▼アクセス許可の選択では、「Read all users’ full profiles」にチェックマークを入れ、下部の「選択」ボタンを押します。次に、APIアクセスの追加の下部にある「完了」ボタンを押し、必要な権限を追加します。

▼今度は、 必要なアクセス許可の画面上部の「アクセス許可の付与」ボタンを押します 。

▼以下のような画面が出たら「はい」を押してください。アプリケーションのアクセス許可が付与されます。

③グループ作成とユーザー・アプリ登録の関連付け

▼今度は、Azure ADのグループを選択します。

▼新しいグループの作成を行います。

▼以下の項目を入力し、下部の「作成」ボタンを押します。

  • グループの種類:セキュリティ
  • グループ名:Administrator
  • メンバーシップの種類:割り当て済み

▼次に、作成したグループに管理者ユーザーを追加します。Azure ADのユーザーを選択しましょう。

▼すべてのユーザーから、ログインしている自分のアカウントを選択します。

▼左側のグループを選択し、追加ボタンを押します。

▼先ほど作成したAdministratorをクリックし、下部の「選択」ボタンを押します。これで、グループとユーザーの関連付けが完了します。

▼次に作成したアプリケーションとグループの関連付けを行います。エンタープライズアプリケーションをクリックし、作成したアプリケーションを表示させます。

▼作成したアプリケーションをクリックし、詳細を開きます。

▼アプリケーションにユーザーを追加します。左のユーザーとグループをクリックし、ユーザーの追加を押します。
デフォルトで割り当てられているユーザーがいるかもしれませんが、先ほど作成したAdministratorを関連付けてみましょう。

▼現在Azure Portalにログインしているユーザーをクリックし、下部の「選択」ボタンを押します。

▼ロールの選択で、Administratorが選択されているのを確認し、下部の「割当」ボタンを押します。

Azure Blockchain Workbenchの作成

ここからAzure Blockchain Workbenchの作成を行っていきます。

ここでは、以下の流れで作業を行います。
①前準備
②Azure Blockchain Workbenchの作成
③Webクライアント応答URLの設定

①前準備

▼サブスクリプションの登録

Azure Blockchain Workbenchの利用には、サブスクリプションの登録が必要になります。初めての方は無料アカウントが作成できますので、無料で試してみましょう。

ディレクトリとサブスクリプションの関係については、個人的には以下の記事がわかりやすかったです。

参考(外部ブログ):
Azure AD “ディレクトリ” と “サブスクリプション” の関係性

▼Azure ADのドメインをコピー

Azure Blockchain Workbenchで、Azure ADのドメインが必要になりますので、以下の場所( Azure Active Directory > 概要 )から、xxxxxxxx.onmicrosft.com の部分をコピーしておきます。

▼アプリケーションIDをコピー

先ほどのドメインと同様に、以下の場所(Azure Active Directory > アプリの登録)から、アプリケーションIDをコピーしておきます。

②Azure Blockchain Workbenchの作成

▼いよいよAzure Blockchain Workbenchの作成を行っていきます。
Azure Portalのトップ画面から、左側のメニュー最上部にある
リソースの作成 > ブロックチェーン > Azure Blockchain Workbench の順でクリックし、作成の画面に遷移します。

▼STEP1:基本設定の構成を入力していきます。下記を参考に、 任意の値を入力し「OK」ボタンを押します。

– Resource preflix : リソース命名に利用する任意のプレフィックス(接頭辞)
– VM user name : 任意のユーザー名
– Authentication Type : 今回はパスワードを選択。仮にSSH公開キーを利用する場合は、PuTTY Key Generatorなどで作成した公開キーを入力します。
– Password / Database password : 任意のパスワード
– Deployment region : Southeast Asiaを選択
– リソースグループ : 新規作成ボタンを押し、任意の値を入力
– 場所 : 東日本、もしくは西日本を選択

▼STEP2:追加オプションを設定していきます。以下を参考に入力し「OK」ボタンを押します。

– Blockchain Network : Create New(デフォルト)
– Monitoring Options : Enable(デフォルト)
– Azure Active Directory Settings : Add New
– Domain name : 前準備でコピーしたドメイン名を入力
– Application ID : 前準備でコピーしたアプリケーションIDを入力
– VM selection : Standard SSD(デフォルト)
– Validator node virtual macheine size : 2 x Standard DS1 v2(デフォルト)

▼STEP3:作成したAzure Blockchain Workbenchの検証を行います。少し待つと検証が終わるので「OK」ボタンを押して次のステップに進みます。

▼STEP4:最後に利用規約を読み「作成」ボタンを押せば、デプロイが開始されます。デプロイ完了まで30分ほどかかります。

③ Webクライアント応答URLの設定

▼デプロイ完了後、Webクライアントの応答URLの設定を行います。Azure Portalのトップから、「すべてのリソース」を」クリックし、種類の列でソートさせます。種類:App Serviceの中から、「…-api」と付いていない方のリソースをクリックします。

▼リソースが表示されたら、右上にあるURLをコピーしておきましょう。

▼再び、Azure Active Directory > アプリの登録 > アプリケーションをすべて表示 > 作成したアプリケーションをクリック、で詳細画面に進みます。

▼表示された登録済みのアプリから、設定 > 応答URL の順にクリックし、応答URLの設定画面を開きます。

▼「http://localhost」のURLを、先ほどコピーしたURLに書き換え、保存ボタンを押します。

▼保存したURLをブラウザに打ち込み、Azure Portalで設定したアカウントでアクセスができれば完了です。念のため、シークレットモードなどでログインできるか確認しておくと良いでしょう。

スマートコントラクトの実装

いよいよスマートコントラクトの実装に進みます。

ここでは、以下の流れで作業を行います。
①コントラクトのデプロイ
➁コントラクトへのユーザーの割り当て
③ テスト

①コントラクトのデプロイ

▼今回は簡単なスマートコントラクトの実装ということで、公式のサンプルプログラムを利用します。

公式サンプル:Azure-Samples/blockchain

上記から、以下の2ファイルをダウンロードします。

  • HelloBlockchain.json
  • HelloBlockchain.sol

今回作成するのは、Aさんからメッセージをリクエストし、Bさんがレスポンスする、という単純なアプリになっています。利用するjsonファイルやSolidityのファイル(sol)を変えれば、様々なスマートコントラクトが利用可能になります。

▼先ほどアクセスの確認をしたWebクライアント応答URLへ戻り、「New」をクリックし「Browse」ボタンから、上記の2ファイルアップロードします。エラーが出る場合は、ファイルの中身を確認してください。「Deploy」ボタンを押して、デプロイを完了させます。

②コントラクトへのユーザーの割り当て

▼今回のアプリのロールに対応するユーザーをAzure ADから追加していきます。Azure Portalへ戻り、Azure Active Directory > ユーザー の順にクリックし、表示された画面の上部にある「新しいユーザー」をクリックします。

▼「新しいユーザー」から開いた入力欄に以下のように記入します。

  • 名前:任意
  • ユーザー名:任意@テナント名.onmicrosoft.com

「パスワードを表示」にチェックを付け、パスワードを保存しておきましょう。

今回のアプリケーションでは、 リクエストを送る側とレスポンスを返す側の 2アカウント分のユーザが必要なため、ユーザを2人追加します。

▼再び、設定したWebクライアント応答URLに戻ります。下記の画面の「Add a member」をクリックし、アプリケーションに先ほど設定したユーザーを追加します。「Add a member」の表示が出ない場合は、ページを再読み込みしてみましょう。

▼ 右に開いた画面の「Add a member」をクリックし、追加したユーザーを検索します。 Azure ADで追加したメンバーを検索し「Requestor」と「Responder」にそれぞれ当てはめていきます。

▼もし、検索した結果エラーが返ってきた場合は、クライアントURLにログインしたMicrosoftアカウントに問題があるケースが考えられます。

ユーザー追加の権限の問題の場合は、エラー画面のリンクをクリックし、ユーザー指定のリソースにアクセスできるよう権限を付与しましょう。

③テスト

▼ それでは動作確認を行っていきます。 Google Chromeのシークレットウィンドウなどで、Webクライアント応答URLにアクセスし「Requestor」として登録したアカウントでログインします。(今回の例だとAlisのアカウントでログイン)

▼Hello, Blockchain!のアプリを選択しましょう。

▼次に「+ New」のボタンを押します。

▼開いたNew Contractのテキスト入力欄に、任意のリクエストメッセージを記入し「Create」ボタンを押します。

▼すると、このような形でコントラクトが作成されます。

▼作成されたコントラクトをクリックすると詳細画面が確認できます。

▼詳細画面の「Activity」の項目をクリックすると、トランザクションのハッシュ等より詳しい情報が確認できます。

▼今度は、レスポンスメッセージを作成します。いったん「Requestor」として登録したアカウントからサインアウトし、「Responder」として登録したアカウントでログインします。(今回の例だとBobのアカウント)

▼次に、Hello,Blockchainのアプリへ行き、Alisで作成したコントラクトの詳細画面を開きます。

▼すると、Actionの欄に「Take action」のボタンが表示されているのでクリックします。

▼レスポンスメッセージを入力し下部の選択肢から「Response」を選び「Take action」ボタンをクリックします。

▼任意のリクエストメッセージを入力し「Take action」ボタンをクリックします。

▼すると、アクションが実行されて、再度処理がリクエスターへと帰っていきます。StatusにRespondが追記され、Activityにも処理が追加されています。
メッセージのやり取りを継続する場合は、再びAlisでログインし、これまでと同様の作業でやり取りを確認できます。

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

以下で、スマートコントラクトの公式サンプルコードが確認できますので、是非参考にしてください。

参考:Azure Blockchainスマートコントラクト サンプルコード

その他、公式のドキュメント

参考:Blockchain Workbench プレビュー
Azure Blockchain Workbench のドキュメント

BaaSカテゴリの最新記事