++wythern++

X presents Y for a better Z

在truffle或其他测试环境下如何得到contract的返回值

    1. 使用pure或者view函数,直接拿到返回值,但不是所有的函数都能声明成pure/view。

    2. 使用event包装返回值,但是在emit之前返回的函数是没有event的,如果需要每条path都返回有意义的return value,可能需要定义很多个event。(不考虑require throw的情况下)

    3. 使用web3.eth.Contract.call,需要ABI和deployed address,这个用法有个缺点是将函数变成了constant的,即和1一样无法改变合约内部状态,只能说在特定的场景下有用。

    4. EIP-758(https://eips.ethereum.org/EIPS/eip-758),返回returnData在subscribe的通道上,但是看目前的状态还是draft。


posted on 2019-11-28 18:13 wythern 阅读(199) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理