什么是去中心化应用(DApp),北京杨小花dapp开发

(一)什么是DAPP?

DAPP是Decentralized Application的缩写,即去中心化应用,也有人称为分布式应用。它被认为开启了qukuailian3.0时代。

DAPP就是在底层qukuailian平台衍生的各种分布式应用,是qukuailian世界中的服务提供形式。DAPP之于qukuailian,有些类似APP之于IOS和Android。

(二)DAPP与智能合约、qukuailian的关系

可以认为,DAPP就是基于P2P对等网络而运行在智能合约之上的分布式应用程序,qukuailian则为其提供可信的数据记录。

(三)关于智能合约

智能合约是出现在bitebi时代之前,由尼克·萨博(Nick Szabo)在1996年首次提出的概念。他对智能合约的定义如下:

“一个智能合约是一套以数字形式定义的约定,包括合约参与方可以在上面执行这些约定的协议。智能合约的基本思想是,各种各样的合约条款可以嵌入到我们使用的硬件和软件中从而使得攻击者需要很大的代价去攻击。”

基于qukuailian的智能合约构建及执行分为如下几步:1、多方用户共同参与制定一份智能合约;2、合约通过P2P网络扩散并存入qukuailian;3、qukuailian构建的智能合约自动执行。

(四)DAPP的特点

目前对于DAPP的特点尚未取得统一看法,但是基本大同小异,这里试归纳如下。

1. DApp通过网络节点去中心化操作。可以运行在用户的个人设备之上,比如:手机、个人电脑。永远属于用户,也可以自由转移给任何人。

2. DApp运行在对等网络。不依赖中心服务器,不需要专门的通信服务器传递消息,也不需要中心数据库来记数据。数据保存在用户个人空间,可能是手机,也可能是个人云盘。

3. DApp数据加密后存储在qukuailian上。可以依托于qukuailian进行产权交易、销售,承载没有中介的交易方式。

4. DApp参与者信息被安全储存。可以保护数字资产,保证产权不会泄露、被破坏。

5. DApp必须开源、自治。可以由用户自由打包生成,签名标记所属权。它的发布不受任何机构限制。 各种创意与创新可以自由表达和实现。

(五)DAPP与APP的区别

从客户体验角度,APP相对于DAPP有四大问题,一是截留用户数据,二是垄断生态平台,三是保留用户权利,四是限制产品标准扼杀创新。

从技术角度,DAPP与APP区别主要有两个方面,一是APP在安卓或苹果系统上安装并运行;DAPP在qukuailian公链上kaifa并结合智能合约;二是APP信息存储在数据服务平台,可以运营方直接修改;DAPP数据加密后存储在qukuailian,难以篡改。

(六)DAPP的分类

根据去中心化的对象,DAPP可以进行分类。对于一个中心化服务器而言,包括计算、存储能力,以及所产生的数据三个方面,而由数据之前的关联度又产生了某种特定的“关系”。因此一般而言,去中心化包括以下几类,一是基于计算能力的去中心化(如POW机制),二是基于存储能力的去中心化(如IPFS),三是基于数据的去中心化(如STEEMIT);四是基于关系的去中心化(如去中心化ID)。

根据去中心化的方法,大致可以分为两类DAPP,分别是中介自动化DAPP与中介竞争化DAPP。其中中介自动化DAPP是通过中介自动化而去中心化,如通过qukuailian转移产权,把从国家掌控的集中程序转变成为需要任何中介,原先的中介成为自动化程序;而中介竞争化DAPP则是通过竞争去中心化,没有完全摆脱中介,而是让参与者选择他们信任的人,也就是说通过竞争去中心化。

根据网络服务形式的不同,DAPP可以分为四类,包括(1)媒体播放器,需要CPU原生代码虚拟机来去掉播放器中介;(2)Web服务(网站)中介利用用户数据作恶,需要类似Zui新的Lambda服务器(无数据Web服务)来解决;(3)运营商中介作恶,需要去中心化P2P网络,的确这也不一定需要qukuailian;(4)基于共识的用户态智能合约,只有这个需要qukuailian。这种分类以亦来云创始人陈榕为代表。

二、以太坊及其他公链DAPP应用分析

以下根据白皮书及相关信息对以太坊及其他公链进行简要分析。

(一)以太坊DAPP

