コンテンツへスキップ
0%

Gethノードとは何か、その実行方法

Alchemy team headshot

執筆者 Alchemy

2022年4月18日 公開読了時間 1 分

GethとNodeの概要

Ethereumノードとは、Ethereumブロックチェーンネットワークを構成するコンピュータのことです。これらのノードは実際のコンピュータであり、ブロックの検証、保存、そして場合によってはブロックの生成を行うソフトウェアを実行しています。

「クライアント」とは、実際のソフトウェアの名称です。これによりJSON-RPC APIを通じてブロックチェーンとやり取りし、ブロックチェーンの読み取りと検証、スマートコントラクトの読み書きが可能になります。

Gethはこうしたクライアントの一つで、最も広く使われているものの一つです。Go言語で書かれており、Ethereum Foundationに所属する人々や、その他の協力者によって保守・更新されています。

Gethの特徴:

  • 「geth console」で起動できるJavaScriptコンソールが付属しています。
  • このクライアントは他のJavaScriptクライアント(web3js)と連携して動作します。
  • SepoliaなどのTestnetが組み込まれています(または独自のプライベートEthereumネットワークを構築することもできます)。
  • 他のEthereumノードの標準として扱われることが一般的です。

このAlchemyブログでは、Gethノードのインストール方法と実行方法を解説します。

ネットワーク(MainnetとTestnet)とGeth

Gethノードを理解するには、Ethereumのさまざまなネットワークについて理解しておく必要があります。

Ethereumにはすべてのトランザクションが行われる単一の中核ネットワーク(Mainnet)がありますが、それに加えて動作確認のために構築された複数のテストネットワーク(Testnet)も利用されています。localhost以外の環境でブロックチェーンの機能を試したい場合は、こうした「お試し用」のブロックチェーンの利用を検討してください。

1. Mainnet

Ethereum mainnetはEthereumを生成するために使われるネットワークです。ETHはこのネットワーク上でマイニングまたは取引所で取引でき、常に稼働しています。

2. Sepolia

Sepoliaは、現在Geth開発者が使用すべきEthereum Testnetです。Ethereumのコア開発者によって保守されているProof-of-Stakeネットワークであり、Ropsten、Rinkeby、Kovan、Goerli、KilnといったこれまでのTestnetは非推奨となっています。

Sepolia上での開発を始めるには、フォーセットからSepolia ETHを入手してください。

Gethノードとは

Gethのノードタイプの図:Ethereum上のlight、full、archiveノード

Gethを使うと、独自のプライベートEthereumネットワークを構築できます。Ethereumネットワークのブロックチェーンは、genesisブロックと呼ばれるルートブロックから始まります。genesisブロックにはトランザクションが含まれません。

Ethereumノードにはさまざまな種類がありますが、Gethノードは大きくlight node、full node、archive nodeの3種類に分けられます。

Light node

light nodeはすべてのブロックを検証しないため、Ethereumブロックチェーンのコピーを保持しません。そのため、full nodeから得られるデータに依存します。light nodeの運用には、起動の速さ、ストレージ使用量の少なさ、必要な計算資源/メモリの少なさといった利点があります。一方でlight nodeの信頼レベルは低く、多くの場合full nodeに依存する点が課題となります。

Light nodeは:

  • ヘッダーチェーンのみを保存し、それ以外のデータは都度要求します。
  • ブロックヘッダー内のstate rootと照合してデータの正当性を検証します。
  • ギガバイト単位のブロックチェーンデータを保存できない、組み込み機器やスマートフォンなどの低スペックデバイス向けの用途を提供します。

Full node

full nodeは、ブロック内のトランザクションがEthereum Yellow Paperに定められた基準に従っているかを検証します。これは、ネットワーク上でやり取りされるブロックが正当であることを保証するために行われます。この検証によって、full nodeはネットワークをEthereumの要件に沿った状態に保っています。

Full nodeは:

  • ブロックチェーンの全データを保存します。
  • ブロックの検証に参加し、すべてのブロックとstateを検証します。
  • すべてのstateを導出します。
  • ネットワークにデータを提供し、要求に応じて応答します。

