教程

如何成功调用 Band Protocol 预言机数据

Ajian   |     |   5781 次阅读

本文将详细记录Band Protocol如何结合智能合约实现预言机的功能;本文假定读者有 Metamask,智能合约以及以太坊相关知识;本文主要通过以下 4 个步骤,逐步完成一个基于 Band Protocol 的实现预言机功能的智能合约;

1/ 安装Metamask

2/ 申请Kovan测试以太

3/ 智能合约

4/ 部署和测试合约

1:安装MetaMask

如果已经安装了MetaMask浏览器扩展,请切换到Kovan 网络并跳到下一节。

MetaMask是一个浏览器钱包,允许你通过网络浏览器(Chrome或Firefox)与以太坊交互。使用MetaMask,您可以在真实网络(mainnet)和测试网络中拥有以太,以太是以太的原生代币。您还可以使用以太部署智能合约或将事务发送到网络。要安MetaMask,请访问https://metamask.io并下载浏览器扩展。

创建新的账号或者登录已有的账号;将网络选择更改为Kovan测试网络。假设您连接到Kovan,我们将继续下一步。

1.jpg

2:申请Kovan测试以太

如果您已经拥有Kovan测试网以太(KETH),请跳到下一节。如果没有Kovan测试网以太(KETH),按照下面的步骤,获取测试用以太。

1:点击Deposite按钮

2.jpg

2: 点击Get Ether按钮

3.jpg

3: 页面跳转

页面跳转到 https://github.com/kovan-testnet/faucet;页面中包含了2个可以获取测试以太的地址

1- https://faucet.kovan.network/

2- https://gitter.im/kovan-testnet/faucet

【1- https://faucet.kovan.network/ 】经过验证,处于不可用的状态可以忽略。

【2- https://gitter.im/kovan-testnet/faucet】打开链接;如下图所示:输入以太的地址;如果处理完成,将会有对应的代币转入信息。

备注:最好晚上9:00以后,提交代币申请,因为是外国的朋友处理,如果时间太长可能不会处理申请。

4.jpg

3:智能合约

我们提供了一个简单的基于 Band Protocol 的智能合约;我们用直接导入 Band 的Oracle接口的方式实现了一个智能合约;这个示例智能合约包含了2个功能。

  • queryPrice 为查询调用数据集(BandProtocol 提供)所消耗的以太的数量。

  • update,它将从 Band Protocol 的 Kovan financial feeds 获取以太和美元之间的汇率,并更新状态变量 ethusd 中的结果。

pragma solidity ^0.5.0;



interface Oracle {

  enum QueryStatus { INVALID, OK, NOT_AVAILABLE, DISAGREEMENT }

  function query(bytes calldata input)

    external payable returns (bytes32 output, uint256 updatedAt, QueryStatus status);

  function queryPrice() external view returns (uint256);

}



contract ExampleContract {

  uint256 public ethusd;



    function queryPrice () public view returns (uint256) {

        Oracle oracle = Oracle(0x07416E24085889082d767AF4CA09c37180A3853c);

        /// Get the price of querying for one data point (in Wei)

        return oracle.queryPrice();

    }



  function update() public payable {

    Oracle oracle = Oracle(0x07416E24085889082d767AF4CA09c37180A3853c);

    (bytes32 raw,,) = oracle.query.value(oracle.queryPrice())("ETH/USD");

    ethusd = uint256(raw);

  }

}

4:部署和测试合约

为了简化本教程,我们不打算设置一个完整的开发环境。相反,我们将使用 Remix 编写智能合约,这是一种浏览器内的智能合约开发工具。访问 https://remix.ethereum.org,您将看到一个空的编辑空间;将上面的智能合约复制到编制空间。

编译部署并进行测试合约,主要分3步进行;

1- 调用queryPrice获取查询数据集(BandProtocol提供)所消耗的以太币的数量

2- 调用update来更新ethusd的值

3- 调用ethusd获取最新的ethusd值

具体操作如下:

1- queryPrice

获取查询数据集(BandProtocol提供)所消耗的以太币的数量;

5.jpg

2- update

根据查询得到的费用;指定交易Value(0.001 ether);然后执行update方法,更新ethusd数值;

6.jpg

3- ethusd

获取ethusd对应汇率价格;

7.jpg

综上所示:本智能合约实现了通过调用Bandprotocol提供的数据集,获取以太和美元的汇率。

上面的智能合约只是一个简单的例子,想获得更多的关于Bandprotocol的应用和例子,请关注我们。

5:参考链接

1- 官网链接

https://bandprotocol.com/

2- 开发文档中文翻译

https://developer.bandprotocol.com/zh/

加入 Band 中文开发群,请加微信 ivyair1995 并备注 Band 开发;

本文由 Rebase 社区 River,进行整理和测试;如有相关问题,请加入Band中文开发群;


作者: River@Rebase 开发社区

 
0 人喜欢