{"content":{"title":"预言机（Oracle）的学习 （一）","body":"# 一.什么是预言机\r\n## 1.定义\r\n预言机是获取，验证和传输存储在链下的信息到运行在区块链上的智能合约的应用程序。（我觉得预言机就是一个缩小版的区块链系统）\r\n在计算机领域，预言机又是一种抽象电脑，又称谕示机。预言机具备图灵机的一切功能，并额外拥有一种能力：可以不通过计算直接得到某些问题的答案，这个过程叫做Oracle（神谕）。也就是说，预言机可以解决图灵机通过计算也无法解决的问题，比如从外界获取问题的答案。\r\n## 2.预言机的组成\r\n预言机由运行在链上的智能合约和一些链下组件组成。链上合约接收来自其他智能合约的数据请求，并将其传递给链下组件（预言机节点）预言机充当现实世界和区块链的“桥梁”，即将区块链上的智能合约连接到链下数据源。如果没有预言机，智能合约只能访问链上数据。预言机和智能合约还创建了“混合型智能合约”，即基于链上合约代码和链下基础设施组合运行的合约。\r\n### 3.预言机的类型\r\n### 3.1中心化预言机\r\n中心化预言机是由一个实体控制的，负责聚合链下的信息，并按要求更新预言机合约的数据。中心化预言机是高效的因为他是依赖单个真实的数据源。但也存在其他问题：\r\n1.低的正确性保证。使用中心化预言机，无法保证数据来源是否正确，且容易被黑客攻击\r\n2.oracle并不能保证一直让链下数据对其他智能合约可用。如果提供商决定关闭服务，或者黑客劫持了oracle的链下组件，那么智能合约将面临拒绝服务(DoS)攻击的风险。\r\n### 3.2去中心化的预言机\r\n去中心化预言机是通过消除单点故障来克服中心化预言机的局限性。去中心化Oracle是由点对点网络中的多个节点构成，这些节点通过共识机制判断是否将数据送到智能合约。\r\n使用去中心化Oracle有以下几个好处:\r\n1.高的正确性保证。\r\n分散的节点使用不同的方法实现数据的正确性。且要超过一半的节点达成一致。保证了返回的数据的真实性和完整性。\r\n2.保证数据的完整性和真实性。\r\n传输层安全 (TLS) 证明：Oracle 节点通常使用基于传输层安全 (TLS) 协议的安全 HTTP 连接从外部源检索数据。一些去中心化的预言机使用真实性证明来验证 TLS 会话（即确认节点和特定服务器之间的信息交换）并确认会话的内容没有被更改。\r\n可信执行环境 (TEE) 证明：可信执行环境(TEE) 是一个沙盒计算环境，它与其主机系统的操作过程相隔离。TEE 确保在计算环境中存储/使用的任何应用程序代码或数据都保持完整性、机密性和不变性。用户还可以生成证明以证明应用程序实例正在受信任的执行环境中运行。\r\n# 二.预言机的问题\r\n预言机将外部数据传输到区块链中，让智能合约访问链小数据，但是也带来了其他的新问题：\r\n1.怎么验证传输的信息是来源于正确的数据源，数据源真实可信？\r\na)数据源选取和可信认证。预言机需要谨慎选择外部数据源，必须保证对每个选取的外部数据源，都可以验证是可信的。例如：对于web的数据获取，需要持有相关证书。\r\nb)数据获取有标准流程。开发者必须明确执行引擎、用户、外部数据源与预言机的数据交换流程，且对于不同的数据源类型要能够统一或明确区分数据的交互流程，确保交互方案可执行可落地。\r\nc)数据交互格式统一。不同的数据源类型有不同的数据交互格式，以传感器作为数据源和以Web作为数据源获取到的数据格式是不一样的，针对不同情况，明确统一的数据编解码层，以对不同数据源的数据进行请求和解释。\r\n2.如何保证传输过程中数据的安全性？\r\n预言机通过两个阶段对进行中的数据实现可靠保证。\r\na）数据从网上到本地，采用HTTPS协议（底层采用TLS协议）去保障连接和数据的正确性、完整性。\r\nb）数据从本地到链上，预言机采用可信执行环境 ( TEE ) 技术，TEE是CPU内一块安全区域，和操作系统独立运行，可以确保数据处理过程中的机密性、可靠性，趣链区块链平台研发了基于SGX的TEE实现以及基于国产芯片的TEE实现，进行预言机的安全保护。\r\n# 三.当前市场的预言机项目\r\n## 1. ChainLink\r\nChainlink建立了一个去中心化的数据网络，每个预言机都是网络中的一个节点，其架构分为链上组件和链下组件。链上组件负责和用户交互，收集、响应用户请求，而链下组件则是之前提到的数据网络，用于处理数据获取和传输。\r\n在这个架构中，由于Chainlink是一个分布式的数据网络，所以可以避免单点故障的问题，但同样地，因为增加了分布式的数据一致性需求，其性能和实现难度成为了新的难题。Chainlink 的目标是构建一个完全去中心化的预言机网络，网络节点兼容以太坊、比特币和 Hyperledger，并支持模块化：系统的每个部分都支持升级。其主要的想法是为预言机打造一个可信的市场。有良好行为的预言机节点会受到激励，其表现和声誉会公之于众，反之有恶意行为的节点会受到惩罚。\r\n## 2. DOS Network\r\nDOS Network是一种可扩展的 layer2 协议，它为主流区块链提供分散的数据馈送 oracle 和分散的可验证计算 oracle。它将链上智能合约与链下互联网数据连接起来，为区块链提供无限可验证的计算能力，使更多的商业应用能够与真实世界的用例相结合。\r\n## 3. Provable\r\nProvable是一款中心化的预言机应用服务，为Ethereum、Rootstock、R3 Corda、Hyperledger Fabric、EOS等区块链提供预言机服务。\r\nProvable开发的解决方案是使用中心化预言机，并证明从原始数据源获取的数据是真实的和未被篡改的。证明通过返回的数据与称为真实性证明的文档一起实现。真实性证明可以基于不同的技术，例如可审计的虚拟机和可信执行环境。\r\n# 四.总结\r\n从功能角度来看，预言机的功能比较纯粹，主要解决区块链内外数据可信连通问题。针对不同的信任场景，预言机也采取了中心化和非中心化的两种方式提供服务。\r\n从应用场景来看，链外数据是一个很大的生态，预言机可以应用在公开网站信息、物流追踪、资产评估等多场景。预言机的发展一方面依赖于区块链的发展，一方面又助力区块链的业务延伸，随着区块链在金融、保险、物联网等行业生态规模的扩大，预言机未来的生态价值也很值得期待。\r\n从商业角度来看，预言机模式其实类似一个数据服务提供商，中心化预言机的商业模式本质上是一个数据服务平台，而去中心化预言机是一个多元的数据服务生态，两者发展方向各有千秋。"},"author":{"user":"https://learnblockchain.cn/people/9433","address":null},"history":null,"timestamp":1669274608,"version":1}