gethを使用してイーサー坊のプライベートチェーンを構築

6373 ワード

1.創世ブロック初期化
1)プライベートチェーン専用フォルダの作成
@ubuntu:~$ mkdir Project
@ubuntu:~$ mkdir myChain

2)創始ブロックファイルを作成ネットワークの「創世」(genesis)状態を作成します.これは小さなJSONファイルに書かれています(たとえばgenesis.jsonと名付けられています).myChainディレクトリに保存します.
{
	"config": {
		"chainId": 150
	},
	"difficulty": "200", 
	"gasLimit": "2100000", 
	"alloc": {
	"2847cd3B0df63d08f112A1ce658d82F5D85d9Ad0": { "balance": "3000000000000000000" }
	}
}

創世ブロック解析
名前
意味
chainId
ブロックチェーンネットワークidは、他のネットワークノードに接続する際に使用され、イーサ坊パブリックネットワークidは1であり、異なるidのネットワークノード間では互いに接続できない
homesteadBlock
Homesteadはイーサー坊の2番目の主要バージョンで、1番目はFrontierです.この値は「0」に設定されています.現在Homesteadバージョンを使用していることを示しています.
eip155Block
eip(ethereum improvement proposal)は、「0」に設定すればよい
eip158Block
eip(ethereum improvement proposal)は、「0」に設定すればよい
alloc
口座番号と口座番号を予め設定するためのエーテル貨幣の数は、私有チェーンの掘削が容易であるため、貨幣の口座番号を予め設定する必要はなく、必要に応じて作成すればよい.
coinbase
鉱夫の口座番号は、勝手に記入すればいいです.
difficulty
現在のブロックを設定するのは難しく、難易度が高すぎると掘削時間が長くなり、計算力と待機時間を節約するために小さな値を設定できます.
extraData
勝手に記入して、あなたの個性的な情報を記入することができますが、16進数の文字列でなければなりません.
gasLimit
この値は、プライベートチェーンが作成されているため、ブロックに含まれる取引情報の合計を制限するためにGASの消費総量制限を設定します.
nonce
掘削用の64ビットの乱数で、勝手に記入できます.Nonceとmixhashの設置はエーテル坊黄書を満たす必要があり、4.3.4.Block Header Validity,(44)章で説明した条件
mixhash
nonceと組み合わせて掘削に用いられ、前のブロックの一部から生成されたhash.注意nonceとの設置はエーテル坊の黄書を満たす必要がある、4.3.4.Block Header Validity,(44)章で説明した条件
parentHash
前のブロックのハッシュ値は、創世ブロックなので、この値は0です
timestamp
タイムスタンプ
3)創世ブロック初期化
@ubuntu:~/Project/myChain$ geth --datadir . init genesis.json

初期化が完了すると、gethとkeystoreの2つのフォルダがディレクトリに追加されます.
  • geth:チェーン上のブロックデータ
  • を保存する
  • keystore:チェーン上のアカウント情報
  • を保存する
    2.プライベートチェーンノードの起動
    現在のディレクトリの下でgethを実行すると、このプライベートチェーンが起動します.注意:networkedを創世ブロック構成のchainIdと一致させるには
        
    @ubuntu:~/Project/myChain$ geth --datadir . --networkid 150 --nodiscover console
          
    @ubuntu:~/Project/myChain$ geth --networkid 150 --datadir "." --identity "kexin" --rpc --rpcport "8545" --rpcaddr "localhost" --port "30303" --nodiscover --allow-insecure-unlock --rpcapi "eth,net,web3,personal,admin,shh,txpool,debug,miner" console
    

    パラメータ
    意味
    networkid
    ネットワークIDは、同一のネットワークIDを有するブロックは原則として接続可能であり、idは1がイーサ坊メインネットワークであり、1−4ネットワークはすでにイーサ坊自身が占有しているため、1−4を独自のプライベートチェーンネットワークIDとして使用することはできない
    datadir
    ブロックチェーンデータの格納場所の指定
    identity
    現在のネットワークの名前を示すブロックチェーンの表示
    rpc
    rpc通信の開始
    rpcport
    HTTP-RPCサービス傍受ポート番号を指定し、デフォルトは8545
    rpcaddr
    HTTP-PCサービスipアドレス、デフォルトは「localhost」
    port
    他のノードとの接続に使用するポート番号を指定します(デフォルトは30303).
    nodiscover
    ノード発見メカニズムをオフにし、同じ初期構成の見知らぬノードの追加を防止
    rpcapi
    接続可能なrpcのクライアントを設定します.一般的にdb,eth,net,web 3です.
    console
    コマンドラインモードを起動し、Gethでコマンドを実行できます.
    3.gethコンソールの簡単な操作
    具体的なgethコンソールコマンドは私のこのブログの転送ドアをジャンプすることができます:gethコンソールコマンド
    Geth ConsoleはインタラクティブなJavaScript実行環境で、イーサー坊を操作するためのJavaScriptオブジェクトが内蔵されています.これらのオブジェクトを直接呼び出してブロックチェーン上の関連情報を取得することができます.これらのオブジェクトは主に次のとおりです.
  • eth:主にブロックチェーンへのアクセスとインタラクティブな関連方法を含む.
  • net:主にp 2 pネットワークの状態を表示する方法を含む.
  • admin:主に管理ノードに関連する方法を含む.
  • miner:主に掘削に関するいくつかの方法を含む.
  • personal:アカウント管理を含む方法;
  • txpool:トランザクションメモリプールを表示する方法を含む.
  • web 3:以上のすべてのオブジェクトを含み、いくつかの一般的な方法も含まれています.

  • 一般的なコマンド:
  • personal.新Account(‘アカウントパスワード’):アカウントの作成;
  • personal.unlockAccount():アカウントのロックを解除します.
  • eth.Accounts:システム内のアカウントをリストします.
  • eth.getBalance(eth.accounts[0]):勘定残高を表示し、値を返す単位はWeiです.
  • eth.blockNumber:現在のブロックの高さをリストします.
  • eth.getTransaction():取引情報を取得します.
  • eth.getBlock():ブロック情報を取得する;
  • eth.coinbase:鉱夫口座の住所を表示する最初の方法で、鉱夫口座のデフォルトは最初の口座
  • です.
  • web3.eth.coinbase:第2の鉱夫口座の住所を表示する方法
  • miner.setEtherbase(eth.accounts[1]):eth.Accounts[1]は鉱夫口座住所
  • である
  • miner.start():掘削を開始する;
  • miner.stop():掘削を停止する;
  • web3.fromWei():Weiをエーテル通貨に換算します.
  • web3.toWei():太貨でWeiに換算する.
  • txpool.status:トランザクションプールのステータス;
  • eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:web 3.toWei(4,‘ether’)}):最初の口座から2番目の口座へ4 etherを転送する.

  • 関連リンク:nodeをインストールします.js以太坊ブロックチェーンブラウザ:以太坊ブロックブラウザはどのように以太坊ブロックチェーンブラウザの構築をインストールします以太坊ブロックチェーンブラウザ構築(ページがブロック情報を表示できないことを解決します)