预言机
在区块链和智能合约的背景下,预言机只是一个代理,用于查找并验证真实世界的事件并将此信息提交给智能合约使用的区块链。
智能合约包含资产,并且只有在满足某些预定条件时才解锁该资产。当达到一个特定的值时,智能合约改变其状态并执行程序化的预定义算法,自动触发区块链上的事件。预言机的主要任务是以安全可信的方式将这些值提供给智能合约。
区块链不能访问网络之外的数据。 预言机是一种数据传送,由第三方服务提供,用于区块链上的智能合约。当预定条件满足时,预言机提供外部数据并触发智能合约执行。这种情况可以是任何数据,如天气温度,成功支付,价格波动等。
预言机是多重签名合同的一部分,例如原始受托人只有在满足特定条件时才签署有关将来释放资产的合同。在任何资产被释放之前,预言机还必须签署智能合约。
预言机的类型
根据使用类型有不同类型的预言机。
Software Oracles:用于处理在线信息。例如温度,商品和商品价格,航班或火车延误等。数据来源于在线资源,如公司网站。Software Oracles提取所需信息并将其推送到智能合约中。
Hardware Oracles:一些智能合约需要直接来自物理世界的信息,例如汽车越过障碍物,移动传感器必须检测车辆并将数据发送至智能合约。另一个用例是供应链行业的RFID传感器。Hardware Oracles的最大挑战是在不牺牲数据安全性的情况下报告数据的能力。 Oracles通过提供传感器读数和防篡改机制的密码证据,提出了两步的解决风险的方案,使得设备在违规情况下无法工作。
Inbound Oracles:提供来自外部世界的数据的智能合约。例如,如果美元达到一定价格,自动执行买入指令。
outbound Oracles:提供了将数据发送到外部世界的智能合同。例如,物理世界中的智能锁会在其区块链地址上收到付款并需要自动解锁。
Consensus Based Oracles:如Augur和Gnosis预测市场时,严重依赖预言机来确认未来的结果。只使用一种信息来源,可能存在风险。为了避免操纵预测市场,实现了预言机的评级系统。为了进一步的安全性,可以使用不同的预言机的组合,例如用5个预言机中的3个输出作为事件的结果。
安全挑战
预言机是第三方服务,不属于区块链共识机制。 预言机的主要挑战是人们需要信任这些信息来源。 无论是网站还是传感器,信息的来源都需要值得信赖。 可以使用不同的可信计算技术来解决这些问题。 例如Oracalize等公司一直在利用基于TLSNotary的技术。 Town Crier则专注于利用英特尔的Software Guard Extensions (SGX)。 提供可靠的信息来源的智能合约对用户来说至关重要,因为一旦出错就没有后悔药吃。
分散式应用程序(dApp)
分散式应用程序(dApps)是在多台计算机的P2P网络上运行的应用程序,而不是在一台计算机上运行的。 dApps自P2P网络出现以来一直存在。 它们是一种软件程序,其设计目的是以不受任何单一实体控制的方式存在于互联网上。
分散式应用程序不一定需要在区块链网络之上运行。 BitTorrent,Popcorn Time,BitMessage,Tor都是在P2P网络上运行的传统dApp,但并不是在区块链上(区块链是一种特定的P2P网络)。
与简单的智能合约相反,就比特币的经典意义而言(A转账给B),dApps在市场上的各个方面拥有无限数量的参与者。
DApps vs Smart Contracts
dApps是一个“支持比特币”的网站,其中智能合约允许它连接到区块链。 了解他们之间的区别的最简单方法是了解传统网站的运作方式。
传统的Web应用程序使用HTML,CSS和JavaScript来呈现页面。 它还需要利用API从数据库中获取细节。 当您进入Facebook时,该页面将调用API来获取您的个人信息并将其显示在页面上。
dApps类似于传统的Web应用程序。 前端使用完全相同的技术来渲染页面。 一个关键的区别是,没有连接到数据库的API,而是有一个智能合约连接到区块链
与传统的集中式应用程序(后端代码在集中式服务器上运行)相反,dApp的后端代码运行在分散式P2P网络上。 分散式应用程序由从后端到前端的整个软件包组成。 智能合约只是dApp的一部分。
另一方面,智能合约仅包含后端,并且通常只包含整个dApp的一小部分。 这意味着,如果您想在智能合约系统上创建分散式应用程序,则必须合并多个智能合约,并依靠第三方系统作为前端。
dApp可以用何语言编写前端代码和用户界面(就像应用程序一样),可以调用其后端。 此外,其前端可以托管在分布式存储上,如Swarm或IPFS。
dApps Requirements
如果一个应用程序为基于区块链的dApp,它必须符合以下条件:
(1)必须完全开源。它必须自主运作,并且没有实体控制其大部分代币。 应用程序可能会根据建议的改进和市场反馈调整其协议,但其用户必须在所有更改上达成共识。
(2)应用程序的数据和操作记录必须以加密方式存储在公共的,分散的区块链中,以避免出现中心节点故障。
(3)必须使用访问应用程序所需的加密代币(比特币或其系统本身的令牌),并且(矿工)的任何贡献应得到应用代币奖励。
(4)应用程序必须根据标准加密算法生成代币,作为节点为应用程序做出贡献的证明(比特币使用PoW算法)。
dApp开发过程
(1)白皮书和相关协议。发布白皮书描述dApp及其功能。 白皮书可以概述dApp开发的想法,但也需要一个工作原型。
(2)建立初始的代币。
(3)初始发行代币,分散Dapp的所有权。
(4)开发和部署。
Example: Ethereum dApps
以太坊计划为分散式应用程序创建协议。 以太坊为开发人员提供了一个基础层:内置确定型图灵机编程语言的区块链,它允许任何人编写智能合约和分布式应用程序,在这些应用程序中他们可以为所有权,交易格式和状态转换创建他们自己的任意规则。 总的来说,在以太坊之上有三种类型的应用程序:
(1)金融应用。为用户提供更强大的管理方式,用他们的订合同
(2)半金融应用。涉及货币的方面,但是所做的事情也有非常重要的非货币方面的。
(3)政府应用。如,在线投票,分金融的分布式管理。
dApps的例子
(1)代币系统:区块链代币系统有许多应用程序,从代表资产(如美元或黄金)的子货币到公司股票,代表智能财产的个人代币,安全且不可伪造的优惠券,甚至与传统货币无关的代币系统,用作激励的积分系统。
(2)金融衍生工具和价值稳定的货币:例如,一个非常理想的应用程序是一个智能合约,通过使用数据馈送(如来自纳斯达克),避免以太币相对于美元的波动性。。
(3)身份与声誉系统:声明土地所有者名称的合同可以添加到以太坊网络中,但不能修改或删除。任何人都可以注册一个具有一定价值的名称,然后该注册将永久保存。
(4)分散式文件存储:类似Dropbox的dApp,其中智能合约将所需数据分成块,对每个块进行隐私加密,并从中构建Merkle树,然后将整个数据分散到计算机的p2p2网络。但私人数据不会存储在区块链中。
(5)分散的自治组织(DAO):拥有一定数量的成员或股东的虚拟实体,可能拥有67%的多数股份,有权使用该实体的资金并修改其代码。成员们将共同决定组织如何分配资源。
在开放源代码的许可下,允许dApps在不受版权或专利限制的情况下开放创新。 另外,通过完全开放源代码,分散式应用程序可以在开源软件的合法模式下运行。 比如,比特币使用MIT开源软件许可证。
-
物联网
+关注
关注
2904文章
44325浏览量
371608 -
区块链
+关注
关注
110文章
15560浏览量
105823 -
以太坊
+关注
关注
14文章
1838浏览量
31915
原文标题:当物联网邂逅区块链
文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论