如何判断 ERC20 代币转账是否成功?
How to tell if an ERC20 token transfer succeeded?
我拼凑了一些代码来使用 web3.js 1.0.0-beta46 发送一些代币,然后决定尝试发送比我钱包里的更多的代币。令我非常惊讶的是,交易发送成功了,我得到了一个 txid,但是当然转账失败了
这是尝试(在 Ropsten 上):
https://ropsten.etherscan.io/tx/0xaf2708dcc9b86b7cca0076e329a1e81fc28fdc4a97765b0a79544ec0685cfa69
现在我的问题是:如何判断传输何时成功?或者就此而言,我怎样才能得到错误信息? etherscan 仅表示:
ERC-20 Token Transfer Error (Unable to locate Corresponding Transfer Event Logs), Check with Sender
最简单直接的方法是在转账前后检查发送方和接收方的余额。
关于转账失败,在阅读合同后我注意到,如果资金不足,您可以简单地 return false,从而进行有效交易。您应该做的是使用 require
恢复交易以进行检查。这样一来,无效的交易将被 EVM 恢复,这将被 etherscan 识别并显示交易失败。
我拼凑了一些代码来使用 web3.js 1.0.0-beta46 发送一些代币,然后决定尝试发送比我钱包里的更多的代币。令我非常惊讶的是,交易发送成功了,我得到了一个 txid,但是当然转账失败了
这是尝试(在 Ropsten 上):
https://ropsten.etherscan.io/tx/0xaf2708dcc9b86b7cca0076e329a1e81fc28fdc4a97765b0a79544ec0685cfa69
现在我的问题是:如何判断传输何时成功?或者就此而言,我怎样才能得到错误信息? etherscan 仅表示:
ERC-20 Token Transfer Error (Unable to locate Corresponding Transfer Event Logs), Check with Sender
最简单直接的方法是在转账前后检查发送方和接收方的余额。
关于转账失败,在阅读合同后我注意到,如果资金不足,您可以简单地 return false,从而进行有效交易。您应该做的是使用 require
恢复交易以进行检查。这样一来,无效的交易将被 EVM 恢复,这将被 etherscan 识别并显示交易失败。