深度解析:预言机如何连接智能合约与外部世界

robot
摘要生成中

预言机技术深度解析

在区块链生态中,预言机扮演着连接智能合约与外部世界的关键角色。作为一种基础设施,预言机系统能够为链上智能合约提供来自链外的信息和数据。

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

举例来说,假设我们在以太坊网络上部署了一个需要获取某日原油交易量数据的智能合约。由于智能合约本身无法直接访问链下的现实世界数据,这时就需要借助预言机来实现这一功能。具体流程是:智能合约将所需日期的原油交易量写入事件日志,随后链下会启动一个监控进程来订阅该事件。一旦检测到相关请求,该进程就会通过提交链上交易的方式,调用合约的相应方法,将指定日期的原油交易量信息传递给智能合约。

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

在众多预言机项目中,Chainlink占据了市场的主导地位。作为一个去中心化的预言机解决方案,Chainlink致力于以最安全的方式为区块链提供现实世界的数据。它在基本预言机原理的基础上,围绕LINK代币构建了一个通过经济激励形成良性循环的生态系统。Chainlink预言机的触发需要通过LINK代币的转账来实现,而LINK是以太坊网络上的ERC677合约。基于LINK ERC677代币完成的预言机功能属于请求/响应模式。

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

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

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

在预言机服务的请求过程中,消费者首先需要确认预言机的可信度,因为服务提供前需要预付费用。预言机合约的onTokenTransfer方法会进行一系列安全检查,包括验证转账是否为LINK代币、检查数据长度是否超限、验证function selector等。通过检查后,合约会生成唯一的requestId,设置过期时间,并发出包含请求数据的OracleRequest事件。

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

链下节点在接收到请求后,会通过调用fulfillOracleRequest方法来响应。该方法会进行一系列验证,包括检查调用者权限、验证请求有效性等。验证通过后,节点会调用请求者合约的回调函数,将数据返回给请求方。

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

对于开发者来说,如果只需使用已有的币对价格数据,可以直接调用官方提供的Price Feed接口。每个交易对都有独立的Price Feed (即AggregatorProxy),提供了包括decimals()、description()、version()、getRoundData()和latestRoundData()等查询方法。其中latestRoundData()方法返回的answer参数即为最新价格。值得注意的是,以美元为计价单位的交易对,其精度通常统一为8位小数。

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

通过这种方式,开发者可以方便地获取和使用链上预言机提供的实时价格数据,而无需自行处理复杂的API调用和数据验证过程。

此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 5
  • 分享
评论
0/400
AlwaysAnonvip
· 10小时前
喝酒才能想明白的事儿 链克懂个啥
回复0
熊市种菜人vip
· 10小时前
还在抄Chainlink功能呢..
回复0
钱包恐慌症患者vip
· 10小时前
link牛啊 这波稳了
回复0
吃面还是吃币vip
· 10小时前
link链 无敌了属于是
回复0
薛定谔1空投vip
· 10小时前
链克真是yyds!一把梭哈它
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)