Chainlink预言机技术解析:连接区块链与现实世界的桥梁

robot
摘要生成中

预言机技术解析:以Chainlink为例

在区块链生态中,预言机扮演着关键的基础设施角色,它为链上智能合约提供外部信息。作为连接智能合约和区块链外部世界的桥梁,预言机的主要功能是为智能合约提供数据。

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

预言机详解系列之 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代币、判断数据长度是否超过限制、检查函数选择器是否正确等。

所有安全检查通过后,合约会通过delegatecall来调用oracle合约的oracleRequest方法。该方法会生成一个唯一的requestId,设置过期时间,并将相关信息存储到commitments映射中。最后,它会发出一个OracleRequest事件,该事件包含了请求数据,采用CBOR(Concise Binary Object Representation)编码格式。

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

链下节点响应

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

fulfillOracleRequest方法首先会进行一系列检查,包括验证调用者权限、检查请求的有效性等。检查通过后,它会记录可取款的数额,从commitments映射中删除该请求,并调用请求者合约的回调函数。

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

价格预言机示例

以Chainlink提供的TestnetConsumer合约中的requestEthereumPrice方法为例,该方法实现了从指定API获取ETH/USD交易价格的功能。它通过调用sendChainlinkRequestTo方法发出请求,触发oracle合约的onTokenTransfer方法。

链下节点在获取到请求信息后,会通过API调用获取价格数据,然后通过fulfillOracleRequest方法将数据提交到链上。最终,数据会通过回调函数返回给消费者合约。

对于开发者来说,如果只需要使用已有的币对价格,可以直接使用Chainlink提供的Price Feed(即AggregatorProxy)。每个交易对都有一个单独的Price Feed,提供了多个查询方法,包括获取价格精度、交易对描述、最新价格数据等。

大多数应用场景下,合约可能只需要读取最新价格,即调用latestRoundData方法。通常,以USD为计价单位的交易对价格精度统一为8位,这简化了不同代币精度处理的问题。

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

LINK1.58%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 4
  • 分享
评论
0/400
SerumSquirtervip
· 07-23 08:30
价格数据真不便宜
回复0
空气币品鉴大师vip
· 07-21 00:45
link是我真爱好吧
回复0
无情哈拉vip
· 07-21 00:30
link必涨 等着吃肉
回复0
DeFi医生vip
· 07-21 00:27
外围数据病毒威胁大,建议节点定期体检
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)