专栏名称: 每日币读
及时了解新虚拟币上市与认购信息,帮您筛选靠谱好币
目录
相关文章推荐
白话区块链  ·  美总统特朗普发币,或许没你想的那么简单 ·  2 天前  
疯狂区块链  ·  总统是这么玩的 ·  2 天前  
51好读  ›  专栏  ›  每日币读

Asch 1.3 版本前瞻(上)

每日币读  · 公众号  · 区块链  · 2017-07-04 12:28

正文

本文转载自每日币读合作媒体:币视界

Asch是一个去中心化应用平台,它提供的服务包括一个公有链和一套应用sdk,这个公有链我们称之为主链,而使用这个应用sdk可以开发出一个拥有完整、独立的区块链的应用程序,并且这个应用程序可以与主链通过跨链协议互通资产。之所以采用这样的架构,主要是为了解决两个问题,一个是伸缩性,一个是耦合性。

我们先谈谈伸缩性问题。

我们都知道区块链系统的交易吞吐量普遍不高,增加节点和副本并不会提升交易性能,反而会降低,因为区块链系统中的每一个全功能节点都拥有全量的账本数据。

做过分布式软件的技术朋友都知道,一个分布式系统的性能主要体现在两个方面,一个是读的性能,一个是写的性能,前者是通过replication即副本机制来提升,比如常见的主从备份,一主多备等。而写性能主要是通过sharding,即分片机制来实现,不同的业务发给不同的节点来处理,每个节点就叫做一个shard,分片机制与副本机制也可以结合起来,一个shard背后有若干个副本,这样每个shard就成了一个集群,这是从高层架构的角度来解决读写性能的一般思路。所以,我们就可以理解为什么区块链系统做不到很高的交易吞吐量,也就是写性能不高,因为目前主流的区块链系统是一种全副本系统,没有做业务分片,因此读性能超高,写性能却超不过一台单机。而区块链的安全性很大一方面是因为拥有数量众多的副本,普通的攻击无从下手,攻破少量节点也无济于事。

那么,如何在保证高安全性的同时,提高吞吐量呢。

以太坊官方文档提出了一个三元悖论,即一个区块链系统的分散性、伸缩性、安全性三者不可兼得,最多得其二。其中,分散性可以用这个系统得以运行所依赖的最少硬件资源来衡量,比如说,这个系统是否能够在普通的个人电脑或廉价的vps上面运行,如果可以,那么它就有可能做到足够的分散性,因为其门槛低。反之,如果一个系统要求高端的服务器才可以运行,那么普通用户就无法运行,这个系统的主要节点可能会被大厂商垄断,这样的系统分散性就低。伸缩性指的是,系统能够处理的业务规模可以通过增加新节点的方式来提升。而安全性指的是系统的抵抗算力攻击的能力(这里主要是对于采用了POW算法的系统而言)。
       我很赞同这个三元悖论的理念,其实任何软件系统都需要在一些关键性能上做一些取舍,但我接下来会用另一种视角来分析这三个特性。

我们在三元概念的基础上,再加一个概念,叫做效率性,其衡量的指标主要是指系统的吞吐量和存储容量,并且提出一个二元悖论,即对于一个单独的区块链来说,分散性和效率性不可兼得。
然后说下结论:
      asch系统可以在保证安全性的同时,给用户(dapp开发者)提供在分散性和效率性做选择的权利,同时asch主链与dapp整体作为一个多链系统来看,是具备伸缩性的。其中,asch系统的安全性主要是指共识算法的安全性,asch系统(不管是主链还是应用链)普遍采用了PBFT优化后DPoS算法,关于这个算法的安全性我会在别的文章去分析。
        Asch系统的效率性,是通过提高节点设备要求来达到的。比如说一个高频交易所,可以设置少量节点,要求每个节点都是一个高级服务器,并且每个节点背后都有一个集群来处理和存储业务数据。
        Asch整体(主链与应用链)是一个多链系统,每个应用链彼此之间是独立的,也是并行的,虽然每个独立的链是不具备伸缩性,但可以通过增加新链的方式来实现伸缩性,同时也不会影响安全性,因为asch采用的共识算法决定了系统不会因为增加链使得算力分散从而导致安全性问题。

最后,我认为一个区块链系统需要足够的分散化,但不是必须要超高的分散化(像比特币那样),很多无政府主义者对联盟链嗤之以鼻,认为这种系统很难抵抗ddos攻击和政府的干涉,但我并不认为抵抗ddos和政府干涉是区块链必不可少的特性。而且抗攻击性可以通过传统的网络防护措施来解决,不是必须要超高的分散化才能解决。后面那个问题,我暂时不谈,我们开发asch的初衷也不在此。去掉这两条特性,我们看看区块链还剩下哪些优点,防篡改、公开透明、去中心、防止单点故障,关键性优点并没有少。这也是联盟链之所以会存在的原因。(Asch的定位仍然是公有链)

其实在1.0版本的时候,这套技术架构已具备雏形,只是一些细节不够完善。比如,1.0版本主链只支持单币种,能够与dapp互通的也只有XAS,dapp虽然可以自定义新的资产,但是与主链无法互通,应用场景收到很大限制,1.2版本在主链增加了用户发行资产的功能就是解决了这个问题。另外,1.3版本之前的跨链协议比较简单,主链与应用链之间的资产互通是通过一个多重签名的托管账户来实现,且此账户能够设置的多签用户数量最多为16,并且无法更新。1.3版本解决了这个问题。还有一个非常重要的问题,就是dapp框架的复杂性,目前在1.0版本要实现一个dapp业务逻辑,需要在一个框架内填写很多冗余的代码,甚至还包括底层的数据库处理,这对于开发者来说是非常不友好的,1.3版本会解决这个问题。
最后一个问题,是dapp的性能,我们实现了一个叫做smartdb的工具,它封装了对缓存和数据库的访问,支持不同粒度的自动回滚机制,开发者只需要关心需要增加或修改哪些数据,而不需要关心这些数据是在内存还是磁盘以及对数据的操作是否成功,在smartdb的支持下,dapp可以做到高性能的同时,又保持代码的简洁性(其开发难度接近于以太坊的solidity,远远低于lisk)

这篇文章会分为上下两个部分,上篇粗略介绍了一些背景知识和1.3更新的主要内容,下篇会从代码层面分析是如何实现的。
1.3版本的开发已经接近尾声,目前在进行测试和补全文档,大约需要一周左右时间,会先发布到testnet,试运行1-2月后正式发布到主链。


免责声明:文章仅为传递消息之用,不代表币视界观点,不构任何投资建议,炒币有风险,投资需谨慎!!!


推荐文章
疯狂区块链  ·  总统是这么玩的
2 天前
禅语心苑  ·  看看谁才是真心对你好的人
7 年前