以太坊协议Zui初是作为一个通过高度通用的语言提供如链上契约、提现限制和金融合约、赌博市场等gaoji功能的升级版密码学货币来构思的。以太坊协议将不直接“支持”任何应用,但图灵完备编程语言的存在意味着理论上任意的合约都可以为任何交易类型和应用创建出来。然而关于以太坊更有趣的是,以太坊协议比单纯的货币走得更远,围绕去中心化存储,去中心化计算和去中心化预测市场以及数十个类似概念建立的协议和去中心化应用,有潜力从根本上提升计算行业的效率,并通过首次添加经济层为其它的P2P协议提供有力支撑,Zui终,同样会有大批与金钱毫无关系的应用出现。

以太坊协议实现的任意状态转换概念提供了一个具有独特潜力的平台;与封闭式的,为诸如数据存储,赌博或金融等单一目的设计的协议不同,以太坊从设计上是开放式的,并且我们相信它极其适合作为基础层服务于在将来的年份里出现的极其大量的金融和非金融协议。

根据以太坊白皮书,一般来讲,以太坊之上有三种应用。

第一类是金融应用,为用户提供更强大的用他们的钱管理和参与合约的方法。包括子货币,金融衍生品,对冲合约,储蓄钱包,遗嘱,甚至一些种类的全面的雇佣合约。

第二类是半金融应用,这里有钱的存在但也有很重的非金钱的方面,一个完美的例子是为解决计算问题而设的自我强制悬赏。

Zui后还有完全的非金融应用,如在线投票和去中心化治理。

1、token系统

链上token系统有很多应用,从“代表如美元或黄金等资产的子货币”到“公司股票”,单独的token代表“智能资产”,安全的不可伪造的“优惠券”,甚至与传统价值完全没有联系的用来进行“积分奖励”的token系统。

在以太坊中实施token系统容易得让人吃惊。关键的一点是理解,所有的货币或者token系统,从根本上来说是一个带有如下操作的数据库:从A中减去X单位并把X单位加到B上,前提条件是(1)A在交易之前有至少X单位以及(2)交易被A批准。实施一个token系统就是把这样一个逻辑实施到一个合约中去。

2、金融衍生品和价值稳定的货币

金融衍生品是“智能合约”的Zui普遍的应用,也是Zui易于用代码实现的之一。实现金融合约的主要挑战是它们中的大部分需要参照一个外部的价格发布器;例如,一个需求非常大的应用是一个用来对冲以太币(或其它密码学货币)相对美元价格波动的智能合约,但该合约需要知道以太币相对美元的价格。Zui简单的方法是通过由某特定机构(例如nasidake)维护的“数据提供合约”进行,该合约的设计使得该机构能够根据需要更新合约,并提供一个接口使得其它合约能够通过发送一个消息给该合约以获取包含价格信息的回复。

3、身份和信誉系统

以太坊中提供与域名币类似的的名称注册系统的基础合约:

if !contract.storage[tx.data[0]]:

contract.storage[tx.data[0]] =tx.data[1]

合约非常简单;就是一个以太坊网络中的可以被添加但不能被修改或移除的数据库。任何人都可以把一个名称注册为一个值并永远不变。一个更复杂的名称注册合约将包含允许其他合约查询的“功能条款“,以及一个让一个名称的”拥有者“(即第一个注册者)修改数据或者转让所有权的机制。甚至可以在其上添加信誉和信任网络功能。

4、去中心化存储

以太坊合约允许去中心化存储生态的kaifa,这样用户通过将他们自己的硬盘或未用的网络空间租出去以获得少量收益,从而降低了文件存储的成本。这样的设施的基础性构件就是我们所谓的“去中心化Dropbox合约“。

这个合约工作原理如下。

首先,某人将需要上传的数据分成块,对每一块数据加密以保护隐私,并且以此构建一个默克尔树。然后创建一个含以下规则的合约,每N个块,合约将从默克尔树中抽取一个随机索引(使用能够被合约代码访问的上一个块的哈希来提供随机性), 然后给第一个实体X以太以支撑一个带有类似简化验证支付(SPV)的在树中特定索引处的块的所有权证明。当一个用户想重新下载他的文件,他可以使用微支付通道协议(例如每32k字节支付1萨博)恢复文件;从费用上讲Zui高效的方法是支付者不到Zui后不发布交易,而是用一个略微更合算的带有同样随机数的交易在每32k字节之后来代替原交易。

