Go-Ethereum

如何在geth中使用專用網路?

  • December 29, 2019

我正在關注這個答案:

如何建立私有乙太坊網路?

但我的結果miner.start()將返回null

是因為我的geth版本是1.6.6-stable

也歡迎任何開發 dApp 的初學者指南。

這就是我在 Ubuntu 上使用 geth 執行我的專用網路的方式:

創建一個簡單的 genesis.json 文件,例如

{
 "config": {
   "chainId": 1907,
   "homesteadBlock": 0,
   "eip155Block": 0,
   "eip158Block": 0
 },
 "difficulty": "40",
 "gasLimit": "2100000",
 "alloc": {}
}

創建第一個節點並確保它正常工作:

$ mkdir node1
$ geth --datadir node1 account new
$ geth --datadir node1 account new
$ geth --datadir node1 init genesis.json
$ geth --datadir node1 --networkid 98765 console
> miner.start(1)

一旦你在這個節點上完成了一些探勘,停止礦工miner.stop()(這不是絕對必要的,但它很方便,所以你在嘗試複製/粘貼 enode 地址時不會在控制台中看到太多資訊消息,接下來的是)。

確保你知道第一個節點的 enode 地址,你需要這個來連接你的第二個節點:

> admin.nodeInfo
{  enode: "enode://08993401988acce4cd85ef46a8af10d1cacad39652c98a9df4d5785248d1910e51d7f3d330f0a96053001264700c7e94c4ac39d30ed5a5f79758774208adaa1f@[::]:30303", 
...

現在讓我們執行相同的步驟來設置第二個節點:

$ mkdir node2
$ geth --datadir node2 account new
$ geth --datadir node2 account new
$ geth --datadir node2 init genesis.json
$ geth --datadir node2 --networkid 98765 --port 30304 --bootnodes "enode://08993401988acce4cd85ef46a8af10d1cacad39652c98a9df4d5785248d1910e51d7f3d330f0a96053001264700c7e94c4ac39d30ed5a5f79758774208adaa1f@127.0.0.1:30303" console

注意我們必須改變

$$ :: $$到主機的IP地址。 啟動此節點後,請稍等片刻,然後您最終會看到您在第一個節點上探勘的塊正在同步。

如果您想了解更多詳細資訊,我已經在這裡寫下了我開始使用 geth、私有網路和智能合約的更多經驗:https ://alanbuxton.wordpress.com/2017/07/19/first-steps-with-ethereum-私有網路和智能合約-on-ubuntu-16-04/

到目前為止,我也有一個私人測試網執行良好。不過,我還沒有開始 dApp 開發——事實上,我需要一個足夠好的 dApp 教程。就你的miner.start()回歸null而言,這幾乎沒問題。理想情況下,它應該返回true,但如果沒有,請使用命令檢查系統是否正在探勘eth.mining。如果它正在返回true,則表示正在開採區塊。

還要記住,如果eth.mining在很長一段時間內為真,比如一兩個小時,但eth.blockNumber仍然返回 0,那是因為挖礦至少需要 4GB RAM。因此,如果您使用的是虛擬機,請確保為其提供足夠的 RAM。

引用自:https://ethereum.stackexchange.com/questions/18964