Archive node

archive nodeは、トランザクション履歴全体を保存するノードです。ネットワークの健全性と構造はこれらのノードに支えられています。

Archive nodeは:

  • full nodeが保持するすべてのデータに加え、過去のstateのアーカイブを構築します。これは、アカウント残高やオンチェーンデータを照会したい場合や、OpenEthereumを使ってマイニングせずに自分のトランザクションセットを簡単かつ確実にテストしたい場合に必要になります。
  • テラバイト単位のデータを提供します。このため一般ユーザーにとっては扱いにくいものの、ブロックエクスプローラーやウォレット提供者、チェーン分析サービスなどにとっては有用です。
Ethereumノードがネットワーク全体でproof-of-workコンセンサスに到達する図
source: https://ethereum.org/en/developers/docs/nodes-and-clients/

‍

Gethのインストール要件

  • マルチコアCPU(RAM 7GB以上)
  • 約600GB以上の空き容量があるローカルSSDドライブ
  • 任意: キャッシュによる最適化のため16/32GB以上のメモリを使用。キャッシュ機能(’--cache’フラグ)を使うことで、Gethはハードドライブではなくメモリからstateを取得できるようになります。
  • Macユーザー向けのHomebrew
  • Linux/Ubuntu向けのPPA
  • 任意: Parity(詳細はParity から Geth への移行方法を参照)‍

Gethのインストール方法

Gethはパッケージマネージャー経由(MacOSではhomebrew、UbuntuではPPA)でインストールできるほか、直接ダウンロードする方法、docker上で実行する方法、ソースからビルドする方法もあります。

MacOSターミナルでHomebrewを使う場合:

text
Copied
$ brew tap ethereum/ethereum $ brew install ethereum

役立つコマンドの一覧はこちらで確認できます(abigen, bootnode, checkpoint-admin, clef, devp2p, ethkey, evm, faucet, gethなど)。あるいは次のコマンドを実行することもできます:

text
Copied
$ geth --help

Linux/Ubuntu向けPPA:

text
Copied
$ sudo add-apt-repository -y ppa:ethereum/ethereum

go-Ethereumの安定版をインストール:

text
Copied
$ sudo apt-get update $ sudo apt-get install ethereum

Docker:

Dockerをこちらからダウンロードし、以下を実行します:

text
Copied
$ docker pull ethereum/client-go:latest

続けて次を実行します:

text
Copied
$ docker run ethereum/client-go:latest

Gethを実行する

Gethのフォルダ/ルートフォルダを解凍した場所で、ターミナルから次のコマンドを実行します:

text
Copied
$ ./Geth console --testnet --syncmode "light" --rpc --rpcaddr "localhost" --rpcport "8485" --rpccorsdomain "*" --rpcapi="db,eth,net,web3,personal"

これによりただちにGethコンソールに入ります。

netを入力すると、peerがあるかどうかを確認できます。eth.syncingを入力すると、ノードが現在同期中かどうかを確認できます。ノードを再起動するまで同期が始まらない場合もあります。

例えば、eth.syncingを実行すると、以下のようなサンプルクエリが出力されます:

eth.syncingクエリによるブロック同期進捗を示すGethコンソール出力

最後に

Gethは、一般向けのweb/拡張機能ウォレット(MetaMask、Coinbase、Rainbowなど)の多くにすでに組み込まれています。

しかし、マイニングを試してみたい場合や独自のEthereumソフトウェアを開発したい場合には、Gethをインストールして実行するだけの価値があります。また、サードパーティのソフトウェアに頼らず自分でトランザクションに署名するなど、自分のノードとウォレットの鍵を自分で管理したい場合にも有用です。Gethを使えば、Ethereum開発の世界が大きく広がります。

Background gradient

ブロックチェーンで魔法を生み出す

Alchemyは、最も強力なweb3開発者向けプロダクトとツールを、豊富なリソース、コミュニティ、そして卓越したサポートと組み合わせて提供します。