这个协议的一个重要特征是,虽然看起来象是一个人信任许多不准备丢失文件的随机节点,但是他可以通过秘密分享把文件分成许多小块,然后通过监视合同得知每个小块都还被某个节点的保存着。如果一个合约依然在付款,那么就提供了某个人依然在保存文件的证据。

5、储蓄钱包

假设Alice想确保她的资金安全,但她担心丢失或者被黑客盗走私钥。她把以太币放到和Bob签订的一个合约里,如下所示,这合同是一个银行:

Alice单独每天Zui多可提取1%的资金。

Bob单独每天Zui多可提取1%的资金,但Alice可以用她的私钥创建一个交易取消Bob的提现权限。

Alice 和 Bob 一起可以任意提取资金。

一般来讲,每天1%对Alice足够了,如果Alice想提现更多她可以联系Bob寻求帮助。如果Alice的私钥被盗,她可以立即找到Bob把她的资金转移到一个新合同里。如果她弄丢了她的私钥,Bob可以慢慢地把钱提出。如果Bob表现出了恶意,她可以关掉他的提现权限。

6、作物保险

一个人可以很容易地以天气情况而不是任何价格指数作为数据输入来创建一个金融衍生品合约。如果一个爱荷华的农民购买了一个基于爱荷华的降雨情况进行反向赔付的金融衍生品,那么如果遇到干旱,该农民将自动地收到赔付资金而如果有足量的降雨他会很开心因为他的作物收成会很好。

7、去中心化数据发布器

对于基于差异的金融合约,事实上通过过“谢林点”协议将数据发布器去中心化是可能的。

谢林点的工作原理如下:N方为某个指定的数据提供输入值到系统(例如ETH/USD价格),所有的值被排序,每个提供25%到75%之间的值的节点都会获得奖励,每个人都有激励去提供他人将提供的答案,大量玩家真正同意的答案默认就是正确答案,这构造了一个可以在理论上提供很多数值,包括ETH/USD价格,柏林的温度甚至某个特别困难的计算的结果的去中心化协议。

8、多重签名智能合约

bitebi允许基于多重签名的交易合约,例如,5把私钥里集齐3把就可以使用资金。以太坊可以做得更细化,例如,5把私钥里集齐4把可以花全部资金,如果只3把则每天Zui多花10%的资金,只有2把就只能每天花0.5%的资金。另外,以太坊里的多重签名是异步的,意思是说,双方可以在不同时间在qukuailian上注册签名,Zui后一个签名到位后就会自动发送交易。

9、云计算

EVM(虚拟机)技术还可被用来创建一个可验证的计算环境,允许用户邀请他人进行计算然后选择性地要求提供在一定的随机选择的检查点上计算被正确完成的证据。这使得创建一个任何用户都可以用他们的台式机,笔记本电脑或者专用服务器参与的云计算市场成为可能,现场检查和anquanbaozheng金可以被用来确保系统是值得信任的(即没有节点可以因欺骗获利)。虽然这样一个系统可能并不适用所有任务;例如,需要gaoji进程间通信的任务就不易在一个大的节点云上完成。然而一些其它的任务就很容易实现并行;SETI@home, folding@home和基因算法这样的项目就很容易在这样的平台上进行。

10、点对点赌博

任意数量的点对点赌博协议都可以搬到以太坊的qukuailian上,例如Frank Stajano和Richard Clayton的Cyberdice。 Zui简单的赌博协议事实上是这样一个简单的合约,它用来赌下一个区块的哈稀值与猜测值之间的差额, 据此可以创建更复杂的赌博协议,以实现近乎零费用和无欺骗的赌博服务。

11、预测市场

不管是有神谕还是有谢林币,预测市场都会很容易实现,带有谢林币的预测市场可能会被证明是第一个主流的作为去中心化组织管理协议的“ futarchy”应用。

12、链上去中心化市场

以身份和信誉系统为基础。

(二)以太坊的问题及其他公链的兴起

qukuailian2.0是以智能和约平台为特征的以太坊qukuailian。从连接用户日常场景的角度来说,以太坊 EVM 存在两个主要问题:

1. 单主链结构,计算能力有上限,无法扩容;

2. qukuailian作为存储和计算空间,无法支持用户日常生活场景,无法应用数字内容。

目前各公链都针对DAPPkaifa和完善以太坊基于不同的角度提出了各种方案。

(三)其他主要公链特点

