Ethereum Web3.js:从合同方法执行中获取返回值

Ethereum Web3.js:从合同方法执行中获取返回值,ethereum,smartcontracts,web3,Ethereum,Smartcontracts,Web3,我有一个令牌智能合约,我从web3.js调用它。在我知道交易成功挖掘后,我需要检查合同方法的执行结果。如果我只有事务哈希,我该怎么做 示例:方法transferFrom(from,to,tokens)根据传输是否成功返回true或false。所以,如果我尝试从空钱包中转移100个代币,契约方法将返回false Upd:好的,据我所知,在事务挖掘和确认之后,没有办法使用txHash确定方法结果。那么,有哪些方法来处理这个案件呢?如何确保令牌已被转移?您可以在合同代码中发出一个事件(实际上在ERC2

我有一个令牌智能合约,我从web3.js调用它。在我知道交易成功挖掘后,我需要检查合同方法的执行结果。如果我只有事务哈希,我该怎么做

示例:方法
transferFrom(from,to,tokens)
根据传输是否成功返回
true
false
。所以,如果我尝试从空钱包中转移100个代币,契约方法将返回
false


Upd:好的,据我所知,在事务挖掘和确认之后,没有办法使用txHash确定方法结果。那么,有哪些方法来处理这个案件呢?如何确保令牌已被转移?

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


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

事务没有返回值,因此尽管函数返回布尔值,但该值不会保留在任何位置。但你可以查找记录的事件。是的,这就是我的目的。此外,您可能不希望每次都检查块0中的事件(因为这样的检查需要花费大量的时间来执行),请在某处保存上次检查的块编号。下次只处理在该块编号之后触发的事件。