June 2018

Volume 33 Number 6

ブロックチェーン - Azure Blockchain Workbench の導入

によってStefano Tempesta |年 6 月 2018

Azure Blockchain Workbench (aka.ms/abcworkbench) ユーザーが blockchain テクノロジを採用して Azure Blockchain 使い始めるために Microsoft の旅に最新の手順です。Azure Blockchain は Azure サービスと企業を作成し、新しいクラスの複数のビジネス プロセスとデータを共有するためのアプリケーションを展開する機能のコレクションをコンテキストに提供する、信頼度の低い組織。現在顧客は、これらのサービスを Azure サブスクリプションに展開し、Azure Marketplace で利用可能な blockchains を使用して統合します。ここで、Azure Blockchain Workbench でスキャフォールディングと詳細については、ロジックとスマート コントラクト小さいを集中できるように、面倒な作業は、それらの実行されます。

Azure の Blockchain Workbench は、人気のある blockchain デジタル元帳の周囲と blockchain ベースのアプリケーションの構築に使用できる参照アーキテクチャにいくつかの Azure サービスを調整します。簡略化されたインターフェイスをすべての Azure Blockchain の機能を利用するエンド ツー エンド分散アプリケーションを作成することができますが、無料で使いやすいツールです。これに装備されてサンプルが組織を越えたワークフローとスマートのコントラクトだけでなく顧客が開発コストを大幅に削減し、概念実証の高速化に使用できる既定の UI。

Jonathan Waldman 未処理の記事、「Blockchain の基礎」を参照するをお勧め、blockchain 経験がない場合 (msdn.com/magazine/mt845650)、MSDN マガジンの年 2018年 3 月問題にします。ビデオでは、Microsoft のしくみについて、"(入門) に Blockchain と Azure Blockchain Workbench は、"する点を行うことも、 aka.ms/workbenchintroです。

Azure の Blockchain ワークベンチの概要

ほぼ同じ方法でアプリケーションが現在のデータベースと対話する、blockchain で実行されている分散アプリケーションが通信し、Ethereum または Hyperledger などの特定のデジタル台帳に対してロジックを実行します。デジタル台帳ネットワークは、ノードのピア ツー ピア分散ネットワークで構成されます。これらのノードでは、データ ストアのコピーを維持し、合意を維持しながら、台帳に対して任意の計算をサポートするために仮想マシンを実行します。スマート コントラクトは、従来のリレーショナル データベースでストアド プロシージャと同様に、ネットワーク上のこの複雑な計算を許可するメカニズムです。

にもかかわらず、増大するさまざまなビジネス プロセスで blockchain を活用する可能性を企業が blockchain テクノロジを採用する前に解決するに障害があります。ガバナンス、ネットワーク パフォーマンスおよびスケーラビリティの欠如は blockchain エンタープライズ環境での採用に影響を与えるの課題として示されている多くの場合。

インフラストラクチャをプロビジョニングし、書き込みとゲートウェイ API を展開する、チェーンからの記憶域のサポートを実装する、書き込みログとレポート、および統合する、クライアント アプリケーションの開発 blockchain で通常実行されている完全なソリューションを構築が必要です。id およびキーは、ソリューションにサービス資格情報コンテナーします。Azure Blockchain Workbench は、blockchain ソリューションを構築するために必要な時間を大幅に削減で修正される blockchain アプリの開発に関連する課題の共通セットがあります。

Azure Blockchain Workbench 提供コード資産と blockchain POCs、blockchain ネットワーク ゲートウェイ API を含め、応答の Web アプリケーション、Azure Active Directory の統合、Azure のキーに必要なすべてのスキャフォールディングの ARM テンプレートに基づく配置チェーンのデータを収集するため資格情報コンテナーの統合、SQL DB が構成されており、データのハッシュと署名のサービスのサポートのセット。このツールでは、任意のコードを記述することがなく、Web フロント エンドを作成することです。参加者のコンテキストのユーザー エクスペリエンスを動的に配信するのにスマート コントラクトの指定されているメタデータを使用します。フレームワークでは、チェーン オフ ストアとして SQL DB は追加、ために、既存のスキルとその他の機能を強調するためのツールを活用する組織を使用できます。

