Ethereum ブロックチェーン ノードを作成する

このページでは、コンソールまたは API 呼び出しを使用して、Blockchain Node Engine で Ethereum ブロックチェーン ノードを作成する方法について説明します。

コンソールの使用

Google Cloud コンソールで、[Blockchain Node Engine] ページに移動します。

ブロックチェーン ノード エンジンに移動

デフォルトでは、[ノード] リストページが表示されます。ブロックチェーン ノードが作成されていない場合は、作成するよう求められます。

ブロックチェーン ノードを作成するには:

  1. [作成] をクリックします。[Create a blockchain node] ウィザードが開きます。

    ブロックチェーン ノード エンジンのノードの作成ウィザード

  2. ノード情報を構成します。

    1. ブロックチェーン ノードの名: ノードの名前を入力します。英小文字(a ~ z)、数字、ハイフンのみ使用できます。例: my-node
    2. ブロックチェーンのタイプ: ブロックチェーンの名前を選択します。例: ETHEREUM
    3. [続行] をクリックします。
  3. ブロックチェーン情報を構成する: ブロックチェーン固有の情報を構成します。たとえば、Ethereum ノードを構成するには、次のオプションを選択します。以下の情報を後で変更することはできません。

    1. ネットワーク: ネットワークの名前。たとえば、MAINNET のようにします。
    2. ノードタイプ: ブロックチェーン ノードのタイプ。例: FULL
    3. 実行/コンセンサス クライアント: クライアント ソフトウェアの実行/コンセンサス レイヤの名前。たとえば、GETH/LIGHTHOUSE です。サポートされている組み合わせについては、サポートされている構成をご覧ください。
    4. 追加の名前空間を有効にする: Ethereum Geth 実行クライアントを使用する場合のオプションの JSON-RPC 名前空間。例: debug
    5. [続行] をクリックします。
  4. ネットワーク情報を構成する:

    1. リソースをホストする地理的位置を選択します。例: us-central1この情報を後で変更することはできません。サポートされているロケーションをご覧ください。
    2. エンドポイントを構成する: デフォルトでは、一般公開されているエンドポイントが作成されます。プライベート エンドポイントの使用の詳細については、Private Service Connect をご覧ください。
    3. [続行] をクリックします。
  5. ラベルを追加する:

    1. Key-Value ペアを入力します。[アイテムを追加] をクリックして、Key-Value ペアを追加します。
    2. [続行] をクリックします。
  6. [作成] をクリックします。ブロックチェーン ノードが作成され、[ノード] リストが表示されます。ブロックチェーン ノードが使用可能になるまで、[ステータス] は [作成中] と表示され、その後 [実行中] に変わります。

API の使用

API を使用してブロックチェーン ノードを作成するには、ブロックチェーン ノードの仕様を含む POST リクエストを API に送信します。curl コマンドを使用して API にリクエストを送信する例を次に示します。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "blockchainType": "BLOCKCHAIN_TYPE",
    "privateServiceConnectEnabled" : false,
    "ethereumDetails": {
      "consensusClient": "CONSENSUS_CLIENT",
      "executionClient": "EXECUTION_CLIENT",
      "apiEnableAdmin": false,
      "apiEnableDebug": false,
      "network": "NETWORK",
      "nodeType": "NODE_TYPE"
    },
    "labels": {
      "LABEL_KEY": "LABEL_VALUE"
    }
  }' \
https://blockchainnodeengine.googleapis.com/v1/projects/PROJECT_ID/\
locations/LOCATION/blockchainNodes?blockchain_node_id=NODE_NAME

