我有一个本地测试设置,3个Geth节点,其中2个是矿工(团)和1个非矿工。
我注意到提交的事务从未与其他节点同步。
因此,在非矿商上,提交的交易永远不会到达区块。
这不可能是克立克的正常行为吧?
Node1:geth --identity node1 --datadir node1/ --syncmode full --port 30304 --rpc --rpcport 8545 --bootnodes "enode://c0f96309ca5918bd0de1b69a0f062a590c7877681d7d69a370f3174cc3f137f200e024e86482ed3718c074a4d70488e09b7ff154dc5210ee0e890773646a25d8@127.0.0.1:30304" --nat none --networkid 2640 --gasprice 1 -unlock 0xe148888d6a894101a39b84da4d5f24c97f0ba3bd --password node1/password.txt --mine console
Node2:geth --identity node2 --datadir node2/ --syncmode full --port 30305 --rpc --rpcport 8555 --ipcdisable --bootnodes "enode://c0f96309ca5918bd0de1b69a0f062a590c7877681d7d69a370f3174cc3f137f200e024e86482ed3718c074a4d70488e09b7ff154dc5210ee0e890773646a25d8@127.0.0.1:30304" --nat none --networkid 2640 --gasprice 1 -unlock 0x9d6189a2082a9df61d432cf384cb1f606cea1528 --password node2/password.txt --mine console
Node3:geth --identity node3 --datadir node3/ --syncmode full --port 30306 --rpc --rpcport 8556 --ipcdisable --bootnodes "enode://c0f96309ca5918bd0de1b69a0f062a590c7877681d7d69a370f3174cc3f137f200e024e86482ed3718c074a4d70488e09b7ff154dc5210ee0e890773646a25d8@127.0.0.1:30304" --nat none --networkid 2640 --gasprice 1 -unlock 0xd134a62fb3d349c8ba2991dfba48e091544a8a13 --password node3/password.txt console
(关于Node1,Node2,Node3):
> net.peerCount
2正在挖掘
在Node3上:
INFO [05-07|14:31:42] Imported new chain segment blocks=1 txs=0 mgas=0.000 elapsed=0s mgasps=NaN number=2375 hash=8271c9…543b5e cache=0.00B
INFO [05-07|14:31:47] Imported new chain segment blocks=1 txs=0 mgas=0.000 elapsed=0s mgasps=NaN number=2376 hash=9442d8…b5b467 cache=0.00B
INFO [05-07|14:31:52] Imported new chain segment blocks=1 txs=0 mgas=0.000 elapsed=0s mgasps=NaN number=2377 hash=611ee5…02ba2e cache=0.00B但是,如果我在非矿工Node3上提交了一项交易:
> personal.sendTransaction({from:'0xd134a62fb3d349c8ba2991dfba48e091544a8a13', to:'0xE0ca7d355F0CC6C1EECDA7Ce081353b7D87Aa1d7', value: 1},'redacted')
INFO [05-07|14:31:16] Submitted transaction fullhash=0x9d1f3fa3a4c0037daed01371bd57d2ca6876cdb3d088ec7917656f272ce6485d recipient=0xE0ca7d355F0CC6C1EECDA7Ce081353b7D87Aa1d7
"0x9d1f3fa3a4c0037daed01371bd57d2ca6876cdb3d088ec7917656f272ce6485d"然后什么都不会发生。事务永远处于“待定”状态:
> txpool.inspect
{
pending: {
0xD134A62fB3D349c8ba2991dFbA48E091544A8a13: {
0: "0xE0ca7d355F0CC6C1EECDA7Ce081353b7D87Aa1d7: 1 wei + 90000 gas × 0 wei"
}
},
queued: {}
}空块仍在Node3上出现:
> INFO [05-07|14:31:17] Imported new chain segment blocks=1 txs=0 mgas=0.000 elapsed=0s mgasps=NaN number=2370 hash=33498f…5077c1 cache=0.00B在其他节点上,根本没有挂起的事务:
Node1,Node2:
> txpool.inspect
{
pending: {},
queued: {}
}为什么这样做,以及如何让交易在非矿工身上工作?
运行Geth/v1.8.3-stable-329ac18e/windows-amd64/go1.10
发布于 2018-05-07 20:08:33
这些矿商是从--gasprice 1开始的,但交易中没有具体说明任何天然气价格,因此它违约了0,在计算"90000 gas × 0 wei“时也可以看到这一点。
0< 1,因此该交易被矿商拒绝,因为价格过低(它在本地工作,因为本地交易是来自天然气价格限制的豁免 )。
为了解决这个问题,取消矿商的天然气价格门槛(只适用于私营连锁企业)。
geth --mine --gasprice 0或者用事务指定一些gasPrice:
personal.sendTransaction({ from:xxx, to:xxx, value: 1, gasPrice: 1}, 'pw')缺点是一些乙醚会被消耗掉,因此from-address需要得到足够的资金。
https://ethereum.stackexchange.com/questions/47817
复制相似问题