blockchain - 以太坊如何处理不同世界状态下的重复交易,即一个交易有效而另一个无效?

标签 blockchain ethereum p2p go-ethereum

第1步:我创建一个智能合约调用交易TX并将其发送到以太坊。
步骤2:TX被验证并广播到其他节点。
步骤3:Evm执行TX失败(可能是因为solidity函数返回错误等)。
第四步:别人改变了合约状态,我之前的TX现在有效。


我的问题是,如果我现在重新发送 TX,它会被执行还是被丢弃 重复交易?

如果以太坊不做重复检查,一笔交易可能会在p2p网络中循环?

最佳答案

每笔交易都有一个随机数。每次发送交易时,您都必须增加随机数。

因此,在您的场景中,假设第一笔交易的随机数为 5。该交易失败。您发送的下一笔交易必须具有随机数 6。因此,您不能简单地重新广播同一交易(它将因具有无效随机数而被拒绝),但您可以创建一个除了递增随机数之外相同的新交易。那一个将有资格被开采成一个区 block 。

关于blockchain - 以太坊如何处理不同世界状态下的重复交易,即一个交易有效而另一个无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51984026/

相关文章:

networking - 没有服务器的 TCP P2P

node.js - 如何通过web3使用私钥登录以太坊账户?

command - 为什么 eth(以太坊)不工作?

docker - 每次重启区 block 链服务器时,我们是否应该初始化 Docker 守护进程?

ethereum - 验证使用 Truffle 部署的智能合约代码

blockchain - 从外部合约调用时,solidity 合约状态变量值显示奇怪

sockets - 在公共(public) Internet 上使用套接字的视频聊天应用程序

flash - Silverlight P2P 应用程序(在浏览器中)- 我们会得到 RTMFP 吗?

javascript - Blockcypher 错误非规范签名 : wrong length marker

c# - Nethereum - 方法 eth_feeHistory 不存在或不可用