以太坊有单钱包交易队列吗?
Is there a transaction queue for single wallet in Ethereum?
我以非常低的 gas 价格执行了合约方法 - 1 gwei(交易 A)。
之后,我从同一个帐户向多个钱包发送了一些 ETH(交易 B)。
因此,交易 A 的状态是 pending
大约 12 个小时,直到它因为 gas 价格被开采。而且我发现交易 B 停止,直到交易 A 被开采(它们也是 pending
)。
所有交易均通过 MyEthereWallet 从同一个钱包发送。
据我了解,交易是绝对独立执行的。那么,为什么交易 B 只在 A 之后才被开采?或者每个钱包都有一个全局交易队列,交易按照进入系统的顺序进行挖掘?
我找到了答案here。如果很快,是的,有一种队列。交易按照它们发布到以太坊网络的顺序执行。
再详细一点。每个帐户都有一个名为 nonce
的 属性。它包含发送出账户的交易数量。
接下来。账户发送的每笔交易都有几个属性。其中之一是发送交易的帐户 nonce
。
在执行交易之前检查有效性 - 它们应该有有效的签名,足够的气体和有效的 nonce
- 它应该等于发送者账户的当前 nonce
。
检查有效性后交易正在执行。交易执行成功后账户的nonce递增。
比如我们账户的nonce
是100,我们发布了两笔交易nonce
100和101,第二笔交易nonce
101只有在第一笔交易是完成并且帐户的 nonce
递增(并变为 101)。
我以非常低的 gas 价格执行了合约方法 - 1 gwei(交易 A)。
之后,我从同一个帐户向多个钱包发送了一些 ETH(交易 B)。
因此,交易 A 的状态是 pending
大约 12 个小时,直到它因为 gas 价格被开采。而且我发现交易 B 停止,直到交易 A 被开采(它们也是 pending
)。
所有交易均通过 MyEthereWallet 从同一个钱包发送。
据我了解,交易是绝对独立执行的。那么,为什么交易 B 只在 A 之后才被开采?或者每个钱包都有一个全局交易队列,交易按照进入系统的顺序进行挖掘?
我找到了答案here。如果很快,是的,有一种队列。交易按照它们发布到以太坊网络的顺序执行。
再详细一点。每个帐户都有一个名为 nonce
的 属性。它包含发送出账户的交易数量。
接下来。账户发送的每笔交易都有几个属性。其中之一是发送交易的帐户 nonce
。
在执行交易之前检查有效性 - 它们应该有有效的签名,足够的气体和有效的 nonce
- 它应该等于发送者账户的当前 nonce
。
检查有效性后交易正在执行。交易执行成功后账户的nonce递增。
比如我们账户的nonce
是100,我们发布了两笔交易nonce
100和101,第二笔交易nonce
101只有在第一笔交易是完成并且帐户的 nonce
递增(并变为 101)。