ethereum - 如何判断 ERC20 代币转移是否成功?
问题描述
我拼凑了一些代码来使用 web3.js 1.0.0-beta46 发送一些令牌,然后决定尝试发送比我钱包里更多的令牌。令我惊讶的是,交易发送成功了,我得到了一个 txid,但是转账当然失败了
这是尝试(在 Ropsten 上):
https://ropsten.etherscan.io/tx/0xaf2708dcc9b86b7cca0076e329a1e81fc28fdc4a97765b0a79544ec0685cfa69
现在我的问题是:我怎么知道转移何时成功?或者就此而言,我怎样才能得到错误消息?etherscan 仅表示:
ERC-20 令牌传输错误(无法找到相应的传输事件日志),请与发件人核对
解决方案
最简单直接的方法是在转账前后检查发送方和接收方的余额。
现在关于失败的转账,在阅读了合约后,我注意到如果资金不足,您只需返回 false,这就是有效的交易。您应该做的是还原require
用于进行检查的交易。这样一来,无效的交易将被 EVM 恢复,这将被 etherscan 识别并显示交易失败。
推荐阅读
- python - error 错误响应类型 | 不和谐蟒蛇机器人
- object - 检查对象是否已经存在?
- javascript - 将 javascript/npm 库与依赖项捆绑在一起
- javascript - React 数据表组件。如何动态选择行
- c# - 读取 Request.Body 流并附加到另一个流
- netlogo - 如何使用 NetLogo 程序创建备用路径
- java - 如何定义此变量以使其不会读取错误?
- javascript - 如何在 JavaScript Discord 机器人中重复代码?
- algorithm - QuickSort - 枢轴始终处于中间位置时的最坏情况输入示例
- windows - 无法在 Windows Server 2012 R2 中移动日志文件