Web3.js:从合约方法执行中获取return值

Web3.js: Get return value from contract method execution

我有 web3.js 的 ERC-20 token smart-contract which methods I call using sendSignedTransaction。在我知道交易被成功挖掘后,我需要检查合约方法的执行结果。如果我只有交易哈希,我该怎么做?

示例:方法transferFrom(from, to, tokens) returns truefalse 取决于传输是否成功。因此,如果我尝试从空钱包中转移 100 个代币,合约方法将 return false.

更新:好的,据我了解,在交易被挖掘和确认后,无法使用 txHash 确定方法结果。那么有哪些方法可以处理这种情况呢?我怎样才能确保令牌已转移?

你可以在你的合约代码中发出一个事件(实际上在 ERC20 标准中总是存在一个转移事件)然后在 web3js 中,使用这行代码读取所有事件直到最新的块:

Events = Contract.eventName({}, {fromBlock: 0, toBlock: 'latest'});