Azure Stack Hub 上に Ethereum ブロックチェーン ネットワークをデプロイする

Ethereum ソリューション テンプレートは、Azure と Ethereum の最小限の知識で、マルチメンバー コンソーシアム Ethereum ブロックチェーン ネットワークを簡単かつ短時間でデプロイおよび構成できるように設計されています。

Azure Stack Hub テナント ポータルでわずかなユーザー入力とワンクリック デプロイを行うことで、各メンバーはネットワーク フットプリントをプロビジョニングできます。 各メンバーのネットワーク フットプリントは、次の 3 つの要素で構成されています。

  1. アプリまたはユーザーがトランザクションを送信するために操作できる、一連の負荷分散されたトランザクション ノード。
  2. トランザクションを記録するための一連のマイニング ノード。
  3. ネットワーク仮想アプライアンス (NVA)。

以降の接続手順では、NVA を接続して、完全に構成されたマルチメンバー ブロックチェーン ネットワークを作成します。

設定するには:

  • デプロイ アーキテクチャを選択します。
  • スタンドアロン、コンソーシアム リーダー、またはコンソーシアム メンバー ネットワークをデプロイします。

前提条件

Marketplace から最新版をダウンロードしてください。

  • Ubuntu Server 16.04 LTS
  • Windows Server 2016
  • Linux 2.0 用のカスタム スクリプト
  • Windows でのカスタムのスクリプト拡張機能

デプロイメント アーキテクチャ

このソリューション テンプレートは、単一または複数メンバーの Ethereum コンソーシアム ネットワークをデプロイできます。 仮想ネットワークは、ネットワーク仮想アプライアンスと接続リソースを使用してチェーン トポロジで接続されます。

このテンプレートでは、リーダーとメンバー向けの Ethereum コンソーシアムをさまざまな方法でデプロイすることができます。 テスト済みのものを次に示します。

  • Microsoft Entra ID または AD FS を使用するマルチノード Azure Stack Hub で、同じサブスクリプションまたは異なるサブスクリプションを使用してリードとメンバーをデプロイします。
  • (Microsoft Entra ID を持つ) 単一ノードの Azure Stack Hub で、同じサブスクリプションを使用してリードとメンバーをデプロイします。

スタンドアロンとコンソーシアム リーダーのデプロイ

コンソーシアム リーダー テンプレートは、ネットワーク内の最初のメンバーのフットプリントを構成します。

  1. GitHub からリーダー テンプレートをダウンロードします。

  2. Azure Stack Hub テナント ポータルで、[+ リソースの作成]、[テンプレートのデプロイ] を選択して、カスタム テンプレートからデプロイします。

  3. [エディターで独自のテンプレートを作成する] を選択して、新しいカスタム テンプレートを編集します。

  4. 右側の編集ウィンドウで、前の手順でダウンロードしたリーダー テンプレート JSON をコピーして貼り付けます。

    リーダー テンプレートが貼り付けられたテンプレートの編集

  5. [保存] を選択します。

  6. [基本] タブで、次の設定を行います。

    パラメーター名 説明 値の例
    サブスクリプション コンソーシアム ネットワークのデプロイ先となるサブスクリプション。 消費サブスクリプション
    Resource group コンソーシアム ネットワークをデプロイするリソース グループ EthereumResources
    リージョン リソースの Azure リージョン。 local
    名前のプレフィックス デプロイされたリソースの命名規則の基礎として使用される文字列。 最大 6 文字の英数字を使用します。 eth
    Auth type VM に対する認証方法。 使用できる値は、パスワードまたは SSH 公開キーです。 Password
    管理者ユーザー名 デプロイされた各 VM の管理者ユーザー名。 1 から 64 文字を使用します。 gethadmin
    Admin password (認証の種類 = パスワード) デプロイされた各 VM の管理者アカウントのパスワード。 パスワードには、小文字、大文字、数字、特殊文字の 4 種類のうち 3 種類を使用する必要があります。
    VM にはすべて、最初の段階で同じパスワードが与えられます。プロビジョニング後にそのパスワードを変更できます。 12 から 72 文字を使用します。
    Admin SSH key (認証の種類 = sshPublicKey) リモート ログインに使用されるセキュリティ保護されたシェル RSA 公開キー文字列。
    Genesis block カスタム ジェネシス ブロックを表す JSON 文字列。 このパラメーターの値の指定は省略可能です。
    Ethereum account password Ethereum アカウントのセキュリティ保護に使用する管理パスワード。
    Ethereum account passphrase Ethereum アカウントに関連付けられた秘密キーの生成に使用されるパスフレーズ。 秘密キーを強力にするには、十分なランダム性を持つパスワードを検討してください。
    Ethereum network ID コンソーシアムのネットワーク ID。 5 から 999,999,999 までの任意の値を使用します。 72
    Consortium member ID コンソーシアム ネットワークの各メンバーに関連付けられた ID。 この ID は、ネットワーク内で一意である必要があります。 0
    Number mining nodes 各コンソーシアム メンバーのマイニング ノードの数。 2 から 15 の値を使用します。 2
    Mining node VM size マイニング ノードの VM サイズ。 Standard_A1
    Mining storage account type マイニング ノード ストレージのパフォーマンス。 Standard_LRS
    TX ノードの数 負荷分散型トランザクション ノードの数。 1 から 5 の値を使用します。 1
    TX node VM size トランザクション ノードの VM サイズ。 Standard_A1
    TX storage account type トランザクション ノードのストレージ パフォーマンス。 Standard_LRS
    ベース URL デプロイ テンプレートを取得するベース URL。 デプロイ テンプレートをカスタマイズする場合を除き、既定値を使用します。
  7. [Review + create](レビュー + 作成) を選択します。 検証が成功したら、 [作成] を選択します。

