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

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

在区块链技术中,预言机是为智能合约提供外部数据的关键基础设施。它充当了连接区块链内部和外部世界的桥梁,使智能合约能够获取链下信息。

举例来说,如果我们在以太坊上部署了一个需要获取特定日期原油交易量的智能合约,由于合约本身无法直接访问链下数据,就需要借助预言机来实现这一功能。在这种情况下,智能合约会将所需信息写入事件日志,然后由链下进程监听该日志。当检测到请求时,进程会通过链上交易将相关数据传递给智能合约。

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

Chainlink是当前市场占有率最高的预言机项目。它通过去中心化方式,安全地向区块链提供现实世界的数据。Chainlink围绕LINK代币构建了一个经济激励驱动的生态系统。其预言机功能主要通过LINK代币的转账来触发,这属于请求/响应模式的实现。

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

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

在请求预言机服务之前,用户需要确认该预言机的可信度。预言机的可信度通常可以根据其历史表现、声誉系统和抵押机制等因素来评估。

当预言机收到服务请求后,会进行一系列安全检查,包括验证代币类型、检查数据长度和function selector等。通过检查后,预言机会生成唯一的requestId,设置过期时间,并发出OracleRequest事件。该事件包含了请求的详细信息,如数据格式、回调地址和方法ID等。

链下节点监听到OracleRequest事件后,会解析请求信息,通过API获取所需数据,然后调用fulfillOracleRequest方法将数据提交到链上。这个过程中会进行多重验证,确保数据的准确性和时效性。最后,预言机通过回调函数将结果返回给请求合约。

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

对于开发者而言,Chainlink还提供了更便捷的方式来获取常用币对的价格数据。每个交易对都有独立的Price Feed(也称为Aggregator),开发者可以直接调用这些Feed的接口来获取最新价格信息,无需自行指定数据源URL。

Price Feed通常提供了几个核心方法:

  • decimals():返回价格数据的精度
  • description():返回交易对名称
  • version():指示Aggregator类型
  • getRoundData(_roundId):获取特定轮次的价格数据
  • latestRoundData():获取最新价格数据

大多数应用场景下,合约只需调用latestRoundData()方法即可获取最新价格。对于以美元计价的交易对,价格精度通常统一为8位小数,简化了不同代币间的精度处理。

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

通过这种方式,Chainlink为区块链应用提供了可靠、实时的外部数据访问能力,极大地拓展了智能合约的应用范围和潜力。

LINK-5.67%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 9
  • 分享
评论
0/400
rugpull_survivorvip
· 07-28 13:40
看着清爽,还是得干了link
回复0
无常损失恐惧症vip
· 07-27 09:59
预言机玩家零肉臊子
回复0
空投碎片收集者vip
· 07-26 03:39
link真的是yyds
回复0
StableGeniusvip
· 07-25 15:51
实际上,如果你看看节点运营商,这个系统相当集中…无语
查看原文回复0
MissingSatsvip
· 07-25 15:51
预言机我只信link,其他都别碰
回复0
SerumDegenvip
· 07-25 15:50
在$LINK上损失了一半的投资组合,但仍然唱多... 说实话,要么是预言机,要么就是死亡
查看原文回复0
空投舔狗vip
· 07-25 15:49
预言机行情好到飞起!
回复0
Degen_Whisperervip
· 07-25 15:47
我靠 link真滴牛批
回复0
LidoStakeAddictvip
· 07-25 15:35
别家预言机还有活路吗
回复0
查看更多
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)