Oracles
以太坊虚拟机的一个关键属性是它能够以完全确定的方式执行智能合约字节码。EVM保证相同的操作将返回相同的输出,而不管它们实际运行的计算机。这一特性虽然是以太坊安全保证的关键,但它通过阻止智能合约检索和处理脱链数据来限制智能合约的功能。
但是,许多区块链应用程序需要访问外部信息。这就是*oracles*发挥作用的地方。可以将Oracles定义为离线数据的权威来源,允许智能合约使用外部信息接收和条件执行 - 它们可以被视为弥合链上链下之间鸿沟的机制。允许智能合约根据实际事件和数据强制执行合约关系,大大扩展了其范围。可能由oracles提供的数据示例包括:
-
来自物理来源的随机数/熵(例如量子/热现象):公平地选择彩票智能合约中的赢家
-
与自然灾害相关的参数触发器:触发巨灾债券智能合约(对于飓风债券来说的风速)
-
汇率数据:将稳定币与法定货币准确挂钩
-
资本市场数据:代币化资产/证券的定价篮子
-
基准参考数据:将利率纳入智能金融衍生品
-
静态/伪静态数据:安全标识符,国家/地区代码,货币代码
-
时间和间隔数据:事件触发器以精确的SI时间测量为基础
-
天气数据:基于天气预报的保险费计算
-
政治事件:预测市场决议
-
体育赛事:预测市场决议和幻想体育合约
-
地理位置数据:供应链跟踪
-
损害赔偿:保险合约
-
其他区块链上发生的事件:互操作函数
-
交易天然气价格:gas价格oracles
-
航班延误:保险合约
在本节中,我们将在Solidity中检查oracles的主要功能,oracle订阅模式,计算oracles,去中心化的oracles和oracle客户端实现。