精通以太坊-预言机
十一、预言机
为什么需要预言机?
为了保持共识,EVM的执行过程必须完全确定,并且仅基于以太坊状态和签名交易的共享上下文。这导致两个后果:一个是EVM和智能合约没有内在的随机性来源;另一个是外部数据只能作为交易的数据载荷引入。
假如提供随机性,网络将无法就结果状态应该是什么达成去中心化的共识。
引入外部信息,包括随机性、价格信息、天气预报等,当作随机源,作为发送到网络的交易的数据部分。
预言机的应用场景和示例
理想情况下,预言机提供了一种无信任(或至少近乎无信任)的方式来获取外在的(即“真实世界”或“链外”)信息。
可以将预言机视为弥合链外世界与智能合约之间差距的机制。
“证言”将成为未来区块链平台成功的重要组成部分,特别是在验证身份或声誉的相关问题方面,因此探索区块链平台如何为其提供服务非常重要。
预言机的设计模式
一旦数据在智能合约的存储中可用,其他智能合约就可以通过调用预言机智能合约的“检索”功能来访问它;它也可以通过“查看”预言机的存储直接由以太坊节点或支持网络的客户端访问。
设置预言机的三种主要方式可以分为请求与响应、发布与订阅和立即读取。
- 立即读取:那些希望查询此类数据的人倾向于在“即时”的基础上这样做;查找是在需要信息时完成的,可能永远不会再次查找。
- 发布与订阅:要对预期改变的数据(可能是定期和频繁地)提供有效的广播服务,预言机要么由链上的智能合约轮询,要么由链外守护进程监视和更新。
- 请求/响应:这是数据空间太大而无法存储在智能合约中的情况,并且用户每次只需要整个数据集的一小部分。
数据认证
两种常见的数据认证方法是真实性证明(authenticity proof)以及可信执行环境(Trusted Execution Environment,TEE)。
真实性证明是用密码学证据证明数据没有被篡改过。
Town Crier( http://www.town-crier.org/ )是一个基于可信执行环境的验证数据馈送预言机系统
计算性的预言机
预言机也可以用来执行任意计算,尤其是当给定gas上限和计算成本较贵时。
计算预言机也可以用来执行带有一组输入的相关计算并返回计算结果,而这种计算可能无法在链上进行。
去中心化预言机
去中心化预言机可以用于保证数据可得性,还可搭配链上数据汇总系统创建独立数据提供者网络。
谢林币协议:多个参与者记录数值,这些数值的中位数会被当成“正确”答案。记录者必须先质押保证金,这些保证金会根据它与中位数的接近程度重新分配,由此可以激励人们记录与其他人提供的值相近的值。这样共同的数值,也就是所谓的“谢林点”,预计会接近真实值,因为真实数值是响应者协作中所围绕的自然而明显的目标。
Solidity中的预言机客户端接口
使用Oraclize库。
疑惑
- 没太明白这章,具体预言机是怎么实现的?
- 需要多读几遍