こんにちは!
今回はAmazon Managed Blockchain を使った Ethereum ノードのデプロイ方法についてまとめました! Ethereum ノードを使ってdappsを構築したいという方は、ぜひ参考にしてみてください。
マネージド型の Ethereum ノードを Amazon Managed Blockchain によってサポートすることで、独自の分散型アプリケーション(dapps)の構築が可能になります。この方法なら、ブロックチェーン取引の引き継ぎやブロックチェーンデータの状態確認において、 Ethereum ノードが信頼できる状態で維持されているかといった心配もいりません。
Ethereum ネットワークの分散型アーキテクチャにより、 Ethereum ウォレットを持つすべてのユーザーが許可なしでアクセスできる、外部要因によって止まることのないアプリケーションの作成が可能になります。ゲートキーパーや仲介者のいない、分散型ネットワークで商品やサービスを提供する革新的なdappsは幅広いラインナップになるでしょう。なかでも、分散型金融サービス(DeFi)は急速なイノベーションが起きている分野です。
この記事では、 Managed Blockchain を使用して Ethereum ノードをセットアップし、接続する方法を解説します。
独自のマネージド型 Ethereum ノードをセットアップするには、以下のステップで進めてください。
高可用性やロードバランシング、フェイルオーバーを目的として、異なる Availability Zone に複数のノードをデプロイすることが可能です。
Ethereum ノードのデプロイには約 30 ~ 60 分かかります。これは、ブロックチェーンの現在の状態を新しいボリュームにコピーし、台帳にある最新のブロックを統合するのにかかる時間です。
Managed Blockchain コンソールでノードが利用可能になると、HTTPS または WebSocket 接続のいずれかによるノードアクセスに必要なエンドポイントが表示されます。
ノードに接続するには、 AWS 署名バージョン4の署名プロセスによる認証が必要です。これは、HTTPS と WebSocketに対応する AWS プロバイダの NPM パッケージとあわせて、 web3.js ライブラリを使うことで実行できます。
まず、新しいディレクトリに NodeJS プロジェクトを生成してください。なお、この記事では Node Version Manager (NVM)がインストールされていることを前提とします。
nvm install 16
nvm use 16
mkdir my-ethereum-dapp && cd my-ethereum-dapp
cat <<EOT > package.json
{
"name": "my-ethereum-dapp",
"version": "1.0.0",
"description": "Simple dapp for testing Amazon Managed Blockchain",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Alice B. Coder",
"license": "ISC",
"dependencies": {
"web3": "^1.3.5",
"@aws/web3-http-provider": "^1.0.1"
}
}
EOT
npm install
これにより、ノードへの接続のためにdappsが必要とする依存関係をインストールします。
const Web3 = require('web3');
const AWSHttpProvider = require('@aws/web3-http-provider');
const endpoint = process.env.AMB_HTTP_ENDPOINT;
const web3 = new Web3(new AWSHttpProvider(endpoint));
web3.eth.getNodeInfo().then(console.log);
Programmatic access と AmazonManagedBlockchainFullAccess のポリシーが付いた AWS Identity and Access Management (IAM) ユーザーの作成が必要です。
export AWS_ACCESS_KEY_ID=AFAKEID...
export AWS_SECRET_ACCESS_KEY=AFakeKey...
この操作は、ユーザーがアクセス可能な環境に読み込まれないよう、信頼できるコンテキスト上でのみ行いましょう。
export AMB_HTTP_ENDPOINT=https://nd-<node_id>.ethereum.managedblockchain.us-east-1.amazonaws.com
node index.js
Geth/v1.9.24-stable-cc05b050/linux-amd64/go1.15.5
スクリプトが正常に実行されると、ノード上で動作している geth ( Ethereum プロトコルの公式な Go言語による実装)のバージョンが出力されるはずです。
今回は、Amazon Managed Blockchain を使った Ethereum ノードのデプロイ方法を紹介しました。
Ethereum ノードを使うことで、ゲートキーパーなどによって管理されない分散型アプリケーションの構築が可能となります。分散型金融サービス(DeFi)を中心として、今後も大きな進展が見込める分野だといえるでしょう。
本記事を参考に、ぜひ Amazon Managed Blockchain を使って Ethereum ノードのデプロイに取り組んでみてください。
Amazon Managed Blockchain 、Web3、AWS サーバーレスに関する開発相談は、お気軽にお問い合わせください。
スモールスタート開発支援、サーバーレス・NoSQLのことなら
ラーゲイトまでご相談ください
低コスト、サーバーレスの
モダナイズ開発をご検討なら
下請け対応可能
Sler企業様からの依頼も歓迎