将区块链外部信息写入区块链的机制通常称为预言机机制。 4 z, U; ^) f5 s Q) \* v3 W: Y
4 Z; v- C4 _4 t9 X& E( }$ `
预言机(oracle)的功能是将外部信息写入区块链,以完成区块链与现实世界之间的数据交换。 它允许确定的智能合约对不确定的外部世界做出反应。 这是智能合约与外界互动的唯一方式,也是区块链与现实世界互动的界面。
+ F; {: e8 s: H% A/ ~6 X. M$ j8 E/ P9 s) n& g1 d" B8 S% U* a
为什么区块链需要预言机?/ s. U T0 ]) ?4 X9 t
. W# T/ ?% {) R2 u/ q/ h5 M1 J区块链是确定性的封闭系统环境。 目前,区块链只能获取链中的数据,而不能获取链外的真实数据。 区块链和现实世界是分开的。
, C4 k: s- z* @- o
5 f) H; G, z/ S% t一般智能合约的执行需要触发条件。 当智能合约的触发条件是外部信息(链外)时,需要一个oracle提供数据服务,并且由于智能合约不支持外部请求,因此将真实数据输入到区块链上。 ; L) [9 }- Q, z6 l$ A5 W" g5 M
0 ]2 R1 m1 y9 q# W% D区块链是一个确定性的环境,它不允许不确定的事物或因素,无论智能合约在何时何地运行,智能合约都必须是一致的结果,因此虚拟机(VM)不允许智能合约存在网络调用 (网络通话),否则结果不确定。 5 t6 ]1 B$ {" Q: [+ u/ G6 q
) C) o/ X2 m# Z4 {& W, t/ c# x也就是说,智能合约无法执行I / O(输入/输出,即输入/输出),因此它无法主动获取外部数据,只能通过以下方式将数据发送到智能合约。
: j" a7 L; Q4 a1 g8 p: J6 p- u, l. q- G$ z, l* m
因为智能合约无法主动去获取链外的数据,只能被动接受数据。所以说区块链需要预言机。9 n' u8 \! x* m: e
( P R* y9 f. m/ @' A
4 u6 c0 u6 _- g( O6 I5 e* O
, {; O* b* o& ?# R3 T/ y* l4 z
为什么DeFi需要预言机?
- f; F! q; P& O7 n
5 o# F; N5 s0 x! u; {& U$ p预言机在区块链世界中有很多应用场景,DeFi(去中心化金融)领域可以说是预言机用的最多的领域。
5 p# P7 j8 k3 b |7 r$ }4 R4 i; s& Z
# ~6 u/ a3 M5 ~" d B像DAI这样的稳定货币系统需要获取ETH的实时价格,以确定抵押的加密货币是否已达到平仓价并触发平仓。 假设有1000个节点,那么您需要发出1000个API数据请求以进行交易所(例如MXC抹茶交易所)的ETH / USDT交易对。 但是,由于ETH的价格实时变化,加上网络延迟和计算,由于速度和其他原因,每个节点获取的价格可能会有所不同。 在将这部分数据输入到智能合约之后,节点无法达成共识,并且整个系统将崩溃。 * i# B7 T6 k* M& h' `$ Y: d8 o
; n& a' c% b3 V: E$ ]
因此,在DeFi领域中,稳定币,去中心化杠杆交易,金融衍生品交易等都需要使用oracle,但是从短期来看,大多数项目都选择使用自己的oracle服务,但实际上这会带来很多问题 例如单点故障,易受攻击等,例如,著名的衍生品交易平台Synthetix在6月19日遭受了oracle攻击,损失了超过3,700万ETH。 |