Go-ethereum解析


Go-ethereum readme解析


ブロックチェーンGo-ethereum Geth

文書ディレクトリ

  • Go-ethereum readme分析
  • が発行する実行可能プログラム
  • ソースコード
  • をコンパイル
  • 実行可能プログラム
  • cmdディレクトリのプログラム
  • イーサー坊プログラム
  • を実行
  • イーサー坊全ノード
  • を起動
  • 試験ネットワーク
  • を起動する
  • は有名なテストネットワークに接続されています.Rinkeby
  • 構成
  • Dockerイニシエータ
  • を利用する.
  • 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-RPCWebSockets、および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)

  • 開発者は、独自のプログラミング環境を用いて、HTTPWSIPCなどの方法で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指定取引価格を追加することもできる