41

干货:教你识别哪些是炒作的伪Dapp

 5 years ago
source link: http://www.bitcoin86.com/block/37304.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

第0章 引言

Dapp这个概念在链圈广泛流传,却说不清道不明,这玩意到底是个啥。

neeYvar.png!web

第1章 数据加算法

网上那些乱七八糟的Dapp的定义,什么运行在 区块链 上,什么关不掉的APP,都太难理解了。我们换个角度来定义。

Dapp的就是“数据+算法”,只要区分清楚数据是什么,算法是什么,就可以定义出一个Dapp。

区块链 的本质就是通过特定的算法,将原本无序的数据(交易),变成有序的数据,并且变成是不可篡改的数据。

Dapp也是将特定的数据(交易),通过 区块链 本身算法,再额外配上Dapp的算法,来得出一些比区块里的数据,更特殊数据。

第2章 数据来自哪里?

Dapp的数据,按道理都应该是来自区块。但现在市面上有些Dapp并不是严格从 区块链 取数据。

BCH和BSV这两条链上搭建了许多Dapp,它们是遵守数据都取自 区块链 的。

比如memo.cash,这是一个去中心化的微博。所有通过按照memo.cash这个Dapp的规格来发送的交易,就是一笔100%符合BCH/BSV协议的交易,带一笔Op_return输出。所有这些交易,都是100%存储在BCH/BSV 区块链 上。Memo.cash并没有从 区块链 外取任何数据。Memo.cash将这些交易,能算自身的算法,解析成微博的样子,呈现给用户。

ETH上的很多Dapp,数据也都是取自ETH 区块链 。比如著名的加密猫,所有的数据都是通过符合ETH协议的交易来构造,并且存储在区块里。加密猫这个dapp的算法通过读取 区块链 上的的这些交易,并解析成用户看的到的各种成色的猫的图片。

ETH的Dapp的数据也有很多是来自链外数据。

EOS上的绝大多数Dapp,数据是同时部分在 区块链 和部分在链外。比如绝大多数EOS上的博彩游戏,都有一个关键性的数据——随机数,是来自服务器的,这个数据并不是按EOS协议构造出来的。

数据来自链上和链外有什么区别呢?

数据来自链上,就代表了数据是不可删除不可篡改的,这是Dapp真正能去中心化运行的关键。如果Dapp运行的关键数据有来自链外的,那这个运行结果就大大受这个链外数据影响,而链外数据不具备 区块链 的特性。

但数据只取自 区块链 ,应用场景是相当有限的。因为交易构造数据的能力是被 区块链 协议限制死了, 区块链 的性能也限制住了可用的数据量。这也是为什么市面上并没有多少严重遵守只从链上取数据的Dapp,绝大多数都采取了折中的办法,一部分数据来自链上,比如和币相关的数据都是链上,大量带有丰富的特性数据是来自中心服务器。

第3章 算法在哪里?

Dapp的算法是处理数据的那一部分程序。我们要看这些算法存储在哪里,以及被什么物理硬件运行。

BCH/BSV上的Dapp的算法,只可能是由链外的服务器来运行。算法的代码可以存储在链上,也可以只存储在服务器上,或者部分存在链上,部分存在服务器。

BCH/BSV上的Dapp和算法,基本上是不可能由 区块链 来运行,即矿工是完全不可能来运行这些Dapp的。因为比特币系统的计算功能是一个脚本引擎,可编程性远比虚拟机要小。

比如BSV上最近很火热的BitDb系列Dapp,算法都是跑在设计者的服务器上。

ETH上的Dapp算法,很多是直接运行在 区块链 上。是由矿工来执行算法的计算。因为ETH系统上部署有虚拟机,可以提供一个完整的计算机的功能。程序员可以编写出一套完全跑在ETH系统上的程序,不需要任何外带服务器。

最著名的Fomo3D就是这样,所有的数据和算法全部100%运行在ETH 区块链 上。

ETH上还有大量的Dapp的算法是部分在链上,部分在链外,或者完全在链外的。 以太坊 上的去中心化交易所就是账户系统是在链上,充值是在链上,但撮合引擎是在链外,提现也是由链外往链上提。

EOS上的Dapp和 以太坊 类似,即可以100%跑在链上,也可以在链外,或者两者都有。

算法在链上或链外,意味着什么呢?

算法代码存储在链上,同时算法还是跑在链上,就意味着算法的不可篡改性得到保证。但同时也意味着算法本身无法更新迭代。如ETH和EOS的部分Dapp那样。最经典的就是Fomo3D,那算法和数据都得到 以太坊 区块链 不可篡改不可删除的保护的。意味着,Dapp的规则不会有任何的改变。

如果算法只是代码存储在链上,但运行在链外。用户就需要额外做一个操作,对比下实际运行的算法是不是和存储在链上的代码是一致的。才能保证算法的不可篡改性。同时这种在链外运行的算法,是可以升级的。

如果算法连代码都不存储在链上,只运行在链外。则算法可变性就更灵活了。

第4章 算法开源可提供可信度

算法存储和运行在 区块链 上的主要目的就是提高可信度。但绝大多数软件,最好是需要更新换代,只有底层协议才不需要更新换代。而如果将算法跑在链上,那就丧失了更新换代的能力。

这里要说一下EOS,EOS上的合约是可以被覆盖的,这是EOS系统的设定。EOS上的运行在链上的Dapp的算法,也是可以更新换代的。

有没有一种即可提高算法的可信度,又可获得算法更新的办法呢?这就是开源了。但这个可信任度依然要依赖于专业人士的审核,普通用户是不具备这个能力的。

第5章 区块链 性能

将算法运行在 区块链 上,确实很酷,确实不需要开发者搞一台服务器,100%交给 区块链 上的矿工。但有一个非常残酷的事实, 区块链 无法同时运行大量的算法。目前的 区块链 性能压根就不支持同时运行很多的Dapp。

区块链 的并行计算能力是相当有限的。这是 区块链 所有的分布式节点都要达成共识,这一特性决定了的。

以太坊 运行加密猫这一个Dapp,在其火爆时,就让 以太坊 整个网络陷入了拥堵。

这就涉及到一个关键概念,可扩展性。将算法运行在 区块链 上的方案,是会伤害 区块链 的可扩展性的,这样的Dapp设计是不可扩展。而将算法运行在链上,则不会伤害 区块链 的可扩展性。

第6章 Dapp设计原则

现在我们知道了,Dapp=数据+算法。

数据可以全部来自 区块链 ,也可以部分来自 区块链

算法可以完全运行在 区块链 ,也可以运行在链外服务器。

数据100%在链上的Dapp才能获得 区块链 的去中心化、不可篡改和不可删除这些特性,否则直接使用中心化的服务器APP来设计就好了,没必要用 区块链

数据100%存储在 区块链 上,算法100%运行在 区块链 上,这种Dapp肯定不会倒闭。只要设计出来了,就可以永远存活下去。

数据存储在 区块链 上,算法运行中链外。也可以保证Dapp不会倒闭的。哪怕是现在的开发者不干了,关闭了服务器,别的开发者也是可以重新设计出算法,将数据从 区块链 上取出来运行。

只要有关键数据不存储在 区块链 上,那这种Dapp是可以倒闭的,别的开发者是无法恢复的。

算法100%运行在 区块链 上,这种设计是让 区块链 不可扩展。只有将算法的运行迁移到链上,一条链上才能并行运行大量的Dapp。

所以我觉得合理的Dapp设计原则是:数据100%在链上,算法100%运行在链外。

第7章 结束语

一不小心又吹了比特币(BTC/BCH/BSV)的简洁设计。

AD:

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK