Amazon Web Services ブログ
Amazon Managed BlockchainでEthereumノードをデプロイしてみよう
このブログは、Carl Youngblood によって書かれたDeploy an Ethereum node on Amazon Managed Blockchainを翻訳したものです。
Amazon Managed Blockchain のEthereumノードのサポートにより、ブロックチェーン取引の中継やブロックチェーンデータの状態問い合わせのための独自の分散型アプリケーション(dapps)をEthereumノードのメンテナンスを気にすることなく構築可能になります。
Ethereumネットワークの分散型アーキテクチャは、Ethereumウォレットを持つすべてのユーザーがパーミッションなしでアクセスできる、止められないアプリケーションを作成することを可能にします。ゲートキーパーや仲介者を介さずに分散型で商品やサービスを提供する革新的なDappsが増え続けています。なかでも分散型金融サービス(DeFi)は急速なイノベーションが起きている分野です。
この記事ではManaged Blockchainを使用してEthereumノードをセットアップし、接続する方法を説明します。
Ethereumノードのセットアップ
独自のマネージドEthereumノードをセットアップするには、以下の手順を実行します。
- Managed Blockchainのコンソールで、Join public networkを選択します。
2. Blockchain networkはEthereumメインネット、RopstenおよびRinkebyテストネットにEthereumノードを展開することができます。(訳注: 2022年時点でGoerliも追加されています)
3. Blockchain instance typeについては、dappが読み取り要求で経験すると予想される負荷のレベルに応じて、適切なインスタンスタイプを選択します。書き込み要求に関しては、Ethereumのトランザクションレートに関する現在のグローバルな制約を考えると、ユーザーがネットワークに送信できる修正トランザクションの数を維持するには、通常、1つのノードで十分です。
4. Ethereum node typeは、Full nodeを選択します。
5. Availability Zone(AZ)を選択します。
高可用性、ロードバランシング、フェイルオーバーのために、異なるAvailability Zoneに複数のEthereumノードをデプロイすることができます。
Ethereumノードは、デプロイに約30~60分かかります。これは、ブロックチェーンの現在の状態を新しいボリュームにコピーし、最新のブロックを同期させるのにかかる時間です。
Ethereumノードの接続
Managed BlockchainコンソールでEthereumノードが利用可能になると、HTTPSおよびWebSocket接続のエンドポイントが表示されます。
Ethereumノードに接続するにはAWS Signature Version 4 signing processを使ってノードと認証する必要があります(訳注: 2022年時点ではToken Based AccessのリリースによりSigV4以外の方法も追加されています)。これは HTTPS と WebSockets のためのAWSプロバイダNPMパッケージとともに、人気のある web3.js ライブラリを使用して行うことができます。まず、新しいディレクトリに NodeJS プロジェクトを生成します。この記事ではNode Version Manager(NVM) がインストールされていることを前提にしています。
- bashターミナルに以下のコードを入力し、プロジェクトを初期化し、必要な依存関係をインストールします。
2. index.js
というファイルを作成し、ノードに接続します。
プログラムアクセス権を持つAWS Identity and Access Management (IAM) ユーザーを作成し、 AmazonManagedBlockchainFullAccess
ポリシーをアタッチする必要があります。
3. IAMコンソールで、ナビゲーションペインから「User groups」を選択します。
4. 「Create group」を選択します。
5. グループ名に名前を入力します(この記事の場合はAMBUsers
)。
6. 検索フィルターにblockchain
と入力し、フィルタされたリストから AmazonManagedBlockchainFullAccess
ポリシーをグループにアタッチします。
7. 「Create group」を選択します。
8. amb-user
というユーザーを追加します。
9. Access typeはProgrammatic accessを選択
10.「Next」を選択します。
11. 先ほど作成したグループにユーザーを追加します。
12. レビューのページが表示されるまで「Next」を選択し、ユーザーを作成します。
13. AWSアクセスキーIDとシークレットアクセスキーの認証情報は、後で使用するために保存してください。
14. ユーザーを作成したら、そのユーザーの認証情報を環境にエクスポートします。
これはユーザーがアクセスできる環境では読み込まれない、信頼できるコンテキストでのみ行う必要があります。
15. EthereumノードのエンドポイントURLをエクスポートします。
index.js
スクリプトを実行して、Ethereumノードに接続します。
スクリプトが正常に実行されると、ノード上で動作しているgeth(Ethereumプロトコルの公式Golang実装)のバージョンが出力されるはずです。
まとめ
おめでとうございます。マネージドEthereumノードへの接続に成功しました。後続のブログ記事では、複数のマネージドEthereumノードにまたがるdappリクエストのバランスをとり、Metamask のような人気のあるブラウザウォレット拡張機能を通じてEthereum APIをユーザーに提供する、より高度なアーキテクチャパターンを紹介します。
このブログは、パートナーソリューションアーキテクトの毛利元三が翻訳しました。原文はこちらです。