11.1.3 BSN测试网中的预言机服务开发指南

  1. 应用合约开发说明

  用户可以参考 APISampleOracle.sol 合约实现自己的oracle业务合约。 合约解析如下:

  • 用户合约需继承 FiscoOracleClient 合约
contract APISampleOracle is FiscoOracleClient
  • 构造函数需要传入指定的 Truora 服务方地址
constructor(address oracleAddress) public {
    oracleCoreAddress = oracleAddress;
}
  • 设定自己要访问的 url。修改 url 变量赋值即可。
function request() public returns (bytes32 requestId){
      // Set your URL
      // url = "plain(https://www.random.org/integers/?num=100&min=1&max=100&col=1&base=10&format=plain&rnd=new)";
     url = "json(https://api.exchangerate-api.com/v4/latest/CNY).rates.JPY";
     bytes32  requestId = oracleQuery(oracleCoreAddress, url, timesAmount);
     validIds[requestId] = true;
     return requestId;
}
  • 必须实现callback(bytes32 _requestId, int256 _result) 方法,用于TrustOracle预言机回调获取的结果。

  • get()方法获取本次请求结果, 可自行修改此函数, 获取结果后进行自己业务逻辑的计算。

  2. 链下API接口开发说明

  目前Truora提供了两种链下API(获取链下随机数、获取人民币对其他币种汇率)供用户调用:

//获取链下随机数API
plain(https://www.random.org/integers/?num=100&min=1&max=100&col=1&base=10&format=plain&rnd=new)
//获取人民币对日元汇率API 
json(https://api.exchangerate-api.com/v4/latest/CNY).rates.JPY

  如果用户需要自行开发链下API接口,需遵循以下规则:

  • 链下API接口目前支持json 和 text/plain 两种访问格式。并且链下API的url必须支持HTTPS访问。
  • json格式遵循jsonpath格式,子元素 用 "." 表示
  • text/plain格式默认取第一行结果值
  • 目前预言机返回类型值仅支持int256型数据,由于solidity不支持浮点数。 会将结果放大timesAmount倍, 合约里可以设置timesAmount参数, 默认值是10*18

  3. 示例合约

  GitHub: https://github.com/WeBankBlockchain/Truora-Service/tree/bsn/contracts/1.0/sol-0.4/oracle

Copyright 北京红枣科技有限公司

results matching ""

    No results matching ""

    results matching ""

      No results matching ""