即使我的奇偶校验节点(私有网络)没有挖掘,它似乎有一个挂起的块和一个to池。
发送一些事务后,web3.eth.getBlock("pending")调用返回有关挂起的块的信息,包括挂起的事务:
{ author: '0x819773969b2622a0a362fd137b088f90f88bd812',
difficulty: '131072',
extraData: '0x506172697479',
gasLimit: 134086668,
gasUsed: 3264884,
hash: '0x084fd0478d7d7cea29ecb1a3734a3810933eddf26b1f18138711c93d83066759',
logsBloom: '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
miner: '0x819773969b2622a0a362fd137b088f90f88bd812',
number: 1,
parentHash: '0xf5ef33749ed2fdfae1e6d1ce353d01d3d24cd58c37fd82f0afa78d71f206ffa0',
receiptsRoot: '0x70e8edb579ffacaf92e02c9186fff660f9dfcf02e415d6d12f0d6523bcb67dfb',
sealFields: [],
sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347',
size: 14575,
stateRoot: '0xfd4a9996a00551085ba9c94c362ccbd7ae082683c428afac14de04b426a0015b',
timestamp: 1520939275,
totalDifficulty: '132096',
transactions:
[ '0xa6a6eb4ba46b798ca89c58770acaa6be030c5ea96bdf1e26f5a6e692625beb99',
'0x77d18ff8c6304ec1f4e7e28605498eb2018e2d3089dd7e59b2124077f3b7956c',
'0xddf1cfca112e3e4c653a8a14267f569015db6a1db9f0ba2144fec8f8cfdaebcc',
'0x7cedab2409a862b922c19c260f137e94e625a84a08d17414ebc835ecca7c19a9',
'0x7d2bb13e6c08c99f3e8cf07fce84842a46a979e547eb009e02b2ba659bcec296',
'0x2be0a050cf877d1feb92924d4af313155bd65146fd24cb45cf08323370484c38',
'0x02d55f8200a2176dea514a2481a7ddfa3e1fdf9e7514008a6030e4f0dc7dfe82',
'0x88d40a05425cd2f5f56ab84ba1aca715b99fc3234fc11b5dfe48688f5de78139',
'0xbd6f6e70aaf16916d34b56f3a96af1b344a44fc738a1da0eb0d55c94ffafcadd',
'0xf966a75580009d506096396676fc5ea8f8da660fc265d7b83f954a6ee46fd061',
'0x40509d3abaabc04367de8428f14d0763b798061180b04bb5a1833746d564e377',
'0x41b50420117a8751b8d397a1f043e3767b29928fc0ecdc0d795fd0aa821df749',
'0x172631800f2f4125e42feceb1db45d7ef0b0d0f205d09f089b2d877d310a99d8',
'0x20629025b98574d7eb0744b252753cff4e65ff9070bb5d03c8540108e72027c4',
'0xf7367abaa8c356e9057d36d8ce03e437546afb271b677f6aafdccb464867a5d8',
'0xd5e6c9c04bd5b787612d90b9668d0be804e7ddc142186885f019654063fd37f8',web3.eth.getTransactionCount(<address>, "pending")调用返回事务计数为:
94当发出curl请求以使用特定于奇偶校验的API端点parity_nextNonce (根据挂起的块返回帐户事务计数)和to池时,它还返回相同数量的事务:
{"jsonrpc":"2.0","result":"0x5e","id":1}我似乎还没有理解挂起的块和to池之间的区别。
最初,我的印象是txpool是将所有挂起的事务存储在一个节点上(在内存中),而挂起的块只有在一个节点被挖掘时才会出现(即正在被解决的块),但情况显然并非如此。
有人能解释一下这两个概念在待定交易、帐户现在和待定事务广播方面的区别吗?
也提出了类似的问题,但没有具体回答:
发布于 2018-03-13 12:55:59
在我看来,这似乎是一种导致一些混乱的优化/边缘情况--节点假定您所连接的网络正常运行,也就是说,块将被理性参与者挖掘。
最初,我的印象是txpool是将所有挂起的事务存储在节点上的地方。
这是正确的。
...that挂起的块只有在节点被挖掘时才会出现(即正在被解决的块)
具体来说,这就是我认为节点假设它是一个网络的一部分,在将来能够正常工作的部分。
为了帮助澄清,我们可以遍历一些场景:
有人能解释一下这两个概念在待定交易、帐户现在和待定事务广播方面的区别吗?
总结并希望回答以下问题:
有效的TXs (在此节点上创建或从对等节点接收)将被添加到节点的本地内存池中,直到它们包含在块中(无论该块是由此节点挖掘的还是网络上的另一个)。此时,TX将从内存池中移除并包含在块中。
因为我们可以预期,大多数节点都是合理的,并且行为正确;因此可以明智地猜测下一个块中将包含哪些TXs (来自内存池)。
当一个帐户生成TXs时,该帐户的当前值将增加,以强制该帐户的TXs排序。即使过去的TXs没有包含在块中,只要nonce增加,帐户也可以继续生成更有效的TXs。它们可以出现在内存池中,也可能出现在下一个模块中--取决于汽油费、内存池中的num TXs等等。
在节点上提交的新TXs将被广播到节点的所有或随机子集(取决于节点的编码方式)。新的、挂起的块只有在被挖掘节点挖掘时才会广播给节点的对等节点。
https://ethereum.stackexchange.com/questions/42598
复制相似问题