Ethereumノードを自前で建ててセキュリティとプライバシーを向上させよう

参照元:ノードの運用(Ethereum)

こんにちは!弐号です。

MetaMaskなどのウォレットを利用する際には、Ethereumの場合には Infura などのフルマネージドフルノードサービスが接続先のRPCエンドポイントとしてデフォルトで設定されていることが多く、またEVM互換チェーンにおいては公式が提供しているパブリックエンドポイントがデフォルトで設定されることが多いです。

しかしながらそのような第三者の提供するフルノードサービスを利用すると、原理的には送信したトランザクションデータとIPアドレスが記録できてしまうことになりますので、プライバシーの観点からは脆弱であるといえます。

特に、どのIPアドレスがどのウォレットアドレスを持っているかが分かってしまうため、アクセスログなどが漏洩してしまうと、悪意のある第三者によって自分のIPアドレスをターゲットとした攻撃(標的型攻撃)を受けてしまう可能性があります。

また第三者の提供するフルノードでは、返してくるデータの正当性を検証することが出来ないため、セキュリティの観点からも完璧とは言えません。

そこでこの記事では自前で Ethereum のフルノードを作り、MetaMask をその RPC エンドポイントに接続するやり方を解説します。

なお、インフラに関する知識が多少必要となりますので、最低限の Linux コマンドの知識を必要とさせていただきます。

はじめに

Ethereum が Proof-of-Stake (PoS) に移行してからは、実行クライアント (execution client) とコンセンサスクライアントの二つを実行する必要があります。

それぞれ様々な実装が存在するのですが、最もユーザ数が多く安定しているものの一つとしてそれぞれ geth (go-ethereum) および Prysm がありますので、この記事ではこの二つのクライアントを利用します。

これ以外のクライアントでも基本的には似たような操作方法で実行できますので、これ以外のクライントを選択される方も本記事を参考にして実行していただければと思います。

geth

geth は下記のURLからダウンロードすることが出来ますので、お使いのOSにあった最新のものをダウンロードしてください。

https://geth.ethereum.org/downloads

またハードウェア要件として

  • CPU: クアッド (4) コア
  • メモリ: 16GB
  • SSD: 2TB

が推奨されておりますので、これ以上のスペックを持つクラウドインスタンスなどを用意しましょう。

なお、必要なディスク容量はブロックチェーンが成長するのに合わせて増えていきますので、拡張可能な外部ストレージをアタッチするなどして利用することを推奨します。

クライアントのバイナリと、マシンが用意できたら次のコマンドを実行して起動します。

$ geth --http --http.api eth,net,engine,admin --http.addr 0.0.0.0

同期には、利用するマシンのスペックやネットワーク帯域にも依存しますが、一週間くらいはかかると思いますので同期されるのを気長に待ちましょう。

Prysm

Prysm は以下のページでお使いの環境を選択することで適切なインストール方法が表示されるようになります。

https://docs.prylabs.network/docs/install/install-with-script

参考までに MacOS または Linux の場合には下記のようなコマンドとなります。お使いの実行環境によってこちらは変更してください。

$ mkdir prysm && cd prysm
$ curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod +x prysm.sh

実行バイナリがダウンロードできたら次のコ

ここから先は、会員限定のコンテンツになります。残り全てを見るには、サロン入会案内ページから会員登録をよろしくおねがいします。

関連記事