如何将 Tellor 设置为你的预言机
小测验:你的协议即将完成,但它需要一个预言机来访问链下数据......你该怎么做?
(软)前提条件
这篇文章旨在解释如何让访问预言机数据馈送变得简单易行。 这就是说,我们假定你具备一定的编码技能水平,下文侧重于讲述预言机方面。
本文假定:
- 你能够使用终端
- 你安装了 npm
- 你知道如何使用 npm 管理依赖项
Tellor 是一种可供直接实现的开源预言机。 本初学者教程旨在展示如何轻松地运行 Tellor,为你的项目提供一个完全去中心化的、抗审查的预言机。
概述
Tellor 是一种预言机系统,参与者可以在该系统中请求链下数据点(例如 BTC/USD)的值,提供者相互竞争将该值添加到链上数据库中,使得所有以太坊智能合约都可以访问该值。 该数据库的输入由质押提供者网络提供保护。 Tellor 利用加密经济激励机制,奖励提供者诚实的数据提交行为,并通过发行 Tellor 的代币、Tribute (TRB) 和争议机制来惩罚不良行为者。
在本教程中,我们将介绍:
- 设置你需要运行的初始工具包。
- 讲解一个简单示例。
- 列出目前可以测试 Tellor 的网络的测试网地址。
使用 Tellor
首先安装一些基本工具,以便将 Tellor 作为预言机。 使用此软件包(opens in a new tab)安装 Tellor 用户合约:
npm install usingtellor
安装完成后,将允许你的合约继承“UsingTellor”合约的函数。
很好! 既然你已经准备好工具了,我们来完成一个简单的练习来获取比特币价格:
BTC/USD 示例
继承 UsingTellor 合约,将 Tellor 的地址作为构造函数的参数:
下面是一个示例:
1import "usingtellor/contracts/UsingTellor.sol";23contract PriceContract is UsingTellor {4 uint256 public btcPrice;56 //This Contract now has access to all functions in UsingTellor78constructor(address payable _tellorAddress) UsingTellor(_tellorAddress) public {}910function setBtcPrice() public {11 bytes memory _b = abi.encode("SpotPrice",abi.encode("btc","usd"));12 bytes32 _queryId = keccak256(_b);1314 uint256 _timestamp;15 bytes _value;1617 (_value, _timestamp) = getDataBefore(_queryId, block.timestamp - 15 minutes);1819 btcPrice = abi.decode(_value,(uint256));20 }21}显示全部复制
完整的合约地址列表参见 这里(opens in a new tab)。
为了便于使用,UsingTellor 合约库带有一个Tellor Playground(opens in a new tab) 合约的版本以便于集成。 请参阅此处(opens in a new tab)获取实用函数的列表。
要更加可靠地实现 Tellor 预言机,请点击此处(opens in a new tab)查看可用函数的完整列表。
上次修改时间: @nhsz(opens in a new tab), 2023年8月15日