有的网络节点没有开启ws处事,而利用http协议的网络jsonrpc又无法直接订阅事件。这时可以采纳迂回计策,模仿事件订阅,详细思路如下:
res,
case err := <-e.Subscription.Err():
三、事件订阅
在回调模块中,挪用合约时,我们并没有指定提倡生意业务账号的Nonce值,而是由Transact要领在每次提倡生意业务时,动态计较。这就会限制我们生意业务的并发。
case "bytes":
resValue, coverErr = resData.Bytes()
CallbackFUN string
func (e *EventWatch) sendQueryRequest(reqData *QueryRequest, resParamType string) (interface{}, error) {
responseName = OracelResponseUint256Name
}
回调模块代码如下所示。
return nil, fmt.Errorf("[ParseResponeData] response data not exist request key:%v", keys)
reqData := &QueryRequest{}
1、Nonce托管
回调也大概失败,处事对sendQueryResponse要领的挪用也增加了失败重试机制。
下篇中,我将以一个抽奖合约为示例,先容如何利用我们开拓的Oracle处事来对抽奖合约提供一个随机数。
Topics: [][]common.Hash{
queryInfo.CallbackAddr,
if resData == nil {
// sendQueryResponse 将查询到的功效发送给客户端合约指定要领
logs.Error("[SubscribeEvent]fail to subscribe event:", err)
logs.Error("[dealEvent] Subscription err: ", err)
e.Subscription = sub
至此,我们的V1版的Oracle处事已开拓完成,处事已能满意根基需求,但尚有一些方面需要进一步优化,我这里列出了三点。
queryInfo.CallbackFUN,
References
[1] Oracle简介及合约实现:
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。