一、共识问题
智能合约不需要获取外部API,而是第三方实时监控区块链状态,然后做出相应的反馈。例如,合作的期货交易所实时监控区块链,然后根据链上的交易情况做对应的资金转移,这样就不会对区块链共识产生威胁。
二、受信任方问题
Oracle预言机是一种可信任的实体,它通过签名引入关于外部世界状态的信息,从而允许确定的智能合约对不确定的外部世界作出反应。预言机具有不可篡改、服务稳定、可审计等特点,并具有经济激励机制以保证运行的动力。目前来说,预言机有两种模型,一个是单一模型,另一个是多重模型,有时候多重模型又称为Oracle网络
单一模型只包含一个预言机,这一预言机是可信任的,它会正确地执行代码,合约的参与者能确信它不会与合约的某一参与方相勾结,单一模型类似于软件即服务提供者。对于大部分应用,单一模型已经就足够安全,并且经济实惠。目前一个单一模型的实例是Oraclize。
多重模型包含多个预言机,甚至是预言机网络。虽然单一可信任的预言机对大多数用户来说已经足够了,但是高价值的资产处理需要更高的可信任度,这就需要用到多重模型。在这一模型中,代码的执行分布在若干独立的预言机中,例如10个,将这10个预言机的数据设置一个可信临界,临界值数量的智能预言机必须就结果达成一致。例如,用户使用7/10模型,只有当等于大于7个智能预言机一致时,合同才能够执行。这一模型留出了3个缓冲,也许有的智能预言机离线,有问题或者被黑客攻击,只要不多于3个不影响合同代码的执行。多重模型比单一模型更加复杂,成本更加高,但是它提供了更好的安全保障
三、单一模型预言机运作方式
1、Oraclize简介
Oraclize是一个独立的服务提供商,目前提供免费的数据输送服务,其目的是在区块链和互联网之间建立一道可信的数据网关,其目标是打破智能合约获取数据的束缚,在保证可信的情况下,使其具有访问互联网数据的能力。Oraclize不是想让智能合约的开发者信任这个组织,因为不论任何信任,都可以从技术上篡改数据,无法真正从技术保证安全,而是通过提供多种加密证明方法,构建可信的预言机
Oraclize提供了多种数据源服务器,包括Url访问、数据搜索引擎、区块链内容数据、IPFS文件访问等等,其中Url访问和区块链内容数据提供了基于TLSNotary的可信证明技术,也是常见的数据访问需求。对于基于TLSNotary的可信证明可以根据用户的需求开启和关闭,因为虽然目前该服务是免费的,但是随着以后Oraclize的正式版发布以及推广期的结束,可信证明技术是需要更多的收费,用户可以基于成本考虑选择是否使用
四、 Oraclize可信证明机制原理
Oraclize之所以可以提供一个可证明的诚实从外部世界安全获取信息的能力,是依赖于TLS证明技术(TLSnotary),除此以外,Oraclize还提供了其他两种证明机制:Android SafetyNet证明、IPFS大文件传送和存储证明,由于使用较少,本文不做详细展开。。
TLSnotary证明主要基于安全传输层协议TLS 1.1,TLS用于在两个通信应用程序之间提供保密性和数据完整性,最大优势就在于独立于应用协议,更高层协议可以透明地分布在 TLS 协议上面。
TLS包含三个基本阶段:1.对等协商支援的密钥算法,2.基于私钥加密交换公钥、基于PKI证书的身份认证,3.基于公钥加密的保密数据传输。在整个传输中,TLS的master key可以分成三个部分:服务器方、受审核方和审核方。在整个流程中,互联网数据源作为服务器方,Oraclize作为受审核方,一个专门设计的,部署在亚马逊云上的开源实例作为审核方,每个人都可以通过这个审计方服务对Oraclize过去提供的数据进行审查和检验,以保证数据的完整性和安全性。
五、多重模型预言机运作方式
与单一模型不同,多重模型需要面对女巫攻击(Sybil attack)和共谋攻击(collusion attack)
http://docs.oraclize.it/#home
更详细内容可查看https://blog.csdn.net/sportshark/article/details/77477842