デプロイが完了するまで 20 分以上かかる場合があります。

デプロイが完了したら、Microsoft.Template のデプロイの概要をリソース グループのデプロイ セクションで確認します。 この概要には、コンソーシアム メンバーを参加させるために使用する出力値が含まれています。

リーダーのデプロイを確認するには、リーダーの管理サイトに移動します。 管理サイトのアドレスは、Microsoft.Template デプロイの出力セクションで確認できます。

リーダーのデプロイの概要

コンソーシアム メンバー参加デプロイ

  1. GitHub からコンソーシアム メンバー テンプレートをダウンロードします。

  2. Azure Stack Hub テナント ポータルで、[+ リソースの作成]、[テンプレートのデプロイ] を選択して、カスタム テンプレートからデプロイします。

  3. [エディターで独自のテンプレートを作成する] を選択して、新しいカスタム テンプレートを編集します。

  4. 右側の編集ペインで、前の手順でダウンロードしたコンソーシアム メンバー テンプレート JSON をコピーして貼り付けます。

  5. [保存] を選択します。

  6. [基本] タブで、次の設定を行います。

    パラメーター名 説明 値の例
    サブスクリプション コンソーシアム ネットワークのデプロイ先となるサブスクリプション。 消費サブスクリプション
    Resource group コンソーシアム ネットワークをデプロイするリソース グループ EthereumResources
    リージョン リソースの Azure リージョン。 local
    名前のプレフィックス デプロイされたリソースの命名規則の基礎として使用される文字列。 最大 6 文字の英数字を使用します。 eth
    Auth type VM に対する認証方法。 使用できる値は、パスワードまたは SSH 公開キーです。 Password
    管理者ユーザー名 デプロイされた各 VM の管理者ユーザー名。 1 から 64 文字を使用します。 gethadmin
    Admin password (認証の種類 = パスワード) デプロイされた各 VM の管理者アカウントのパスワード。 パスワードには、小文字、大文字、数字、特殊文字の 4 種類のうち 3 種類を使用する必要があります。
    VM にはすべて、最初の段階で同じパスワードが与えられます。プロビジョニング後にそのパスワードを変更できます。 12 から 72 文字を使用します。
    Admin SSH key (認証の種類 = sshPublicKey) リモート ログインに使用されるセキュリティ保護されたシェル RSA 公開キー文字列。
    Genesis block カスタム ジェネシス ブロックを表す JSON 文字列。 このパラメーターの値の指定は省略可能です。
    Ethereum account password Ethereum アカウントのセキュリティ保護に使用する管理パスワード。
    Ethereum account passphrase Ethereum アカウントに関連付けられた秘密キーの生成に使用されるパスフレーズ。 秘密キーを強力にするには、十分なランダム性を持つパスワードを検討してください。
    Consortium member ID コンソーシアム ネットワークの各メンバーに関連付けられた ID。 この ID は、ネットワーク内で一意である必要があります。 0
    Number mining nodes 各コンソーシアム メンバーのマイニング ノードの数。 2 から 15 の値を使用します。 2
    Mining node VM size マイニング ノードの VM サイズ。 Standard_A1
    Mining storage account type マイニング ノード ストレージのパフォーマンス。 Standard_LRS
    TX ノードの数 負荷分散型トランザクション ノードの数。 1 から 5 の値を使用します。 1
    TX node VM size トランザクション ノードの VM サイズ。 Standard_A1
    TX storage account type トランザクション ノードのストレージ パフォーマンス。 Standard_LRS
    Consortium data 他のメンバーのデプロイによって提供された、関連するコンソーシアム構成データを指す URL。 この値は、リーダーのデプロイの出力で確認できます。
    Remote member VNET address space リーダーの VNET アドレス空間。 この値は、リーダーのデプロイの出力で確認できます。
    Remote member NVA public IP リーダーの NVA IP アドレス。 この値は、リーダーのデプロイの出力で確認できます。
    Connection shared key ゲートウェイ接続を確立しているコンソーシアム ネットワークのメンバー間で事前に確立されたシークレット。
    ベース URL デプロイ テンプレートを取得するベース URL。 デプロイ テンプレートをカスタマイズする場合を除き、既定値を使用します。
  7. [Review + create](レビュー + 作成) を選択します。 検証が成功したら、 [作成] を選択します。

