预言机:区块链与现实世界的桥梁 Chainlink如何实现数据传输

robot
摘要生成中

预言机系统在区块链中的角色与实现

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

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

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

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

在众多预言机项目中,Chainlink占据了市场的主导地位。Chainlink是一个去中心化的预言机网络,旨在以安全可靠的方式为区块链提供现实世界的数据。它通过LINK代币构建了一个经济激励机制,形成了一个良性循环的生态系统。

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

Chainlink预言机的触发需要通过LINK代币的转账来实现。LINK是以太坊网络上的ERC677合约,这种基于LINK ERC677代币完成的预言机功能属于请求/响应模式。

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

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

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

在请求预言机服务之前,用户需要先确认该预言机的可信度,因为服务提供前需要预付费用。预言机的可信度可以根据其历史表现、声誉系统等因素来评估。

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

当预言机接收到服务请求后,会通过onTokenTransfer方法处理。该方法会进行一系列安全检查,包括验证转账是否为LINK代币、检查数据长度是否合规、验证function selector等。通过检查后,预言机会发出OracleRequest事件,该事件包含了请求的详细信息。

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

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

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

对于开发者来说,如果只需要使用已有的币对价格数据,可以直接使用Chainlink提供的Price Feed。每个交易对都有一个单独的Price Feed(也称为Aggregator),实际上是一个AggregatorProxy合约。这些合约提供了几个关键方法,如获取最新价格数据的latestRoundData()。

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

大多数应用场景下,合约只需读取最新价格。值得注意的是,以美元为计价单位的交易对,其价格数据精度通常统一为8位小数,这简化了不同代币间的精度处理问题。

通过这种方式,智能合约可以方便地获取和使用外部世界的数据,极大地拓展了区块链应用的可能性。

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

LINK-2.19%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 9
  • 转发
  • 分享
评论
0/400
末曾在场vip
· 07-25 03:29
欸欸 这可不就是LINK的用处嘛
回复0
Stake_OrRegretvip
· 07-24 19:30
link链 yyds
回复0
MEV猎人老王vip
· 07-24 15:06
LINK早涨知道吗
回复0
心若草莓冰vip
· 07-23 04:14
link绝对扛不住这波行情吧
回复0
not_your_keysvip
· 07-23 03:59
早买早解脱 $LINK 已被严重低估
回复0
GasFeeCriervip
· 07-23 03:59
link还看好吗
回复0
BearMarketBardvip
· 07-23 03:57
币圈无时无刻不在破圈
回复0
gas费烧烤摊vip
· 07-23 03:55
link已经跌麻了
回复0
熊市避雷针vip
· 07-23 03:55
Link牛逼啊!
回复0
查看更多
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)