LoginSignup
1
1

More than 5 years have passed since last update.

Azure Blockchain WorkbenchのメッセージングAPIを使ってコントラクトを作成する

Posted at

Azure Blockchain WorkbenchでHello Blockchain! というサンプルアプリケーションを動作させるまでの記事を書きました。
GUI上でポチポチコントラクトを作りましたが、今回はService Busを介したメッセージングAPIを利用したコントラクトの作成方法を書いていきます。

これができると何が嬉しいかというと、例えばIoTデバイスから随時送られるデータを、Service Busを介してブロックチェーン上に記録するといったことも可能になります。

利用するService Busは、Blockchain Workbench作成時に一緒に作られています。

Workbenchのバージョンは1.6.0です。

構成

メッセージングAPIにメッセージを送信するために、ストアドプロシージャを実行したり、加工が必要だったりするので、Logic Appsを使っています。

image.png

ストアドプロシージャ作成

  • コントラクトの作成に最適なサンプルストアドプロシージャが提供されてましたのでダウンロードしておきます。
    LogicAppStoredProcedures.sql

  • Blockchain Workbench作成時に一緒に作られたSQL Databaseを開き、[クエリエディター]を選択します。
    image.png

  • ログインユーザに[dbadmin]を指定します。パスワードはBlockchain Workbench作成時に指定したものを入力してください。
    image.png

  • [クエリを開く]を選択し、先程ダウンロードしたsqlファイルを選択します。
    image.png

  • [実行]を選択します。
    image.png

Logic Apps作成

  • Logic Appsを作成します。
  • トリガーは今回は「HTTP要求の受信時」を選択します。
    image.png

  • 次のステップで、[変数]→[変数を初期化する]アクションを選びます。
    image.png

  • 以下のように入力します。値は動的コンテンツの式に[guid()]と入力してください。
    image.png

  • 次のステップで、[SQL Server]→[ストアドプロシージャの実行]アクションを選びます。
    image.png

  • 接続名は適当に、SQL DatabaseはBlockchain Workbench作成時に作られたもの、データベースはmasterじゃないほうを選んでください。
    image.png

  • [dbo].[LogicAppGetUserChainIdentifierFromEmailAddress]を選択します。
    image.png

  • 現在ログインしているユーザのアドレスを入力します。(xxx@yyy.onmicrosoft.com)
    image.png

  • 次のステップで、[Service Bus]→[メッセージの送信]アクションを選びます。
    image.png

  • 接続名は適当に、Service BusはBlockchain Workbench作成時に作られたものを選びます。
    image.png

  • Service Busポリシーは[ReadWriteSharedAccessKey]を選択します。
    image.png

  • キューは[ingressqueue]を選択します。
    image.png

  • セッションIDでは、最初にストアドプロシージャの動的コンテンツを選択してください。
    image.png

  • そうすると、For-Each文の中に入ります。
    image.png

  • この状態でセッションIDに動的コンテンツ[requestId]を選択します。
    image.png

  • メッセージの内容は以下のJSONを書きます。
    image.png

{
  "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で定義されています。

  • 最終的にはこんなフローになります。
    image.png

  • ワークフローを保存して実行します。
    image.png

  • HelloBlockchainアプリケーションに新規コントラクトが作成されればOKです。
    image.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1