深入解析Chainlink:预言机如何连接区块链与现实世界

robot
摘要生成中

预言机系统:智能合约与现实世界的桥梁

在区块链生态中,预言机扮演着至关重要的角色。它作为一种中间件系统,能够为链上智能合约提供外部信息,从而将区块链世界与现实世界连接起来。预言机的核心功能就是为智能合约提供所需的外部数据。

举个例子,假设我们在以太坊网络上创建了一个需要获取某天原油交易量数据的智能合约。由于智能合约本身无法直接获取这种链下的现实世界数据,因此需要借助预言机来实现。在这种情况下,智能合约会将所需日期的原油交易量写入事件日志。随后,链下会启动一个进程来监控并订阅这个事件日志。当监听到交易中的请求时,该进程会通过提交链上交易,调用合约的相关方法,将指定日期的原油交易量信息上传到智能合约中。

预言机详解系列之 Chainlink(上)

Chainlink:主流预言机解决方案

在当前的区块链市场中,Chainlink是占有率最高的预言机项目。作为一个去中心化的预言机系统,Chainlink旨在以最安全的方式向区块链提供现实世界中产生的数据。在基本的预言机原理之上,Chainlink围绕LINK代币构建了一个经济激励驱动的生态系统。

Chainlink预言机的触发需要通过LINK代币的转账来实现。LINK是以太坊网络上的ERC677合约,而基于LINK ERC677代币完成的预言机功能属于请求/响应模式。

预言机详解系列之 Chainlink(上)

ERC677代币的transferAndCall机制

Chainlink在设计预言机框架时,首先考虑的是用户如何向预言机支付服务费用。由于标准的ERC20代币无法满足"支付后提供服务"这样的需求,Chainlink提出了适用于预言机服务场景的ERC677标准。

ERC677在标准ERC20的基础上增加了transferAndCall方法。该方法将支付和服务请求合二为一,满足了预言机业务场景的需求。当用户进行transferAndCall转账时,除了ERC20的转账外,还会判断接收地址是否为合约地址,如果是,则调用该地址的onTokenTransfer方法。

值得注意的是,在请求预言机服务之前,用户需要先确定该预言机是否可信,因为预言机在提供服务前需要先收取费用。

预言机详解系列之 Chainlink(上)

链上oracle请求流程

当预言机消费者使用transferAndCall方法支付费用并请求服务时,预言机合约中的onTokenTransfer方法会进行一系列安全检查。这包括验证转账是否为LINK代币、检查数据长度是否超过限制、验证数据是否包含正确的函数选择器等。

检查通过后,预言机合约会生成一个唯一的requestId,并将请求相关信息存储到commitments映射中。最后,合约会发出一个OracleRequest事件,该事件包含了请求的详细数据。

预言机详解系列之 Chainlink(上)

链下节点响应机制

链下节点监听到OracleRequest事件后,会解析出请求的具体信息,通过API调用获取所需数据。随后,节点通过提交交易的方式,调用Oracle合约中的fulfillOracleRequest方法,将数据提交到链上。

此方法会进行一系列验证,包括检查调用者是否为授权节点、验证请求ID的有效性等。验证通过后,合约会记录可提取的代币数量,并从commitments映射中删除该请求ID。

最后,合约会调用请求者合约的回调函数,将数据返回给消费者合约。对于价格预言机,这通常涉及更新当前价格数据。

预言机详解系列之 Chainlink(上)

价格预言机的简化使用

对于开发者而言,如果只需使用已有的币对价格数据,无需自行指定API URL,可以直接使用Chainlink提供的Price Feed。每个交易对都有一个独立的Price Feed(也称为Aggregator),实际上是一个AggregatorProxy合约。

这些合约通常提供以下几个主要查询方法:

  • decimals():返回价格数据的精度位数
  • description():返回交易对名称
  • version():标识Proxy指向的Aggregator类型
  • getRoundData(_roundId):根据轮次ID获取历史价格数据
  • latestRoundData():获取最新价格数据

在大多数应用场景中,合约可能只需读取最新价格,即调用latestRoundData()方法。该方法返回的answer参数即为最新价格。

值得注意的是,大部分应用读取token价格时都以USD为计价单位。在这种情况下,价格数据的精度通常统一为8位小数,这简化了不同token间精度处理的问题。

预言机详解系列之 Chainlink(上)

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 8
  • 分享
评论
0/400
Anon32942vip
· 07-15 12:05
预言机这个我懂!囤了点link
回复0
跨链深呼吸vip
· 07-15 11:26
预言机救了我的小钱包
回复0
rugdoc.ethvip
· 07-12 12:36
预言机也没整明白啊
回复0
HackerWhoCaresvip
· 07-12 12:32
link就是未来哈
回复0
MetaverseHermitvip
· 07-12 12:23
link牛哇牛哇
回复0
薛定谔钱包vip
· 07-12 12:17
预言机真香...代币稳了
回复0
Gas_Wastervip
· 07-12 12:14
妈妈 今晚的预言机真香
回复0
bridge_anxietyvip
· 07-12 12:07
得出来了真香
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)