その結果、Azure の Blockchain Workbench は、時間と概念実証 (POC) プロジェクトのコストを削減します。これにより、基本的な POC 立ち上がってに必要な統合タスクに時間とリソースを消費して blockchain の可能性を示す革新的なアプリケーションの作成に集中します。

Azure Blockchain Workbench は、Azure Marketplace で利用できます (aka.ms/tryworkbench)、ワークベンチのアクションでのビデオでの Microsoft のしくみについてチームが使用可能なaka.ms/workbenchdemoです。

Azure の Blockchain ワークベンチを展開します。

Azure Blockchain ワークベンチの展開には、次の前提条件となる手順が必要です。

1.ホストするために必要な Azure AD と Key Vault のアプリの Azure Active Directory (Azure AD) テナントです。

2.Azure AD アプリと Azure Blockchain ワークベンチの展開時に参照されるように Key Vault 値の登録です。

新規作成するテスト ユーザーを設定または別の Azure でアプリケーションを登録するために Azure AD テナント企業は、Azure AD より AD テナントのテナントします。これらの構成手順の詳細については、公式の Azure Blockchain Workbench ドキュメント aka.ms/workbenchdocs 報告されます。

前提条件となる手順が完了したら、ワークベンチを展開できます。Azure ポータルにサインインしに示すように、Azure Marketplace から新しいリソースを追加図 1です。検索し、プロビジョニング プロセスを開始する Azure Blockchain Workbench を選択します。

図 1 に、Azure Marketplace で Azure Blockchain Workbench

このソリューション テンプレートは、展開と blockchain ネットワーク上のアプリケーションの構築に必要なサービスの統合を容易に設計されています。いくつかのユーザー入力と、Azure ポータルでのシングル クリックによる展開には、Web UI のサンプルと共にパッケージ化、エンド ツー エンド blockchain アプリケーションを構築するために必要な関連する Azure サービスと共に blockchain 台帳を展開することができます。生成されたアプリケーションには、Web アプリケーション、REST API、チェーンからの記憶域などが含まれています。構築して、サービスの構成が blockchain ネットワークとの統合に必要な時間を費やすのではなく、Azure チームが自動化されるこれらの時間がかかる部分、シナリオを構築に集中できます。Azure Blockchain Workbench Web アプリケーションでは、スマート コントラクトに基づいて、ビジネス ワークフロー、エンド ツー エンド ユーザー エクスペリエンスを生成できます。

Azure Blockchain Workbench をプロビジョニングすると、最初の 2 つの構成パラメーターを確立すると、次の 2 つのネットワーク容量をアドレス指定と監視 6 つの手順が必要です。ステップ 1 で示されている、いくつかの基本的な設定では図 2、これが含まれます。

このテンプレートの一部として準備されたすべての Azure リソースの名前付けのプレフィックスとして • 一意の識別子。

• すべての管理者のユーザー名は、仮想マシン (Vm) をプロビジョニングします。

