Web3 错误:事务已被 EVM 还原:

问题描述 投票:0回答:3

我对使用 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);
javascript node.js ethereum web3js
3个回答
5
投票

这意味着智能合约为您的交易做了

revert()
,通常是通过失败
 require()
行。其他原因包括尝试向不接受付款的智能合约进行应付交易。

如果没有智能合约源代码,就无法判断导致恢复的原因。


2
投票

如果您正在做 Dapp 大学教程,我认为问题出在与初始供应商的合同中。查看构造函数是否带有任何参数。


0
投票

可能是由于最新版本的 web3 导致的,请尝试使用 [email protected] 版本。

© www.soinside.com 2019 - 2024. All rights reserved.