Web3 回复消息

时间:2021-07-18 05:18:57

标签: solidity web3 revert

我在 Rinkeby 测试网络上为我的 Solidity 项目使用 web3。我正在尝试使用错误对象获取确切的还原消息。

try{
await contract.methods.acceptBattle(id).send({
from: address,
value:val
});
return '';
}
catch(e){
console.log(e.message);
}

代码在 catch 块中运行后,我得到以下格式的输出:

执行恢复:这场战斗不存在。 0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001b426174746c65206e7 56d6265722069736e27742065786973742e0a0000000000

有没有办法只获取消息本身(在第一行)而不是后面的地址? 正如我在 Do all Ethereum networks return the revert reasons as a “message” field?

中看到的

并且由于我在 Rinkeby 测试网络上运行,因此地址应该是错误数据字段的一部分,而不是消息的一部分。

这是回复消息的相关代码:

function acceptBattle(uint256 battle_id) public payable{
    Battle storage bate=battleInfo[battle_id];
    require(bate.amountBet>0, "Battle number isn't exist.\n");
    require(bate.creator!=msg.sender, "Impossible to fight against yourself.");
    require(bate.creator==bate.opponent, "This battle is closed, opponent already exist.");
    require(msg.value==bate.amountBet, "Betting value isn't as specified for this battle.");
    bate.opponent=msg.sender;
}

0 个答案:

没有答案