• Vm に接続するために使用する SSH 公開キー。コピーし、単一行形式 ("ssh rsa"で始まる) または、複数行 PEM 形式で RSA 公開キーを貼り付けます。Linux および macOS など) や puttygen (Windows 上の ssh-keygen を使用して SSH キーを生成することができます。

• ワークベンチの展開の一部として含まれているデータベースへのアクセスを保護するパスワード。

• 展開に使用する Azure サブスクリプション。ただし、Azure Blockchain ワークベンチの使用は、ライセンス コストを含まないが、コンピューティング、記憶域やネットワーク リソースのプロビジョニングされた Azure の支払します。

• これらすべてのリソースをグループ化に使用するリソース グループです。Blockchain Workbench ソリューション用の新しいリソース グループを作成することをお勧めします。

• 領域に、リソースをデプロイします。

図 2 作業 Azure Blockchain ワークベンチのプロビジョニングの開始

手順 2 が必要です、Azure AD で blockchain クライアント アプリの登録の前提条件の手順を完了するように、登録アプリケーション ID とキーが要求されたときに入力する必要があります。また、Azure AD でクライアント アプリの登録の一環として取得されたテナントのドメイン名を指定する必要があります。

手順 3 では、プロビジョニングされた blockchain 台帳内のノードの数と割り当てられた Vm のサイズを指定できます。手順 4 では、必要に応じてオプトイン Operations Management Suite (OMS) に配置されたソリューションを監視するためです。

手順 5 と 6 は、単にプロビジョニングされているリソースと、コストに影響があることを理解している、受信確認の要約です。ワークベンチの展開が完了すると、指定した名前の新しいリソース グループが表示されます。ここでは、展開されている Application Insights など一部のリソースを使用すると、展開済みの Vm およびネットワークに関する詳細を含む、ワークベンチの状態に関する詳細を取得できます。

I 述べたとおり、Azure Blockchain Workbench 認証用に Azure AD を活用して、制御とワークフローのペルソナの識別にアクセスします。参照先の Azure AD で指定されている唯一のユーザーは認証し、展開済みのリソースを使用することになります。さらに、ユーザーが対話して、操作を実行するために特定のユーザー グループに関連付けする必要があります。したがって、Azure Blockchain Workbench と対話するユーザー アカウントを管理し、必要なアクセス許可を割り当てるには必要です。

スマート コントラクトを展開します。

展開した後は、その URL に移動して Azure Blockchain Workbench を表示できます。Azure AD に格納されたログインが発生する職場またはアプリケーションへのアクセスに個人の Microsoft アカウントの資格情報を入力することがわかります。

ドライブを別のシナリオ フロー ビジネス ロジックを含むスマートのコントラクトを活用することを開始できます。この方法では、変更不可、確定的な実行と信頼されていない環境で必要な透過性を提供します。スマート コントラクトは、blockchain スタックに固有の言語で記述されました。たとえば、不透明度は使用 Ethereum、Hyperledger ファブリックの移動が使用されます。スマート コントラクトは、blockchain 上すべてのノードに配置されます。実行中に、表示情報は、ネットワーク上のすべてのノードにもレプリケートされます。

Azure Blockchain ワークベンチの主な目的は、ユーザーがスマート契約に基づくビジネス ロジックの作成に取り組めるように blockchain アプリケーション中心スキャフォールディング立ち上がってを開始します。スマート コントラクトが、Workbench でインスタンス化される、blockchain に書き込まれ、スマート コントラクトに後続の更新は、blockchain に記録されます。展開した後、Azure Blockchain Workbench 管理者がスマート コントラクトとスマート コントラクトの完了したユーザーの割り当て、他のユーザーは blockchain アプリケーションと対話し、スマート コントラクト ワークフローに参加できます。

既存のデモ スマート コントラクトのいずれかの展開から始めましょう。正常にサインインした後に右上の管理者リンクが表示されます。管理ダッシュ ボードにアクセスする管理リンクをクリックします。現在の 3 つのアクションがある、管理者に示すように、workbench に利用可能な図 3です。ここではユーザーの割り当て、展開デモ コントラクトでき、カスタムのコントラクトを展開します。

図 3 管理者ダッシュ ボード

管理ダッシュ ボードでのデモ コントラクトの展開でクリックすると、指定できるすべてのデモ コントラクトの一覧を表示します。Blockchain ワークベンチの現在のリリースには、開始するには、デモ スマート コントラクトと構成ファイルのセットが含まれています。ワークベンチ ドキュメントでは、特定のシナリオと、UI のステップのチュートリアルについての詳細を提供します。詳細な手順については、デモ スマート コントラクトと関連付けられている構成ファイルが作成された方法、およびこのシナリオを有効にする Azure AD で適切なユーザー アカウントを設定する方法もあります。

カスタム コントラクトのアップロード

参照の blockchain プラットフォームでサポートされているプログラミング言語のいずれかでカスタムのコントラクトを作成して Azure Blockchain Workbench 内に展開します。ビジネス ロジック、相互作用および実装されたワークフローの視覚化効果を定義する 3 つのファイルは、すべての Azure Blockchain ワークベンチが必要です。次のとおりです。

スマート コントラクト: を開始するには、シナリオでは、ビジネス ロジックを含むスマート契約を作成する必要があります。次の例では、スマート コントラクトは、対象と Ethereum blockchain コントラクトが書き込まれる、不透明度のプログラミング言語です。

構成: 構成ファイルでは、ユーザーは、プロパティ、アクション、およびスマート コントラクト blockchain プロトコル情報をマップします。定義することも、インスタンス化とスマート コントラクトに対する操作の参加者から必須のどのようなパラメーターです。

UI の構成: 構成 UI ファイルでスマート コントラクトの各状態で、ロールベースのアクセスを制御するための UI を定義するなどを制限するペルソナが特定のアクションを実行できます。このファイルには、ユーザーは状態のペルソナをマップし、状態の定義、コントラクト、および各状態で対象となるアクションの各状態で完了の割合を指定します。

スマート コントラクトの作成

コントラクトの定義には、Azure Blockchain Workbench を操作するために指定する必要があります、いくつかのコンポーネントが含まれています。特定の契約の詳細を定義する、状態、参加要素、および各アクションのロジックを記述する関数などのシナリオに、前に LexingtonBase コントラクトを実装する必要があります。ビジネス シナリオでは、ビジネス ロジックで実際のコントラクトはコントラクトを継承、LexingtonBase (これは c# でのクラスと同等) のように図 4です。

図 4 LexingtonBase コントラクト

contract LexingtonBase {
  event LexingtonContractCreated(string contractType, address originatingAddress);
  event LexingtonContractUpdated(string contractType, string action,     address originatingAddress);
  string internal ContractType;

  function LexingtonBase(string contractType) internal {
    ContractType = contractType;
  }

  function ContractCreated() internal {
    LexingtonContractCreated(ContractType, msg.sender);
  }

  function ContractUpdated(string action) internal {
    LexingtonContractUpdated(ContractType, action, msg.sender);
  }
}

各コントラクトは、状態が、コントラクトの現在の状態を表す、スマートのコントラクトでは、さまざまなアクションのビジネス ロジックとのコンス トラクターを定義する関数、コントラクトに格納されているデータに関連する参加要素のアドレスが必要スマート コントラクトがインスタンス化されるときです。図 5コンス トラクターの例と資産の転送スマート コントラクトのプロパティを提供します。

図 5 資産転送スマート コントラクト

contract AssetTransfer is LexingtonBase('AssetTransfer')
{
  enum AssetState { Created, Active, OfferPlaced, PendingInspection,
    Inspected, Appraised,
    NotionalAcceptance, BuyerAccepted, SellerAccepted, Accepted,
      Complete, Terminated }

  address public Owner;
  string public Description;
  uint public AskingPrice;
  AssetState public State;
  address public Buyer;
  uint public OfferPrice;
  address public Inspector;
  address public Appraiser;

  function AssetTransfer(string description, uint256 price)
  {
    Owner = msg.sender;
    AskingPrice = price;
    Description = description;
    State = AssetState.Active;
    ContractCreated();
  }
}

必ず、クラス名とコンス トラクター名が一致します。不透明度の言語でサンプル ソース コードを検索するには、JSON 構成ファイルと共に、自分の GitHub リポジトリにこのスマート コントラクトbit.ly/2HJPcETです。

構成ファイルの作成

構成ファイルは、主要なプロパティと、スマート コントラクトのパラメーターを定義します。これには、すべてのプロパティと種類を一覧表示するだけでなく、ユーザーがスマート コントラクトをインスタンス化への入力する必要があるパラメーターを示すコンス トラクターの定義が含まれます。図 6資産転送プロパティと、構成ファイルからコンス トラクターの例を示します。

図 6 資産転送プロパティとコンス トラクター

"Properties": {
    "State": {
      "Type": "state"
    },
    "Owner": {
      "Type": "user"
    },
    "Description": {
      "Type": "string"
    },
    "AskingPrice": {
      "Type": "money"
    },
    "Buyer": {
      "Type": "user"
    },
    "OfferPrice": {
      "Type": "money"
    },
    "Inspector": {
      "Type": "user"
    },
    "Appraiser": {
      "Type": "user"
    }
  },

"Constructor": {
    "description": {
      "Type": "string"
    },
    "price": {
      "Type": "money"
    }
  },

さらに、ユーザーは列挙され、各アクションの入力パラメーターの指定を含めて、すべての可能なアクションの詳細情報を提供する必要があります。図 7 MakeOffer アクションの仕様、資産の転送に構成ファイルからユーザー インスペクター、評定者との特別価格を入力する必要がありますの例を示します。

図 7 MakeOffer アクションの仕様

"MakeOffer": {
    "Parameters": {
      "inspector": {
        "Type": "user"
      },
      "appraiser": {
        "Type": "user"
      },
      "offerPrice": {
        "Type": "money"
      }
    }
  },

最後に、次のように、blockchain 構成情報が含まれます。

"Chains": {
    "Ethereum": {
      "Type": "Ethereum",
      "Version": "1.0",
      "Location": "AssetTransfer.sol",
      "TypeName": "AssetTransfer",
      "ActionOverrides": {},
      "PropertyOverrides": {}
    }
  }

UI の構成ファイルの作成

ユーザーは、UI 構成ファイルで各アクションの UI の詳細を定義します。これには、ユーザーがスマート コントラクトをインスタンス化するときに表示されるユーザー、参加者側か相手側のロールとペルソナ マッピングの状態のマッピングだけでなく、テキストを示すコンス トラクターなどの詳細が含まれます。図 8資産転送プロパティと、UI 構成ファイルからコンス トラクターの例を示します。

図 8 InitiatingRoles

"InitiatingRoles": [
    "Admin",
    "User"
  ],
  "Personas": {
    "Owner": {
      "Role": "Initiator",
      "IsInitiator": true,
      "PropertyMapping": "Owner"
    },
    "Buyer": {
      "Role": "Participant",
      "PropertyMapping": "Buyer"
    },
    "Appraiser": {
      "Role": "Participant",
      "PropertyMapping": "Appraiser"
    },
    "Inspector": {
      "Role": "Participant",
      "PropertyMapping": "Inspector"
    }
  },
  "StateProperty": "State",
  "StateMapping": {
    "Created": 0,
    "Active": 1,
    "OfferPlaced": 2,
    "PendingInspection": 3,
    "Inspected": 4,
    "Appraised": 5,
    "NotionalAcceptance": 6,
    "BuyerAccepted": 7,
    "SellerAccepted": 8,
    "Accepted": 9,
    "Complete": 10,
    "Terminated": 11
  },
"Constructor": {
    "DisplayName": "Create Asset Transfer",
    "Description": "Description of asset transfer"
  },

さらに、ユーザーはすべての可能な状態を列挙され、スマート コントラクトを使用して進行状況の視覚化をユーザーに付与するペルソナ、だけでなく、完了パーセンテージの値ごとの各ステップで実行できるアクションを指定する各状態の詳細を含める必要があります。たとえば、資産の転送コントラクト UI 構成ファイルを示しましているオファーが配置されている状態を示しています、所有者と購入者のみ実行できるように指定されたアクションは、コードで示すように図 9です。

図 9 OfferPlaced コード

"OfferPlaced": {
    "PercentComplete": 30,
    "Style": "Success",
    "Actions": {
      "Owner": {
        "AcceptOffer": {},
        "Reject": {},
        "Terminate": {}
      },
      "Buyer": {
        "RescindOffer": {}
      }
    }
  }

カスタムのスマート コントラクトと関連付けられている構成ファイルを作成したら、次のタスクはスマート コントラクトを展開します。管理ダッシュ ボードの Azure Blockchain ワークベンチのカスタム契約のアップロードを選択すると、カスタムのコントラクトと構成ファイルをアップロードするページが表示されます。指定する必要のある 3 つのファイルがあります。示されている契約のアップロード] 画面で示されたスマート コントラクト ファイルと以前に作成された 2 つの構成ファイルを選択図 10です。

図 10 契約のアップロード] 画面

