我已经执行了天然气价格非常低的合约方法 - 1 gwei(交易 A )。
之后我从同一个帐户发送了一些商品(交易 B )。
结果,交易状态 A 为pending
约12小时,直到因为天然气价格而被开采。我发现交易 B 停滞,直到交易 A 被挖掘(它们也是pending
)。
所有交易都是通过MyEthereWallet从同一个钱包发送的。
据我所知,交易完全独立执行。那么,为什么交易 B 只能在 A 之后开采?或者每个钱包都有一个全局事务队列,事务是按照它们进入系统的顺序挖掘的?
答案 0 :(得分:0)
我找到了答案here。如果很快,是的,有一种队列。交易按照发布到以太坊网络的顺序执行。
更详细一点。每个帐户都有一个名为nonce
的属性。它包含从帐户发出的交易数量。
下一步。帐户发送的每笔交易都有几个属性。其中一个是发送交易的nonce
帐户。
在检查执行交易的有效性之前 - 它们应该具有有效签名,足够的气体和有效nonce
- 它应该等于发件人帐户的当前nonce
。
检查有效性后,正在执行交易。成功执行事务后,帐户的随机数会递增。
例如,我们的帐户nonce
为100.我们使用nonce
100和101发布两个交易。第一个交易完成时,nonce
101的第二个交易无效帐户nonce
递增(并变为101)。