コンテンツへスキップ

Go Ethereum(実行クライアント)

Go Ethereum(Geth)はGoで構築されたイーサリアムの実行クライアントです。

初期設定

  1. インストールに必要なパッケージをインストールする。
sudo apt install -y curl
  1. Gethの公式サイトを開き、「Geth X.XX.XX for Linux」のボタンを右クリックし、URLをコピーする。
  1. Gethのバイナリをダウンロードする。上記で取得した最新のURLを使用してください。
cd ~

curl -LO https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-X.XX.XX-XXXXXXXX.tar.gz
  1. 解凍して/usr/local/binにコピーし、不要になったファイルを削除する。
tar xvf geth-linux-amd64-X.XX.XX-XXXXXXXX.tar.gz

cd geth-linux-amd64-X.XX.XX-XXXXXXXX

sudo cp geth /usr/local/bin

/usr/local/bin/geth version

cd ~

rm -r geth-linux-amd64-X.XX.XX-XXXXXXXX

rm geth-linux-amd64-X.XX.XX-XXXXXXXX.tar.gz
  1. Geth実行用のユーザーgoethを作成する。
sudo useradd --no-create-home --shell /bin/false goeth
  1. ノードを保存するディレクトリを作成し、ユーザーgoethにアクセス許可を与える。
sudo mkdir -p /var/lib/goethereum

sudo chown -R goeth:goeth /var/lib/goethereum
  1. サーバー起動時にGethが自動的に開始されるためのserviceファイルを作成する。
sudo nano /etc/systemd/system/geth.service
  1. 以下を入力し、保存する。(Ctrl + O で保存、Ctrl + X で閉じる)
[Unit]
Description=Go Ethereum
After=network.target
Wants=network.target

[Service]
User=goeth 
Group=goeth
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/geth \
  --datadir /var/lib/goethereum \
  --http \
  --http.addr "0.0.0.0" \
  --maxpeers 15 \
  --cache 16000 \
  --authrpc.jwtsecret /var/lib/jwtsecret/jwt.hex

[Install]
WantedBy=default.target

ExecStart=のパラメータに--maxpeers 20を追加すればデータの送受信を抑えられます。デフォルトは50に設定されています。低くしすぎると同期に支障をきたす場合があります。

※メモリを多く搭載している場合は、gethの利用するメモリ容量を--cache 16000(デフォルトは4096)のように増やしてあげるといいです。メモリ設定を高くしすぎても、gethは自動的に安全圏までしか使わない仕様になってます。

Holeskyテストネット用
[Unit]
Description=Go Ethereum
After=network.target
Wants=network.target

[Service]
User=goeth 
Group=goeth
Type=simple
Restart=always
RestartSec=5
ExecStart=/usr/local/bin/geth \
  --holesky \
  --datadir /var/lib/goethereum \
  --http \
  --http.addr "0.0.0.0" \
  --maxpeers 15 \
  --cache 16000 \
  --authrpc.jwtsecret /var/lib/jwtsecret/jwt.hex

[Install]
WantedBy=default.target
  1. daemonをリロードし、Gethがちゃんと動くか確認する。今後上記のserviceファイルに変更を加えることがあれば、毎回daemonをリロードして変更を適応するようにしてください。
sudo systemctl daemon-reload

sudo systemctl start geth
  1. サーバー再起動時にGethが自動的に開始されるようにする。
    ※サーバーをシャットダウンまたは再起動する際は、必ずsudo systemctl stop gethでGethを正常に終了させてからにしてください。
sudo systemctl enable geth
  1. ログで同期状態を確認する。(Ctrl + Cで閉じる)
sudo journalctl -fu geth

※ビーコンノードが設定されていないと同期は開始しません。

※ログにImported new potential chain segmentが表示されるようになれば同期完了です。

アップデート方法

  1. サーバーのバージョンと公式サイトのバージョンを確認し、アップデートの必要があるか確認する。
/usr/local/bin/geth version
  1. Gethの公式サイトを開き、「Geth X.XX.XX for Linux」のボタンを右クリックし、URLをコピーする。
  1. Gethをダウンロードする。上記で取得した最新のURLを使用してください。
cd ~

curl -LO https://gethstore.blob.core.windows.net/builds/geth-linux-amd64-X.XX.XX-XXXXXXXX.tar.gz
  1. 実行中のgethを止める。
sudo systemctl stop geth
  1. 解凍して/usr/local/binにコピーし、不要になったファイルを削除する。
tar xvf geth-linux-amd64-X.XX.XX-XXXXXXXX.tar.gz

cd geth-linux-amd64-X.XX.XX-XXXXXXXX

sudo cp geth /usr/local/bin

/usr/local/bin/geth version

cd ~

rm -r geth-linux-amd64-X.XX.XX-XXXXXXXX

rm geth-linux-amd64-X.XX.XX-XXXXXXXX.tar.gz
  1. gethを起動する。
sudo systemctl start geth
  1. gethがちゃんと動いていることを確認する。
sudo journalctl -fu geth