ユーザーの割り当て

スマート コントラクト (デモまたはカスタム) を展開した後、イニシエーターのペルソナを持つユーザーは、コントラクトの新しいインスタンスを作成できます。特定のコントラクトのインスタンスを作成するには、そのコントラクトに関連付けられているペルソナがユーザーに必要です。スマート コントラクトの指定、によっては、コントラクトを作成する権限がすべてのペルソナにあります。管理者は、コントラクトにユーザーを割り当てるし、ビジネス プロセスにおける各自のロール (ペルソナ) を指定します。少なくとも 1 つのコントラクト (デモまたはカスタム) 展開が存在する必要がありますが、管理者は、任意のユーザーの割り当て操作を実行する前に注意してください。契約をアップロードすると、次の手順は、コントラクトのユーザーの割り当てを完了するは。管理者は、Azure Blockchain Workbench 管理者ダッシュ ボードでユーザーの割り当ての画面からスマート コントラクトにユーザーを割り当てることができます。

コントラクトに割り当てられると、コントラクトを作成する Azure Blockchain Workbench にサインインして、ユーザーがスマート コントラクト ワークフローに参加できます。示すように、ユーザーが新しい資産を生成する必要があると図 11です。自分必要があります、ビューの右上に新しいコントラクトの作成] をクリックして新しいコントラクトを作成し、(このビューは、スマート コントラクトに基づいて異なります)、コントラクトの詳細を入力して送信します。スマート コントラクト定義の一部として提供されたメタデータに基づいて、画面が自動的に生成されます。

