推
注册以太坊过滤器(filter),监听合约事件,当有被监听事件发生时以太坊节点向客户端推送(push)包含事件数据的log。
需要客户端和以太坊节点之间是双工的连接,比如tcp socket,unix socket,ipc等,不支持http连接。
定位精准,只会获取我们关心的数据
无须再次确认交易的状态是否成功,因为有事件发出则交易一定是成功的。
拉
客户端采用定时轮询的方式查询以太坊节点是否有更新的块生成,如果有则根据块号获取块数据,遍历其中的交易,寻找我们感兴趣的交易,比如是调用特定的ERC 20合约,是否是某个用户的转账等。
灵活,可以从任意块号开始,可重试,支持http,不要事先在合约中声明事件
从区块中获取交易后,仍然需要再次检查交易的收据(receipt),以确定交易是成功还是失败。
receipt, err := c.deployBackend.TransactionReceipt(ctx, common.HexToHash(tx.Hash))
ntx.Success = (receipt.Status == 1)
选择
倾向于拉的模式,能获得较多的数据,连接方式不受限制
网友评论