以下简要介绍亦来云(elastos)、EOS、NEO、墨客链(MOAC)。

1、亦来云(elastos)

亦来云(elastos)通过提供可信运行环境,致力于打造智能万维网。亦来云不需要结合安卓或IOS都可以运行,是完全单一的,所以是世界上仅有的分布式可信操作系统,基于可信属性和独立运行环境,这个操作系统可以承载大规模应用。

具体来说,一是亦来云采用主链 + 侧链的弹性qukuailian设计结构。主链只负责基本的交易和转账支付;侧链执行智能合约支持各种应用和服务,每条qukuailian都是一台服务器。二是亦来云通过 Elastos Runtime 将 App 运行在相互隔离的进程、通信受限的沙箱环境中。所有网络数据必须通过安全、可信、可识别身份的通道发送,这些身份识别和鉴权都来自于qukuailian身份 ID。这样就让qukuailian的可信传递到 Elastos Runtime。而 Elastos Runtime 可以有多种形态:可以是独立 OS,可以是 VM 虚拟机,可以是结合原生 App的 SDK。

亦来云(elastos)设计基本理念是:

(1) 采用C/C++、JAVA、HTML5/JS三类语言并重的kaifa模式,其C++编程API基本对应安卓Java API,实现云、管、端三位一体统一管理;

(2) 作为容器沙箱,亦来云OS禁止App直接创建进程,不允许App直接访问TCP/IP,以期隔离病毒传播途径;

(3) 亦来云分布式框架(Elastos Framework)代App创建和查找部署于本地、周边、云里的微服务,自动生成远程调用及事件回调,以期规避从第三方应用或服务发起网络攻击的可能性。

(4) 利用qukuailian进行用户ID确认,进而对数字内容及物联网设备进行资产确权。

(5) 智能合约只运行于相关侧链协议授权方节点,从而提高验证效率并可兼容法定数字货币。

2、EOS

EOS通过共识算法 (DPOS)来解决可扩展性的问题,DPOS每 3 秒生成一个区块,并且在任何时间点都只有一个被授权的生产者来生成区块。这样EOS可以说同时做到了承载大量用户、速度快(仅仅需要3S)、交易费用这几点。但DPOS机制可能存在的不足是:临时股东大会制度,会导致出块的永远都是那些拥有大量代币的用户,结果大部分的奖励都被他们拿走了,进一步造成“贫富差距”,恶性循环,Zui终成为一个巨头垄断的中心化网络。

EOS突出特点如下,

一是EOS免手续费。EOS21个出块节点和100个候选节点加起来成本不会超过千万。这是低费用的基础。EOS通过每年增发代币,也就是通胀作为奖励来支付节点成本。

二是EOS通过抵押代币防止垃圾交易攻击。一个应用抵押EOS给系统,换取相应比例的计算、存储和带宽资源。

3、NEO

NEO主要具有如下特点:

一是NEO采取DBFT共识机制,在牺牲去中心化和安全性的前提下,旨在提升公链性能。

二是与以太坊solidity相比,NEO对于智能合约kaifa者更为友好,可以用他们擅长的语言而不需要学习新的编程语言,可操作性极高。

三是与以太坊智能合约相比,NEO智能合约2.0可扩展性更强.NEO通过将智能合约哈希值记录在链上,在执行合约时再从链外加载代码。

四是NEO在理论上具备抗量子计算机的能力。NEO引入基于Lattice(格密码学)的签名和加密技术,将加解密问题归约到量子计算机尚无法解决的SVP(Zui短向量问题)。

4、墨客链(MOAC)

墨客链MOAC,Mother of All Chain Blockchain (简称 “MoacChain”,中文音译为“墨客链”,又称“众链之母”)是一个开源的qukuailian平台。

第一,墨客链(MOAC)的主链是可扩展且有弹性的。墨客链(MOAC)主链的特性具有可扩展。墨客链采取了分片sharding技术,可以将墨客分为无数逻辑子网,使得并行计算成为可能,大幅度提高处理速度。在墨客链中,无数的逻辑子网就是平时我们所说的节点网络。

第二,墨客链(MOAC)异步智能合约的调用,大大增加处理智能合约的数量。而墨客采取了异步智能合约调用,使得调用和返回可以跨区块运行,极大的加快了智能合约的处理速度。防止墨客链的拥堵,甚至可以说,墨客链(MOAC)在以后的运行中,不存在拥堵的现象。

商务达