図 11 入力契約の詳細

コントラクトのインスタンスを作成した後、ユーザーは使用可能なアクションは、コントラクトの現在の状態を表示するための詳細にドリルダウンできます。

Azure の Blockchain ワークベンチの拡張

At Azure Blockchain ワークベンチのコアは、複数の分散台帳テクノロジができる拡張可能なプラグ可能なモデルを有効にすると、Azure Service Bus blockchain ソリューションの一部として使用するストレージとデータベースの内容。Azure Logic Apps、Web Api、Notification Hubs などとなどの機能を拡張する Workbench とその他のサービスを統合する機会もあります。データのチェーンからの記憶域により、処理後の記憶域と Power BI のようにオプションで、分析シナリオの Azure Machine Learning HD Insight、Azure Data Lake およびその他のサービス コントラクトのデータが共有できます。

Blockchain 会社の壁を超えるデジタル変換を拡張する可能性があるし、業者、顧客やパートナーと共有して、プロセスにします。したように、重要なは、blockchain 両方コンピューティングとデータ構造体を作成するデジタル トランザクション台帳、1 つのプロバイダーに載りましたの代わりに使用できるは、分散ネットワーク コンピューターの間で共有されます。交換する値と、資産、制約の適用、およびデータの共有を考慮する方法を変更するより透明と検証可能なシステムになります。

