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

robot
摘要生成中

预言机系统在区块链中的重要性及Chainlink的实现机制

预言机是区块链领域中的关键基础设施,它能够为链上智能合约提供外部信息。作为连接智能合约和区块链外部世界的中间件,预言机发挥着至关重要的作用,其主要功能是为区块链上的智能合约提供数据。

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

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

Chainlink是目前区块链领域市场占有率最大的预言机项目。它是一个去中心化的预言机系统,旨在以最安全的方式向区块链提供现实世界中产生的数据。Chainlink在基本预言机原理的基础上,通过LINK代币构建了一个经济激励驱动的良性生态系统。Chainlink预言机需要通过LINK代币的转账来触发,而LINK是以太坊网络上的ERC677合约。基于LINK ERC677代币实现的预言机功能属于请求/响应模式。

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

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

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

在Chainlink的实现中,当预言机消费者使用transferAndCall方法支付费用并请求服务时,预言机合约的onTokenTransfer方法会首先进行一系列安全检查。这包括验证转账是否为LINK代币、检查数据长度是否超过限制,以及验证函数选择器等。检查通过后,会通过delegatecall来调用当前oracle合约的oracleRequest方法。

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

oracleRequest方法会生成一个唯一的requestId,设置过期时间,并将相关信息添加到commitments映射中。最重要的是,它会发出一个OracleRequest事件,该事件包含了请求数据,采用CBOR(简洁二进制对象表示)格式编码。

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

链下节点会监听这些OracleRequest事件。当检测到新的请求时,节点会解析事件中的信息,通过API调用获取所需数据,然后通过调用oracle合约的fulfillOracleRequest方法将数据提交到链上。这个方法会进行一系列验证,然后调用请求者合约的回调函数,将结果返回给消费者合约。

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

对于开发者来说,如果只需要使用已有的币对价格,可以直接使用Chainlink提供的Price Feed(也称为Aggregator)。每个交易对都有一个单独的Price Feed,实际上是一个AggregatorProxy合约。这些合约提供了几个查询方法,包括获取价格精度、描述、版本以及最新价格数据等。在大多数应用场景中,合约可能只需要读取最新价格,即调用latestRoundData()方法。

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

值得注意的是,以USD为计价单位的交易对,其价格精度通常统一为8位,这简化了不同代币间精度处理的问题。这种设计让开发者能够更便捷地在智能合约中使用实时价格数据,而无需处理复杂的API调用和数据格式转换。

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

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 7
  • 分享
评论
0/400
Degen_Whisperervip
· 7小时前
链克真香 就是贵了点
回复0
午夜快照猎人vip
· 7小时前
Chainlink挺靠谱的啊
回复0
半仓就跑vip
· 7小时前
感觉link还得涨
回复0
GweiTooHighvip
· 7小时前
link又涨了吧?不用猜了
回复0
SelfRuggervip
· 7小时前
link牛叉 买就完事了
回复0
Gwei_Watchervip
· 7小时前
真香 这价格feed是真滴好用
回复0
Permabull Petevip
· 7小时前
link稳得一批
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)