-
Notifications
You must be signed in to change notification settings - Fork 2
/
区块链中的 Oracle (链芝士)
70 lines (30 loc) · 3.05 KB
/
区块链中的 Oracle (链芝士)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
区块链本身并不是一个封闭的体系,它和外部信息存在沟通的渠道,而这在区块链中叫做 Oracle ,那么当区块链向外部世界获取信息时,又会发生什么呢?
随着去中心化金融(DeFi)的增长,
在商业模式中使用智能合约的公司数量呈现激增的态势。
部署在区块链之上的业务逻辑管理着越来越多的资产和交易。
然而,其中一些逻辑依赖于链下信息,例如股票和商品价格。
那么如何知道这些数据是否可靠?
除了一个基于区块链的应用程序,还必须使用 oracle 来收集外部数据。
当中本聪发明区块链技术之初,他就解决了一个根本性的难题:
他的设计确保了多方之间的信息有效性,并且不互相信任,不通过安全通道进行通信。
比特币以及其他的后续区块链解决方案通过在构建事务时使用公钥加密来解决这个问题,
事务发送方定义了所转送资金的访问条件;如果另一方展示了正确的密钥,即对这笔资金拥有合法的权益。
上述过程并不依赖于信任,网络中的任何成员都可以对事务进行验证。
区块链从创世区块开始,每个区块包括按照时间顺序推进的事务,而这些事务可以追溯到创世区块,这为区块链中包含交易的有效性提供了信任来源。
所以在涉及到具体的事务时,区块链是一个封闭的系统,信息是结构化和可验证的,可以确认区块中包含的事务是安全的,其安全性取决于共识机制本身。
当然,事务中也可以包含外部信息,那么虽然事务本身是有效的,它里面的信息却并不一定是有效的。
Oracle 的核心思想是:验证通过不受信任的渠道传播的任意数据的有效性。
举个例子:假设比特币的二元期权合约在本周末到达一万美金,并且合约是在以太坊中部署的,
支付比例是 2:1 ,即如果用户想要签订合约,会将以太币转移到对应的智能合约地址,并记录发送方的地址,
并且在一周结束后,可以调用合约以确定是否赢得赌注。
如果 Binance 上的价格高于或等于一万美金,那么合约支付的金额是发送方的两倍。
上述例子中包含两个信息来源,一个通过以太坊协议验证,而另一个不可验证。
协议可验证的信息包括期权合约的所有者。这可以由任何人验证,
因为以太坊通过使用公钥加密构建事务的方式,
网络中的每个成员都可以对期权奖励的合法性进行验证——只有能证明将初始资金发送到同一账户才能获取奖励;
那么以太坊网络中的节点如何确保有关比特币价格信息是准确的呢?
数据如何被证明是准确的并且没有被篡改?
传递数据的 oracle 是集中的还是去中心化的?
如果区块链是确定性的,那么如何创建随机数?
数据源的抉择又该何去何从?
在下篇文章中,会详细探讨上面列举出的一系列问题,期待再会~