Web3 错误:EVM 已恢复事务:

Posted

技术标签:

【中文标题】Web3 错误:EVM 已恢复事务:【英文标题】:Web3 Error: Transaction has been reverted by the EVM: 【发布时间】:2021-02-13 13:28:50 【问题描述】:

我对使用 Web3 还很陌生。

我正在尝试测试一个购买智能合约(ERC20 硬币)的功能。我已经测试了这段代码以将以太币从一个钱包发送到另一个钱包,它成功了。现在,每当我尝试与智能合约交互(发送签名交易以购买硬币)时,我都会收到此错误:

错误:交易已被 EVM 还原:

这就是它在 etherscan rinkeby 上的显示方式

这是我的代码

  var rawTx = 
    nonce : nxn,
    gasPrice: web3.utils.toHex(web3.utils.toWei('3000', 'gwei')),
    gasLimit: '0x5208',
    to: '0x40d3b2f06f198d2b789b823cdbecd1db78090d74',
    value: web3.utils.toHex(web3.utils.toWei('0.002', "ether")),
    data : '0x',
    
  

  var tx = new Tx(rawTx,chain:'rinkeby', hardfork: 'petersburg');
  tx.sign(privateKey);

  var serializedTx = tx.serialize();


  await web3.eth.sendSignedTransaction('0x' + serializedTx.toString('hex'))
  .on('receipt', console.log);

【问题讨论】:

这意味着智能合约为你的交易做了revert(),通常是通过失败的`require()`行。 【参考方案1】:

这意味着智能合约为您的交易执行了revert(),通常是通过失败 require() 行。其他原因包括尝试对不接受付款的智能合约进行应付交易。

如果没有智能合约源代码,就无法判断是什么导致了还原。

【讨论】:

以上是关于Web3 错误:EVM 已恢复事务:的主要内容,如果未能解决你的问题,请参考以下文章

使用 web3 将 ERC20 代币从地址 A 转移到地址 B

在基于日志的恢复中,为啥我们要重做已提交的事务?

从损坏的 SQL Server 数据库中恢复事务日志

sql运行问题?

Remix恢复已部署的合约

UnhandledPromiseRejectionWarning:错误:返回错误:执行恢复