デプロイが完了するまで 20 分以上かかる場合があります。

デプロイが完了したら、Microsoft.Template のデプロイの概要をリソース グループのデプロイ セクションで確認します。 この概要には、コンソーシアム メンバーを接続するための出力値が含まれています。

メンバーのデプロイを確認するには、メンバーの管理サイトを参照してください。 管理サイトのアドレスは、Microsoft.Template デプロイの出力セクションで確認できます。

メンバーのデプロイの概要

図に示すように、メンバーのノードの状態は [実行されていない] です。 この状態は、メンバーとリーダーの間の接続が確立されていないことが原因です。 メンバーとリーダーの間の接続は、双方向の接続です。 メンバーをデプロイすると、テンプレートによってメンバーからリーダーへの接続が自動的に作成されます。 リーダーからメンバーへの接続を作成するには、次の手順に進みます。

メンバーとリーダーを接続する

このテンプレートは、リーダーからリモート メンバーへの接続を作成します。

  1. GitHub からメンバーとリーダーの接続テンプレートをダウンロードします。

  2. Azure Stack Hub テナント ポータルで、[+ リソースの作成]、[テンプレートのデプロイ] を選択して、カスタム テンプレートからデプロイします。

  3. [エディターで独自のテンプレートを作成する] を選択して、新しいカスタム テンプレートを編集します。

  4. 右側の編集ペインで、前の手順でダウンロードしたコンソーシアム メンバー テンプレート JSON をコピーして貼り付けます。

  5. [保存] を選択します。

  6. 以下の設定を行います。

    パラメーター名 説明 値の例
    サブスクリプション コンソーシアム ネットワークのデプロイ先となるサブスクリプション。 消費サブスクリプション
    Resource group コンソーシアム ネットワークをデプロイするリソース グループ EthereumResources
    リージョン リソースの Azure リージョン。 local
    Member name prefix デプロイされたリソースの命名規則の基礎として使用される文字列。 最大 6 文字の英数字を使用します。 eth
    Member route table name リーダーのルート テーブルの名前。 この値は、リーダーのデプロイの出力で確認できます。
    Remote member VNET address space メンバーのアドレス空間。 この値は、メンバーのデプロイの出力で確認できます。
    Remote member NVA public IP 接続先の NVA IP アドレス。 この値は、メンバーのデプロイの出力で確認できます。
    Connection shared key 接続を確立しているコンソーシアム ネットワークのメンバー間で事前に確立されたシークレット。
    Member NVA private IP メンバーの NVA IP アドレス。 この値は、メンバーのデプロイの出力で確認できます。
    ベース URL デプロイ テンプレートを取得するベース URL。 デプロイ テンプレートをカスタマイズする場合を除き、既定値を使用します。
  7. [Review + create](レビュー + 作成) を選択します。 検証が成功したら、 [作成] を選択します。

デプロイが完了した後、リーダーとメンバーが通信を開始するまでに数分かかります。 デプロイを確認するには、メンバーの管理サイトを最新の情報に更新します。 メンバーのノードの状態が [実行中] と表示されます。

デプロイを検証する

次のステップ

Ethereum と Azure の詳細については、「ブロックチェーン テクノロジとアプリケーション」を参照してください。