このプロジェクトについて

Go Ethereum(geth)は、EthereumプロトコルのGo実行レイヤー実装です。Ethereumメインネット、テストネット、プライベートチェーン上でノードを動作させたりアプリケーションを構築するためのコマンドラインクライアント、ライブラリパッケージ、開発者向けツールを提供します。 ## ビルド このプロジェクトにはGo 1.23以降とCコンパイラが必要です。`make geth`でメインクライアントを、`make all`でユーティリティ一式をビルドします。ビルド済みバイナリアーカイブはgeth.ethereum.org/downloadsで公開されています。 ## 実行可能ファイル リポジトリには`cmd`ディレクトリ内に複数のコマンドが含まれます。 - `geth` – 主なEthereum CLIクライアント。フルノードまたはアーカイブノードとして動作し、メインネット、テストネット、プライベートネットワークに接続可能で、HTTP、WebSocket、IPC経由でJSON-RPCエンドポイントを公開します。 - `devp2p` – フルブロックチェーンを動作させずにネットワーク層を操作するためのユーティリティ。 - `abigen` – EthereumコントラクトのABI(および任意でSolidityソース)をコンパイル時に型安全なGoパッケージに変換するソースコードジェネレーター。 - `evm` – 設定可能な環境でバイトコードのスニペットを実行するための開発版Ethereum Virtual Machine。オPCODEレベルのデバッグに有用です。 - `rlpdump` – バイナリRLPダンプを読みやすい階層表現に変換するツール。 ## gethの起動 一般的な使い方として`geth console`があり、スナップ同期されたフルノードを起動してインタラクティブなJavaScriptコンソールを提供します。`--sepolia`フラグは、別個のブートノード、ネットワークID、ジェネシス状態、データディレクトリを使用してSepoliaテストネットワークに接続します。設定は`geth --config`でTOMLファイルから供給でき、`dumpconfig`で既存の設定をエクスポートできます。 最小限のハードウェア要件はCPUコア4以上、RAM 8GB、空き容量2TB以上の高性能SSD、ダウンロード帯域幅8 Mbit/sです。長期的な成長を想定した推奨仕様はこれより高くなります。 Dockerクイックスタートが提供されています: `docker run -d --name ethereum-node -v /Users/alice/ethereum:/root -p 8545:8545 -p 30303:30303 ethereum/client-go`。他のホストからのRPCアクセスには、明示的に`--http.addr 0.0.0.0`を設定する必要があります。 ## プログラムによるアクセス gethはHTTP、WebSocket、IPC経由のJSON-RPC APIをサポートします。IPCインターフェースはデフォルトで有効になり全APIを公開しますが、HTTPとWSは明示的に有効化する必要があり、セキュリティを重視したサブセットを公開します。一般的なフラグには`--http`、`--http.addr`、`--http.port`、`--http.api`、`--http.corsdomain`、`--ws`、`--ws.origins`、`--ipcdisable`、`--ipcpath`があります。READMEでは、公開されたEthereumノードが悪意あるアクターにより積極的に探索されるため、HTTP/WS APIを公開する際はセキュリティリスクがあると警告しています。 ## プライベートネットワーク Merge以降、gethノードのプライベートネットワークを構築するには、対応するビーコンチェーンの設定も必要です。3つの代替手段が文書化されています。 - Simulated Backend – Go CIでのスマートコントラクトテスト用。 - Dev Mode – テスト用の便利な単一ノード環境。 - Kurtosis – マルチノードテストネットワークの設定用。 ## 貢献 貢献は`master`ブランチへのプルリクエストで受け付けます。コードは公式のGoフォーマットおよびコメント指針に従う必要があり、コミットメッセージには変更したパッケージのプレフィックスを付ける必要があります。より複雑な変更はDiscord上でコア開発者と協議してください。Webサイトへの貢献は`website`ブランチを対象とします。 ## ライセンス go-ethereumライブラリ(`cmd`外のコード)はLGPL v3.0、バイナリ(`cmd`内のコード)はGPL v3.0のライセンスです。