问题
app.js 是我写合约交易操作的文件,MyContract.sol中写有智能合约内容;
使用node app 命令进行合约交易操作的时候出现Error: Transaction has been reverted by the EVM错误;上etherscan查看交易情况也提示我的交易失败
出错原因
创建交易对象时,把data的值写错了。
解决步骤
truffle compile ;//编译合约,打开build/contract/你自己合约的名字.json文件,我的是MyContract.json- 找到“
bytecode ”属性,复制它的属性值; - 返回合约中,找到交易对象中的
data 属性,将“ bytecode”的属性值赋给它;
涉及交易对象的部份代码:
const txObject = {
nonce: web3.utils.toHex(txCount),
// 此处提高了gas上限,部署合约比转账会消耗更多Gas
gasLimit: web3.utils.toHex(1000000),
gasPrice: web3.utils.toHex(web3.utils.toWei('10', 'gwei')),
// data 要部署的智能合约字节码
data: 'your bytecode'
}
附上
abi获取方法
注意
这个报错问题我也没有看明白是什么意思,网上有人说是require错误导致的,我排除的时候没有发现是require的问题,所以就先去查看变动部分较大的代码,最后发现是data值的问题,我这个错误源可能只是Transaction has been reverted by the EVM错误提示的一部分原因,不适用于每个人。因为书写智能合约的整体结构都差不多,所以大家耐下心试试从代码改动最大的地方去排查吧,加油💪
|