上記の例の変数は、次のように実際の値に置き換える必要があります。

  • BLOCKCHAIN_TYPE: ブロックチェーンの名前。例: ETHEREUM
  • privateServiceConnectEnabled: 省略可。デフォルトでは無効です。Private Service Connect を有効にするには、true に設定します。
  • CONSENSUS_CLIENT: クライアント ソフトウェアのコンセンサス レイヤの名前。例: LIGHTHOUSE。サポートされている組み合わせについては、サポートされている構成をご覧ください。
  • EXECUTION_CLIENT: クライアント ソフトウェアの実行レイヤの名前。例: GETH。サポートされている組み合わせについては、サポートされている構成をご覧ください。
  • apiEnableAdmin: Ethereum Geth 実行クライアントを使用する場合のオプションの JSON-RPC 名前空間。デフォルトでは無効にされています。有効にするには true に設定します。
  • apiEnableDebug: Ethereum Geth 実行クライアントを使用する場合のオプションの JSON-RPC 名前空間。デフォルトでは無効にされています。有効にするには true に設定します。
  • NETWORK: ネットワークの名前。例: MAINNET
  • NODE_TYPE: ブロックチェーン ノードのタイプ。例: FULL
  • PROJECT_ID: 実際の Google Cloud プロジェクト ID。例: my-project-id
  • LOCATION: リソースをホストするロケーション。この情報を後で変更することはできません。(たとえば、us-central1)。サポートされているロケーションをご覧ください。
  • NODE_NAME: ノードに指定する名前。小文字(a ~ z)、数字、ハイフンのみ使用できます。例: my-node
  • labels: Key-Value ペア。上記の例では、キーは LABEL_KEYmy-label-key など)で、値は LABEL_VALUEmy-label-value など)です。

上記のコマンドに対するレスポンスの例を次に示します。

{
  "name": "projects/my-project-id/locations/us-central1/operations/operation-1683664820863-5fb48c391814a-a546e3e6-ddee30ad",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.blockchainnodeengine.v1.OperationMetadata",
    "createTime": "2023-05-09T20:40:20.979144857Z",
    "target": "projects/my-project-id/locations/us-central1/blockchainNodes/my-node",
    "verb": "create",
    "requestedCancellation": false,
    "apiVersion": "v1"
  },
  "done": false
}

上記の例では、OPERATION_ID が返されます。

operation-1683664820863-5fb48c391814a-a546e3e6-ddee30ad

この値を使用して、ブロックチェーン ノードの作成のステータスを取得できます。

バリデータの構成

顧客管理のバリデータ クライアントで Blockchain Node Engine ビーコン クライアントを使用しているお客様をサポートするために、追加のオプションがあります。

注: これらのオプションは API を使用してのみ使用できます。

バリデータ オプションを設定してブロックチェーン ノードを作成するには、次のような curl コマンドを使用します。

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "blockchainType": "BLOCKCHAIN_TYPE",
    "ethereumDetails": {
      "consensusClient": "CONSENSUS_CLIENT",
      "executionClient": "EXECUTION_CLIENT",
      "apiEnableAdmin": false,
      "apiEnableDebug": false,
      "network": "NETWORK",
      "nodeType": "NODE_TYPE",
      "validatorConfig": {
        "beaconFeeRecipient": "BEACON_FEE_RECIPIENT",
        "mev_relay_urls": "MEV_RELAY_URL",
      }
    },
  }' \
https://blockchainnodeengine.googleapis.com/v1/projects/PROJECT_ID/\
locations/LOCATION/blockchainNodes?blockchain_node_id=NODE_NAME

ビーコン料金の受取人

デフォルトの料金受取人はビーコン クライアントで設定できます。これは、バリデータ クライアントで料金受取人が指定されていない場合に使用されます。Lighthouse のドキュメントでは、これは推奨される料金の受取人として記載されていますが、実行クライアントとビーコン クライアントの両方が信頼できるため、指定されている場合は常に受取人が使用されます。

ビーコン料金の受取人は、「0x」で始まる Ethereum アドレスである必要があります(例:「0xb469d8b44a3f559a3386af6273ec4a71da88a15a」)。

MEV リレー URL

Blockchain ノードには、マネージド MEV ブースト サービスが含まれています。これにより、お客様は外部ブロックビルダー サービスを使用して、これらのサービスが提供する最適なブロックを選択し、そのブロックを提案できます。

特定のサービスが推奨または承認されているわけではありません。ここで選択したサービスの確認はお客様の責任となります。

MEV リレー URL は、URL のカンマ区切りのリストとして指定します(例: https://mev1.example.org/,https://mev2.example.org/)。

サポートされている構成

Blockchain Node Engine は、さまざまな構成をサポートしています。ノードを作成するには、次のいずれかの組み合わせを使用します。

nodeType ネットワーク executionClient consensusClient
FULL MAINNET GETH Lighthouse
FULL TESTNET_GOERLI_PRATER GETH Lighthouse
FULL TESTNET_SEPOLIA GETH Lighthouse
FULL TESTNET_HOLESKY GETH Lighthouse
アーカイブ MAINNET ERIGON Lighthouse