在区块链的世界里,智能合约访问现实数据时,Oracle机器是不可或缺的。这实际上是很多人低估的部分。



智能合约对区块链内部的数据非常强大,但完全无法访问外部世界的信息。例如,想将今天的原油交易量反映到合约中,但这些信息在链外,因此需要某种中介。这就是Oracle机器的作用。

这个Oracle机器的机制其实是简单的请求-响应方式。智能合约向外部发出“请提供这些数据”的请求,Oracle捕获请求,获取现实世界的数据,然后返回到链上。这一系列流程就是Oracle机器的基本操作。

在区块链行业中占据压倒性份额的是Chainlink项目。Chainlink是一个去中心化的Oracle机器,专注于以最安全的方式将现实世界的数据提供给区块链。它以LINK代币为核心,通过激励设计构建生态系统。

要运行Chainlink的Oracle机器,需要转移LINK代币。这个LINK是在以太坊网络上的ERC677标准中实现的。这里是关键点。标准的ERC20不能同时执行支付和服务请求,因此Chainlink提出了自己版本的ERC677。

ERC677的核心方法是“transferAndCall”。通过它,代币转移和服务请求可以在一个交易中完成。当用户执行transferAndCall时,除了进行ERC20转账外,还会自动调用接收地址的onTokenTransfer方法。

当Oracle机器收到请求后,首先会进行多项安全检查。确认发起方是否确实是LINK代币合约,数据大小是否合适,函数选择器是否正确。通过验证后,会生成一个唯一的requestId,并在事件日志中记录。

这个事件由链下节点监控。节点读取事件中的必要信息,通过网络API获取现实世界的数据。然后调用fulfillOracleRequest方法,将数据返回到链上。这一流程构成了Oracle机器的完整循环。

在实现方面,Chainlink提供了现有交易对的价格数据源,也就是Aggregator。使用它,开发者无需自己指定API。像ETH/USD这样的主要交易对已经准备好,只需调用latestRoundData()方法,即可获取最新价格。

大多数应用只需要读取最新的价格数据。特别是以美元计价的价格,精度统一设为8位,因此无需复杂处理。也就是说,使用Oracle机器实现价格数据源其实比想象中简单。

正因为有这样的机制,DeFi协议和复杂的金融产品才能得以实现。没有Oracle机器,区块链与现实世界的桥梁就无法建立。Gate.io也可以看到利用这些Oracle的各种项目,如果感兴趣,可以去了解一下。
ETH-5.79%
查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 评论
  • 转发
  • 分享
评论
请输入评论内容
请输入评论内容
暂无评论