开发实操步骤¶
部署预言机服务¶
部署 Truora 服务。
获取链下 API 数据¶
编写预言机合约¶
以下采用WeBASE-Front示例,也可以用熟悉的合约开发环境进行开发。
WeBASE相关服务需要参照WeBASE项目文档自行部署。
打开WeBASE-Front 页面,默认:http://{IP}:5002/WeBASE-Front/
,使用部署主机的 IP 地址替换 {IP}
。
点击左边 合约管理 –> 测试用户,创建一个调试用户
test
点击左边 合约管理 –> 合约 IDE,选择
solidity
版本,上传 Oracle 相关合约,包括以下几个合约:
FiscoOracleClient.sol
GeneralOracle.sol
OracleCore.sol
OracleCoreInterface.sol
Ownable.sol
SafeMath.sol
gitee 仓库:Oracle 相关合约目录
GitHub 仓库:Oracle 相关合约目录
确认后,选择上传目录,此处选择根目录
/
重要
注意需要上传 五个 合约文件。
在 合约 IDE 中,创建一个
APISampleOracle
合约,继承FiscoOracleClient
或FiscoOracleClient
合约,如下
APISampleOracle 合约的代码,请参考:
gitee: APISampleOracle.sol 合约
GitHub: APISampleOracle.sol 合约
获取合约地址¶
在部署 APISampleOracle
时,需要获取 OracleCore
合约地址,可以通过 Truora-Web 查看。
如果需要使用 RESTful
接口获取,请参考:OracleCore 合约地址查询接口
部署合约¶
选择 APISampleOracle
合约文件,依次点击 保存 –> 编译 编译合约。
点击 部署 按钮,部署 APISampleOracle
合约,选择刚刚创建的测试用户 test
,输入 OracleCore
合约地址:
合约调用¶
调用 APISampleOracle
合约的 request
方法,触发预言机获取数据
调用 APISampleOracle
合约的 get
方法,查看预言机返回的结果
结果显示如下,此处是获取日元到人民币的汇率,放大 10^18
倍的结果:
获取 VRF 随机数¶
编写预言机合约¶
打开一键部署的 WeBASE-Front 页面,默认:http://{IP}:5002/WeBASE-Front/
,使用部署主机的 IP 地址替换 {IP}
。
点击左边 合约管理 –> 测试用户,创建一个调试用户
test
点击左边 合约管理 –> 合约 IDE,选择切换
solidity
版本
创建一个
vrf
目录,点击确认
上传 VRF 相关合约,包括以下几个合约:
EllipticCurve.sol
Ownable.sol
SafeMath.sol
VRF.sol
VRFClient.sol
VRFCore.sol
VRFCoreInterface.sol
VRFUtil.sol
gitee 仓库:VRF 相关合约目录
GitHub 仓库:VRF 相关合约目录
确认后,选择上传目录,此处选择根目录
/vrf
重要
注意需要上传 八个 合约文件。
在 合约 IDE 中,创建一个
RandomNumberSampleVRF
合约,选中vrf
目录,继承VRFClient
合约,如下
具体代码,请参考:
gitee: RandomNumberSampleVRF.sol 合约
GitHub: RandomNumberSampleVRF.sol 合约
获取合约地址和 _keyHash¶
获取
VRF
合约地址
在部署 RandomNumberSampleVRF
时,需要获取 VRF
合约地址,可以通过 Truora-Web 查看。
如果需要使用 RESTful
接口获取,请参考:VRFCore 合约地址查询接口
获取
_keyHash
部署合约¶
选择 RandomNumberSampleVRF
合约文件,依次点击 保存 –> 编译 编译合约。
点击 部署 按钮,部署 RandomNumberSampleVRF
合约,选择刚刚创建的测试用户 test
,输入 OracleCore
合约地址:
合约调用¶
调用 RandomNumberSampleVRF
合约的 getRandomNumber
方法,userProvidedSeed
处填写任意一个随机的整型数字即可,点击 确认 触发预言机生成随机数
调用 RandomNumberSampleVRF
合约的 get
方法,查看预言机返回的随机数结果
结果显示如下,表示生成的链上随机数结果。