Azure Blockchain WorkbenchでHello Blockchain! というサンプルアプリケーションを動作させるまでの記事を書きました。
GUI上でポチポチコントラクトを作りましたが、今回はService Busを介したメッセージングAPIを利用したコントラクトの作成方法を書いていきます。
これができると何が嬉しいかというと、例えばIoTデバイスから随時送られるデータを、Service Busを介してブロックチェーン上に記録するといったことも可能になります。
利用するService Busは、Blockchain Workbench作成時に一緒に作られています。
Workbenchのバージョンは1.6.0です。
構成
メッセージングAPIにメッセージを送信するために、ストアドプロシージャを実行したり、加工が必要だったりするので、Logic Appsを使っています。
ストアドプロシージャ作成
-
コントラクトの作成に最適なサンプルストアドプロシージャが提供されてましたのでダウンロードしておきます。
LogicAppStoredProcedures.sql -
Blockchain Workbench作成時に一緒に作られたSQL Databaseを開き、[クエリエディター]を選択します。
-
ログインユーザに[dbadmin]を指定します。パスワードはBlockchain Workbench作成時に指定したものを入力してください。
Logic Apps作成
-
Logic Appsを作成します。
-
接続名は適当に、SQL DatabaseはBlockchain Workbench作成時に作られたもの、データベースはmasterじゃないほうを選んでください。
-
[dbo].[LogicAppGetUserChainIdentifierFromEmailAddress]を選択します。
-
現在ログインしているユーザのアドレスを入力します。(xxx@yyy.onmicrosoft.com)
{
"requestId":"@{variables('requestId')}",
"userChainIdentifier":"@{items('For_each')?['ChainIdentifier']}",
"applicationName":"HelloBlockchain",
"workflowName":"HelloBlockchain",
"parameters": [
{
"name":"message",
"value":"こんにちわ"
}
],
"connectionId":1,
"messageSchemaVersion":"1.0.0",
"messageName":"CreateContractRequest",
"version": "1.0"
}
applicationName、workflowNameといった値は、HelloBlockchain.jsonで定義されているので確認してみてください。
parametersはHelloBlockchain.jsonのConstructorで定義されています。