Microsoft は、エンタープライズに blockchain を導入し、開発者や分散アプリケーションの構築を検討している組織に Azure のすべてのメリットに努めています。目標は、企業の中で成長しセキュリティで保護された、マルチパーティ計算のこの新しい時代 (年号) を提供するスケーラブルなプラットフォームとサービスによってすべての企業を支援する — 元帳の起動と正常性のプロバイダーとグローバルの銀行を小売店から-共有されているビジネスを向上させるために使用できます処理します。Azure の Blockchain Workbench 発表された Azure 機密コンピューティングと blockchain world および enterprise のギャップを埋めるときに役立つ機密 Consortium Blockchain フレームワークと共に、Azure 内のサービスのエコシステムの一部であります。ガバナンス、セキュリティ、スケーラビリティの要件。近い将来追加の開発をご覧ください。


Stefano Tempestaは、Microsoft 地域ディレクターと MVP として章リーダー CRMUG スイス、世界中の Dynamics 365/CRM の専門家の大規模コミュニティにします。Tempesta は、Dynamics 365、blockchain および機械学習に関するコースのインストラクターと Microsoft Ignite 技術 Summit など、国際対応の IT カンファレンスで正規のスピーカーです。設立 Blogchain 領域 (blogchain.space)、blockchain テクノロジに関するブログの MSDN マガジンと、MS Dynamics 世界書き込みます Azure AI ギャラリーの機械学習の実験を発行していく (gal lery.azure.ai)。