首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法提交非矿工txn的私人链txpool

无法提交非矿工txn的私人链txpool
EN

Ethereum用户
提问于 2018-05-07 12:46:52
回答 1查看 413关注 0票数 2

我有一个本地测试设置,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):

代码语言:javascript
复制
> net.peerCount
2

正在挖掘

块并同步

在Node3上:

代码语言:javascript
复制
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上提交了一项交易:

代码语言:javascript
复制
> personal.sendTransaction({from:'0xd134a62fb3d349c8ba2991dfba48e091544a8a13', to:'0xE0ca7d355F0CC6C1EECDA7Ce081353b7D87Aa1d7', value: 1},'redacted')
INFO [05-07|14:31:16] Submitted transaction                    fullhash=0x9d1f3fa3a4c0037daed01371bd57d2ca6876cdb3d088ec7917656f272ce6485d recipient=0xE0ca7d355F0CC6C1EECDA7Ce081353b7D87Aa1d7
"0x9d1f3fa3a4c0037daed01371bd57d2ca6876cdb3d088ec7917656f272ce6485d"

然后什么都不会发生。事务永远处于“待定”状态:

代码语言:javascript
复制
> txpool.inspect
{
  pending: {
    0xD134A62fB3D349c8ba2991dFbA48E091544A8a13: {
      0: "0xE0ca7d355F0CC6C1EECDA7Ce081353b7D87Aa1d7: 1 wei + 90000 gas × 0 wei"
    }
  },
  queued: {}
}

空块仍在Node3上出现:

代码语言:javascript
复制
> 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:

代码语言:javascript
复制
> txpool.inspect
{
  pending: {},
  queued: {}
}

为什么这样做,以及如何让交易在非矿工身上工作?

运行Geth/v1.8.3-stable-329ac18e/windows-amd64/go1.10

EN

回答 1

Ethereum用户

回答已采纳

发布于 2018-05-07 20:08:33

这些矿商是从--gasprice 1开始的,但交易中没有具体说明任何天然气价格,因此它违约了0,在计算"90000 gas × 0 wei“时也可以看到这一点。

0< 1,因此该交易被矿商拒绝,因为价格过低(它在本地工作,因为本地交易是来自天然气价格限制的豁免 )。

为了解决这个问题,取消矿商的天然气价格门槛(只适用于私营连锁企业)。

代码语言:javascript
复制
geth --mine --gasprice 0

或者用事务指定一些gasPrice

代码语言:javascript
复制
personal.sendTransaction({ from:xxx, to:xxx, value: 1, gasPrice: 1}, 'pw')

缺点是一些乙醚会被消耗掉,因此from-address需要得到足够的资金。

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/47817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档