【问题标题】:Geth 'sendTransaction' not working for some transactions while making much transactions in a loopGeth'sendTransaction' 在循环中进行大量交易时不适用于某些交易
【发布时间】:2017-12-24 03:58:15
【问题描述】:

我们在一个循环中进行 200 次交易,将以太币从一个地址发送到另一个地址,所有交易都应该执行并返回成功或失败。

但是有些交易没有执行,即我们没有得到任何交易的结果,既不成功也不失败。

重现行为的步骤

循环进行 200 次交易,将以太币从一个地址发送到另一个地址

eth.sendTransaction({
from: privateWeb3.eth.coinbase,
to: result,
value: privateWeb3.toWei(2, 'ether')
}

检查结果总数。 结果总数将少于总数。给定的交易数

【问题讨论】:

    标签: p2p blockchain ethereum


    【解决方案1】:

    造成这种情况的一个常见原因是重复的随机数。每个事务都包含一个连续增加的数字,称为 nonce。如果您生成事务的速度太快,而 geth 的更新速度不够快,它将重用最后一个事务。因此,您将生成两个具有相同随机数的交易,在这种情况下,geth 将拒绝一个。

    【讨论】:

    • 那么我们该如何克服这个问题呢?
    • 一种可能性是在开始时读取随机数,并为以下每个事务显式设置该值。例如,nonce 是 29,那么您将生成 nonce 为 29、30、31、...、128 的交易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    相关资源
    最近更新 更多