Geth 私網無法添加輕節點
我有一個帶有 geth 和幾台機器的專用網路設置(2 個用於挖礦的完整節點和一個輕節點)。這三個設備具有以下 IP:
- 礦工1 - 10.42.0.40
- 礦工2 - 10.42.0.250
- 光節點 - 10.42.0.150
我按照建議的設置如下:
- 從新目錄設置帳戶,例如
~/miner1
geth --datadir="./" account new
2. 為所有參與設備創建一個通用的 genesis.json 塊文件(我可以確認這是在所有設備上使用的相同文件){ "config": { "chainID" : 10, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "nonce": "0x01", "difficulty": "0x20000", "mixhash": "0x00000000000000000000000000000000000000647572616c65787365646c6578", "coinbase": "0x0000000000000000000000000000000000000000", "timestamp": "0x00", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x00", "gasLimit": "0x2FEFD8", "alloc": { }
} 3. 啟動創世塊
geth --datadir="./" init genesisblock.json
4. 啟動節點全節點MINER1
geth --datadir="./" --identity "MINER1" --networkid 2008 --rpc --rpcaddr 0.0.0.0 --rpcport 8501 --nodiscover --minerthreads="1" --mine --unlock 0 console
全節點MINER2
geth --datadir="./" --identity "MINER2" --networkid 2008 --rpc --rpcaddr 0.0.0.0 --rpcport 8502 --nodiscover --minerthreads="1" --mine --unlock 0 console
輕節點(樹莓派)
geth --verbosity 6 --datadir="./" --cache=32 --syncmode=light --networkid 2008 --rpc --rpccorsdomain 0.0.0.0 --rpcport="8503" --nodiscover --unlock 0 console
- 使用執行手動發現
admin.addPeer("enodeURL")
從 MINER1 執行以添加 MINER2
admin.addPeer("enode://a90cdb6f0c48b60052fc995fb3a2ae45de28baec009ba526418d46ff0a1e9005f6a79883f6b821b964accdadc5017481409e8494e5ad39f22453c3ecff3b8228@10.42.0.250:30303")
這完美地工作並且可以使用
admin.peers
兩個礦工節點能夠同步來看到
- 在輕節點上執行相同的手動發現添加 MINER1 和 MINER2
admin.addPeer("enode://a902f3231e561546896f4619bb7129e67f3b46ee4bc6a86e35ca1f575444e9f25dcb65bf0e09b02fd2714ce59bbb496a7783486d39eca4a17327ae1bacb3c699@10.42.0.40:30303")
admin.addPeer("enode://a90cdb6f0c48b60052fc995fb3a2ae45de28baec009ba526418d46ff0a1e9005f6a79883f6b821b964accdadc5017481409e8494e5ad39f22453c3ecff3b8228@10.42.0.250:30303")
這會導致
true
來自控制台的響應,但等待和執行admin.peers
不會返回任何對等點 -[]
使用
--verbosity 6
命令行參數,我在執行命令後收到以下資訊admin.addPeer("enodeURL")
:DEBUG[02-10|16:30:21] Adding static node node=enode://a902f3231e561546896f4619bb7129e67f3b46ee4bc6a86e35ca1f575444e9f25dcb65bf0e09b02fd2714ce59bbb496a7783486d39eca4a17327ae1bacb3c699@10.42.0.40:30303 TRACE[02-10|16:30:21] New dial task task="staticdial a902f3231e561546 10.42.0.40:30303" TRACE[02-10|16:30:21] Rejected peer id=a902f3231e561546 addr=10.42.0.40:30303 conn=staticdial err="useless peer" TRACE[02-10|16:30:21] Dial task done task="staticdial a902f3231e561546 10.42.0.40:30303" TRACE[02-10|16:30:21] New dial task task="wait for dial hist expire (29.999612993s)" DEBUG[02-10|16:30:40] Recalculated downloader QoS values rtt=20s confidence=1.000 ttl=1m0s TRACE[02-10|16:30:51] Dial task done task="wait for dial hist expire (29.999612993s)" TRACE[02-10|16:30:52] New dial task task="staticdial a902f3231e561546 10.42.0.40:30303" TRACE[02-10|16:30:52] Rejected peer id=a902f3231e561546 addr=10.42.0.40:30303 conn=staticdial err="useless peer" TRACE[02-10|16:30:52] Dial task done task="staticdial a902f3231e561546 10.42.0.40:30303" TRACE[02-10|16:30:52] New dial task task="wait for dial hist expire (29.999654995s)" DEBUG[02-10|16:31:00] Recalculated downloader QoS values rtt=20s confidence=1.000 ttl=1m0s DEBUG[02-10|16:31:20] Recalculated downloader QoS values rtt=20s confidence=1.000 ttl=1m0s
如您所見,我
err="useless peer"
在跟踪中得到了一個被拒絕的對等體。執行
net.listening
返回true
,我能夠從輕節點 ping MINER1 和 MINER2 主機。執行 geth 命令後,我收到有關網路上未啟用 UPNP 的警告:
DEBUG[02-10|16:28:42] Couldn't add port mapping proto=tcp extport=30303 intport=30303 interface="UPnP or NAT-PMP" err="no UPnP or NAT-PMP router discovered"
但是,當我不打算通過 Internet/WAN 進行網路通信時,這不應該影響 LAN 上的專用網路嗎?
有沒有人能夠解釋為什麼我無法將我的輕節點附加到我的私有網路上的完整節點?
提前感謝你們可以提供的任何幫助,非常感謝!
首先創建這個 genesisblock 文件保存的任何位置:
/genesisblock.json
{ "nonce" : "0x0000000000000055", "mixHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "difficulty": "0x20000", "gasLimit" : "0x800000", "timestamp" : "0x0", "extraData" : "", "coinbase" : "0x0000000000000000000000000000000000000000", "alloc" : {}, "config" : { "chainId": 100, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 } }
然後啟動這個推薦執行的創世文件:
geth --datadir "D:\bolckchain\chaindata" init "c\genesisblock.json"
然後創建專用網路:此程式碼執行:
geth --networkid 13 --port 30303 --datadir "D:\bolckchain\chaindata" console
專用網路創建然後薄霧或圍牆開放
然後另一個節點添加私有網路這個私有網路是
13
然後另一個節點添加這個網路然後 addPeer :範例:
admin.addPeer("enode://a902f3231e561546896f4619bb7129e67f3b46ee4bc6a86e35ca1f575444e9f25dcb65bf0e09b02fd2714ce59bbb496a7783486d39eca4a17327ae1bacb3c699@10.42.0.40:30303")
IP配置(使用ip地址創建enode)IP-192.168.1.114
10.42.0.40 this miens anther computer ip: example 192.168.0.101
然後同行檢查這個推薦執行:
$ admin
新帳戶箱子推薦:
->personal.newAccount()
然後提供密碼並重新輸入密碼,然後創建新帳戶。
並且所有帳戶都列出了此推薦:
->personal.listAccounts
和礦工乙太添加這個推薦執行:
-> miner.start(1)
有時等待和帳戶乙太添加:
和礦工停止推薦:
-> miner.stop()
和塊號資訊這個推薦:
-> eth.getBlock(10)
10地雷10號塊。
刪除對等命令:
-> admin.removePeer()
問題是輕客戶端仍在開發中,預設情況下節點不會連接到輕節點。
設置 geth 的此參數開始:
--lightserv value Maximum percentage of time allowed for serving LES requests (0-90) (default: 0)
例如 :
geth --lightserv 20
有關更多詳細資訊,請參閱此處的官方文件,或此問題如何為輕客戶端執行“伺服器”?