Go-ethereum解析
Go-ethereum readme解析
ブロックチェーンGo-ethereum Geth
文書ディレクトリ
公開された実行可能プログラム
コンパイルされた実行可能プログラムアドレス:
https://geth.ethereum.org/downloads/
ソースコードのコンパイル
コンパイルの前提条件および詳細なコンパイルガイドは、公式サイト
Wiki
を参照してください.Building Ethereum
ソースコードをコンパイルするには、
GO
およびC
のコンパイラをインストールする必要があります.make geth
を実行すると、geth
をコンパイルできます.または、
make all
を実行してすべてのツールキットをコンパイルします.じっこうかのうプログラム
cmdディレクトリのプログラム
ファイル名
ファイル機能
geth
主に以太坊CLIクライアント.イーサー坊クライアントのほとんどの機能が含まれています
abigen
以太坊契約定義変換
bootnode
ピアツーピアネットワークのノード発見プロトコルを実現
evm
EVM(イーサー坊仮想マシン)の開発者ユーティリティバージョン
gethrpctest
rpc-testテストキットの開発者ユーティリティ
rlpdump
RLP符号化変換を行う開発者ユーティリティ
swarm
Swamネットワークのデーモンとツール
puppeth
新しいイーサ坊ネットワークの作成を支援するCLIウィザード
Ethernetプログラムの実行
イーサー坊全ノードの起動
コマンドの実行:
geth console
完全なイーサ坊ノードを起動し、イーサ坊公鎖のすべての状態を同期できます.
テストネットワークの起動
コマンドの実行:
geth --testnet console
Ethernetプログラムを起動し、ノードをテストネットワークに接続します.このシーンでは,主にユーザがイーサー坊プログラムの実行効果だけを知りたいと考えている.この試験ネットワークは、共通認識メカニズムとして
POW
を使用する.有名なテストネットワークに接続する--Rinkeby
コマンドの実行
geth --rinkeby console
このテストネットワークは再生攻撃を回避できる
コンフィギュレーション
ファイルを使用して設定:
geth --config /path/to/your_config.toml
既存の構成をエクスポート:
geth --your-favourite-flags dumpconfig
Dockerによるプログラムの起動
docker run -d --name ethereum-node -v /Users/alice/ethereum:/root \ -p 8545:8545 -p 30303:30303 \ ethereum/client-go
このコマンドは、高速同期モードでGethを起動し、1 Gの永続ストレージを構成します.
RPCを起動するには、
-rpcaddr 0.0.0.0
を追加して外部にアクセスできるようにする必要があります.Gethノードのプログラミングインタフェース
Gethは、プログラムを介してイーサ坊と対話できるプログラマー向けのインタラクティブインターフェースを提供します.Gethには、
JSON-RPC
、WebSockets
、およびIPC
に基づくオープンインターフェースが内蔵されている.IPC
はデフォルトで起動され、すべてのGeth
が提供するAPI
をサポートしているが、HTTP
およびWebSocket
インタフェースは手動で開く必要があり、セキュリティ上の理由(インターネット開発のHTTP/WebSocket
インタフェースはハッカーの攻撃を受ける可能性がある)のため、一部のインタフェースのみを開く.HTTP based JSON-RPAPIオプション:
--rpc
the HTTP-PCサーバ--rpcaddr
HTTP-RPC server listening interface (default: “localhost”) --rpcport
HTTP-RPC server listening port (default: 8545) --rpcapi
API’s offered over the HTTP-RPC interface (default: “eth,net,web3”) --rpccorsdomain
Comma separated list of domains from which to accept cross origin requests (browser enforced) --ws
Enable the WS-RPC server --wsaddr
WS-RPC server listening interface (default: “localhost”) --wsport
WS-RPC server listening port (default: 8546) --wsapi
API’s offered over the WS-RPC interface (default: “eth,net,web3”) --wsorigins
Origins from which to accept websockets requests --ipcdisable
Disable the IPC-RPC server --ipcapi
API’s offered over the IPC-RPC interface (default: “admin,debug,eth,miner,net,personal,shh,txpool,web3”) --ipcpath
Filename for IPC socket/pipe within the datadir (explicit paths escape it) 開発者は、独自のプログラミング環境を用いて、
HTTP
、WS
、IPC
などの方法でGeth
ノードを接続することができ、そのうち、JSON-RPC
をデータ伝送フォーマットとして使用する必要がある.プライベートネットワークの操作(プライベートチェーン)
公式ネットワークで付与されている多くの構成を手動で構成する必要があるため、プライベートネットワークのメンテナンスは複雑です.
プライベートネットワークでの創世状態の定義
JSON
ファイルを編集して創世状態を構成し、コマンドgeth init path/to/genesis.json
を使用して初期化します.集約ノードの作成
実行するすべてのノードを創世状態に初期化し、プライベートネットワーク内のノードが相互に検出されるようにブートノードを起動します.
簡単な起動方法は、コマンドを使用します.
$ bootnode --genkey=boot.key
$ bootnode --nodekey=boot.key
ブートノードを起動して構成します.ブートノードは、他のノードがアクセスできるURLを露出できることを確認する必要があります.
プライベート・ネットワークのメンバー・ノードの起動
集約ノードを起動したら、コマンドを使用します.
geth --datadir=path/to/custom/data/folder --bootnodes=
プライベートメンバーノードを起動します.
--datadir
オプションプライベート接続のデータ格納場所、--bootnodes
集約ノードの場所を指定プライベートネットワークを実行する鉱夫
公有鎖の掘削はGPUが必要とする複雑な任務である.実際の目的のプライベートチェーンでは、CPUベースの単一スレッドプログラムは、ブロックフローを連続的に安定に生成するタスクに適している.
私有連の鉱夫コマンドを開始するには、次の手順に従います.
geth --mine --minerthreads=1 --etherbase=0x0000000000000000000000000000000000000000
そのうちの
は公有チェーンのマークと一致すればよく、掘削による記録は--etherbas
指定のユーザに書き込まれ、--targetgaslimit
オプション制限ブロックのGas値制限、および--gasprice
指定取引価格を追加することもできる