1 Fiscobcos预研机工作原理
预言机工作过程中分为用户方和运营方。
运营方在链上部署核心的预言机合约,链下部署预言机事件监听服务程序,并提供常见的可靠数据源。
用户负责编写应用端合约,发出请求,读取结果。
获取链下API原理图:
获取链上可验证随机数(VRF):
2 整体流程
用户发起调用后,继承于FiscoOracleClient的应用端合约会调用 OracleCore 合约,此时会发起一个事件。Truora-Service 监听到事件后, 会从事件信息中取出以下几个信息字段:
* 请求编号(唯一)
* 请求地址和数据解析格式(URL)
* 倍数(防止小数,solidity 不支持浮点数)
* 返回值类型(支持 string,int256, bytes三种)
Truora-Service 获取到数据后,对 URL 发起一个 HTTP 调用,获取到数据,对数据按照解析格式进行处理,然后再调用 OracleCore 合约,根据请求编号将结果上传到链上,提供给其他合约来获取。
长安链的架构图:
-
用户在智能合约中调用预言机智能合约中的请求方法,预言机智能合约校验相应参数,发送相应的链事件
-
预言机服务监听到链上取数据事件,根据合约中指定的取数据配置,进行数据的获取
-
预言机服务将取到数据通过调用预言机智能合约方法来将数据回传,预言机智能合约通过回调用户智能合约告知用户数据取到,用户合约做相应业务处理即可。
3 预言机合约架构
Truora的合约架构图, 采用了接口--抽象合约--应用合约模式。
用户请求数据流程图: