以太坊(Ethereum)作为一个有智能合约功能的开源公共区块链平台,其应用数据都分布在同一区块链上。随着开发应用的数量逐渐增加,应用数据越来越多,致使用户在使用过程中下载大量的冗余数据,而那些硬件未及时更新的用户就很难继续正常运行使用,因此,在某种程度上使得区块链失去了去中心化的特征。
侧链作为主链的一个扩展,可以有效的扩充主链的功能。阿希(Asch)是一种新型的基于侧链架构的区块链开发平台,结构设计更加灵活,在一定程度上弥补了主链空间不足的问题。
那么,阿希平台究竟是什么?相比与以太坊,有什么独特的优势?如何基于侧链技术实现资产跨链流通?为什么说这个平台更适合区块链企业初创者进行DApp开发?希望以下内容对你有所帮助。
单青峰 阿希系统创始人
作者 | 单青峰
整理 | kou
以下为单青峰在CSDN主办,区块链大本营、柏链道捷(PDJ Education)以及极客帮创投协办的第6期CSDN区块链技术沙龙上的发言内容,区块链大本营在不改变原意的情况下作了精心整理。
很高兴能在这里分享区块链的相关技术,今天主要讲一下基于侧链架构的区块链开发平台——阿希,接下来我就简单谈一下我们平台的由来。
我们在2016年引入了跨链和侧链的概念。从那个时期开始,各行各业都想要结合区块链技术,不过那时候更多是复制一套比特币系统,或者说其他的一些开源系统,然后发行一个数字资产,或是象征性的接入到区块链这个概念。
但是随着智能合约这个概念的提出,我们看到有越来越多成功的应用实例,虽然目前以太坊的智能合约只能用于某些概念性的验证,但是我们看到了一些跟区块链结合的传统应用场景是非常有前景和大有作为的。
我们希望能提供一种低门槛的技术,让更多的行业和开发者或者是企业,特别是中小型企业,能够快速的应用区块链技术。
如何做到灵活开发DApp?侧链来解决!
DApp开发平台 + 数字资产发行平台
我们的平台是什么?是一个DApp 开发平台和数字资产发行平台。
我们和以太坊是不一样的,以太坊只是一个帐户系统,是一个可以执行帐户和合约的系统,没有在底层做数字资产,数字资产都是可以用智能合约来实现的。我们的底层数字资产协议在整个系统中有资产路由的功能。
我们从主链转移到各个侧链,从侧链转移到主链,可以实现主链跟侧链之间资产互通的协议保障,就是我们这个底层的数字资产协议。
如果你想要在多个链之间互通,那一定要在主链注册这种资产。一个资产可以在多个链之间存在,一个应用也可以使用多种资产。一个应用有一个链,一个链有多种资产,这种需求是非常多的,比如去中心化的交易所,需要多种资产转入到这个链中才能实现一个对话和交易。
侧链是独立的一个区块链,可以更灵活的设置自己的激励系统和原料费用,它可以不必依赖于主链,极大的节省了成本。
平台生态
前面谈到了我们的平台是什么,接下来再说一下平台的生态组成,由内而外可以分为四层:
最底层:平台生态的核心部分,包括密码学工具、P2P网络、共识算法以及激励机制等,这是任何一个区块链项目都共有的。
资产层:我们的主链上有多种资产,可以通过跨链技术把比特币和以太坊引入到主链上,主链上的所有资产可以在所有区块链应用中使用。
接口层:我们对底层技术做了封装,把它们封装成各种API和SDK,供开发者开发创新应用时使用。
最外层:是基于主链开发的应用层。
这四层共同组成了平台的整个生态。
侧链 + 跨链?不仅仅是比特币红包
我们支持将比特币和以太坊的资产转入到平台主链上并应用到所有应用中,那么如何去实现资产跨链流通呢?
简单的来说,我们是通过侧链技术实现资产跨链流通的。
我们以比特币为例,看一下跨链的运行原理是怎样的:
在主链中通过选举选出5个节点组成比特币的中继网络,在这个网络中,每个节点都运行着一个比特币的全节点并且维持着一个比特币账户,这五个比特币账户共同生成一个多签名地址。
如果一个比特币的用户想把资产从比特币网络转移到我们的主链上,他只需要把比特币转入到这个多签名地址,在中继网络感知到这笔交易之后,就会在我们主链上解锁对应的比特币资产,并发送到用户的地址上去。提现的流程也是类似,只不过是反过来的。
我们就是通过这种方式实现了资产的跨链流通。
资产跨链有什么优势呢?当应用的业务规模增长起来,它可以使用自己的代币作为手续费,也可以多币种参与。而在以太坊,目前只能使用ERC20这种代币,而且每一笔操作都需要消耗以太币。
原料费用可以由链的开发者或运营者来指定,跨链过来的资产可以用于任何基于我们平台开发的区块链应用中,如果你开发了一个发红包的应用,那你就可以在红包里包个比特币。
共识协议
我们刚刚讲了侧链技术,接下来了解一下共识算法。
共识协议跟一些设计哲学相关,大家目前讨论比较多的是去中心化程度和性能的权衡,我们认为这两者是不可兼得的。我们采取的是DPOS和PBFT相结合的一种共识协议。
我们的DPOS机制共有101个受托人,这个是完全向社会开放的,任何人都可以竞争。PBFT让系统在不超过1/3恶意节点时不会出现分叉。DPOS + PBFT 共同构成了我们平台的共识算法,既避免了类似工作量证明算法的能源浪费,又提高了共识效率,目前是每10秒钟生产一个区块。
一个区块内的可信程度不是完全由它的分散程度决定的。现在人们普遍认为具有世界货币属性的应用需要超高的分散性,要防止外部攻击或者避免单个国家政策风险打击,需要超高的分散性,需要非常多的节点。有一些系统,比如供应链、金融、版权系统,本身数据量规模非常大,其信用程度可以通过运营的方式或者数据公开透明的方式去达成,不需要把节点做得特别分散。
其实分散程度也有地点效应,如果权利分散到一定程度,其实收益是越来越小的,那我们就没有必要浪费太多资源去提高这种非常微小的收益,这也是EOS为什么选择21个节点的原因。Bitshares最初也是101个节点,后来Bitshares在Steem运营过程中发现可以用更少的结点达到相同的效果,就减少了节点的数目。
所以,我们采用DPOS方式可以灵活地设置节点的规模。对于较高的分散性,可以设置较多的核心共识节点;对于要求较高的应用,可以设置较低的分散程度。
PK以太坊
目前最知名的区块链开发平台是以太坊,以太坊给自己的定位是一个智能合约开发平台。目前以太坊上最流行的智能合约是什么呢?那就是发币,2017年绝大多数发币的区块链项目都基于以太坊发行了自己的代币。我们的定位是去中心化应用开发平台,而不仅仅是智能合约。
我们与以太坊最大的不同就在于实现机制的不同,我们具有独特的生态系统,主链运行其自身生态,而众多创新型应用则延伸在侧链之上,有效降低了数据的冗余程度,此外,我们的跨链应用可以有效的降低合约编程难度、设定个性化区块链参数、避免区块链快速膨胀,帮助企业降低技术门槛。
大家可能也知道去年有一款比较流行的游戏——CryptoKitties(谜恋猫)。CryptoKitties一度引起了以太坊主网的拥堵,造成手续费疯狂的上涨。以太坊为什么会拥堵呢?这就是以太坊单链架构所带来的后果。好比一条大马路,所有的车都在上面跑,突然来了一辆巨大的卡车或者发生了一起交通事故,不就很容易造成拥堵吗?
而我们采用的侧链架构模式就可以很好的解决这个问题。类似于每一辆车都有属于自己的跑道,你爱怎么跑就怎么跑,即使出了车祸也不影响其他公路上的车。
还有一点,我们可以支持DApp开发,我们可以开发自己的智能合约。开发者拥有自己独立的帐本,而不是基于以太坊。如果使用以太坊方式,那么数据需要与以太坊进行绑定,这个应用就是寄生在以太坊上,本身没有独立的帐本,也就没有独立的共识机制。
此外,开发者还可以设定自己的燃料方案,其用户成本可以灵活的控制。我么可以和亦来云进行比较,亦来云也是策略系统,一个主链对接多个侧链,每一个侧链跑一个商业应用,为了提升亦来云的币价,每一个侧链必须要使用它的代币。
很多企业普遍的一个痛点就是希望能够自己掌握燃料,通过提升他们的业务规模,从而提升他们的燃料币需求。假如你开发一个应用,应用必须使用一种通用的原料费用,这个其实是对企业或者开发者是不友好的,也不够灵活,很难吸引到质量非常高的应用开发者。
我们与以太坊的定位也不同,目前的DApp大概可以分成两种:
一种是拥有自己独立的区块链;另一种是寄生在公有链上的一种状态数据。
以太坊目前只能开发第二种,而我们是可以开发第一种的。在这一点上我们是跟EOS是类似的,我们跟EOS同时提供了一套SDK,基于这套SDK在系统上可以开发出拥有独立帐本的区块链应用。
最后就是基于我们系统开发的区块链应用,手续费是可以自定义的,而在以太坊上你只能使用ETH用作Gas。
以上提到的基本上就是我们平台和以太坊的一个对比情况。
我们希望传统的互联网开发者,在不了解区块链底层技术(P2B技术、密码学技术)的情况下,会选择我们这个生态系统,他们不需要进行深入研究就可以很容易地做出创新型区块链应用。
我们使用JavaScript作为原生语言,它具有庞大的社区和众多的第三方工具,在我们使用、编写、开发区块链应用或者智能合约时,可以组合使用JavaScript庞大的第三方开源组件。此外,我们也拥有非常多的开放接口,也允许开发者定义非常复杂的数据模型。
我们就是想为DApp开发企业或者爱好者提供这样一种低门槛的技术和开发平台。目前区块链看起来是像一种很高深莫测的技术,但是它和其他的任何产业技术一样,在不断发展过程中会慢慢普及,任何一个小型的创业团队或者个体都可以很容易的利用一些现成的组件开发出符合自己业务需求的DApp。
我认为区块链的可信程度或者说安全程度,未来是不依赖于技术的。
区块链的可信程度和安全程度主要受应用本身的影响。就像你判断一个论坛的质量,可能不取决于这个论坛的底层技术,而是取决于这个论坛的管理者、运营者以及社区活跃度。
一个区块链的可信程度和安全程度,很有可能取决于这个帐本的维护者。不管是这个帐本、矿工还是DPOS的见证人,本质上需要解决信用问题,或者是通过大规模提高计算难度,或者基于权益证明这种机制。
我觉得未来区块链的安全性在于这些见证者的信用。他们是否有可能联合起来作恶,这是脱离于技术之外的。
DApp开发”燃料”
DApp开发三剑客
那么如何通过我们这个系统开发区块链应用呢?目前主要有以下三种方式:
从底层开始:从零开始打造一个区块链的应用产品。比如你需要实现加密算法、需要实现P2P通信以及共识算法等等。这种方式成本高、周期长,并且技术难度也非常高。就好比你为了开发一个Web应用,可能先需要自己写一套操作系统出来。以太坊就是这样的,开发难度和技术成本都非常高,目前只有少数公司会从底层开始,且成功率并不高。
基于开源改造:目前使用这种类型开发策略的最多。大家可能听的比较多是石墨烯技术,比如公信宝、Achain等都是基于开源项目改造的。在寻找一个靠谱的区块链应用开发平台之后,你只需要关心开发的业务逻辑和如何将应用与区块链结合就可以,其他的底层技术全部由平台提供。这就好比你去阿里云买了台云服务器,底层的事情并不需要你关心,你只需要部署好代码就可以了。这也是我们在区块链时代正在做的事情。
基于开发平台:这个开发平台提供了一些开源的组件和一些类似于框架的东西,很多底层、门槛很高的技术都被封装起来。应用开发者只需要关心具体的业务逻辑,比如可以直接选择一种共识机制,定义自己的数据模型、自己的经济模型和激励模型。这样应用就可以跟区块链结合起来,而且可以享受到区块链带来的去中心化、安全性、共赢等种种好处。
那么,最快最直接的方式就是选择一个区块链平台。那么为什么要选择我们呢?给大家看以下四点。
开发语言:与以太坊开发应用需要新学一门语言不同,基于我们开发区块链应用只需要掌握JavaScript语言就可以了。
工具:我们提供了高抽象层次的数据模型和数据访问接口,让传统开发人员用熟悉的ORM的方式老开发DApp。
Web开发人员:只需要简单理解下区块链的基本技术,就可以在我们平台上快速开发一个区块链应用,大大降低了企业的人力成本。
生态:我们的平台和JavaScript语言都有着完善的社区和生态,有大量的开源组件和工具可以使用,为快速开发DApp提供了难以想象的便利。
API与SDK
简单看一下我们目前提供的API和SDK。有数据库的增删改查,有账户的余额操作,有路由的设定,还有自增ID、日志以及各种合约相关的工具,工具足够齐全,可以让开发者很容易地开发一个区块链应用。
我们平台创新的推出了高抽象层次的数据模型和数据访问接口,让传统开发人员用熟悉的ORM方式,无缝的将传统信息化开发技术应用到DApp开发上来,大大的提升了开发效率,降低了门槛。
这是一个代码示例,左边是数据模型定义部分,右边是数据访问部分。我们可以看到,使用的方式和传统的ORM方式访问数据库一样方便!
这个是我们合约的一些接口,我们合约的接口比以太坊多很多,可以灵活定义并支持数据的增删改。如果一个复杂的应用拥有大规模的数据量,那么它应该把数据库跟语言进行解耦。
我们综合使用多种数据库,还会使用一些缓存。在写代码的过程中,我们只需要一行代码就可以为一个数据模型建立一个索引,会提高合约制定的成本。
平台成果
最后给大家简单介绍两个优秀的平台成果:
截止到2018年3月24日,平台系统已经平稳运行634天并仍在不断的升级。区块数超过500万,用户数超过10万。目前已经有包括CCT、孔明屋、虚拟地球在内的数个DApp已经开发并等待上线。
跨平台PC版钱包
这是社区做的一个多资产钱包,我们在这个钱包的下一个版本,也就是1.4版本中就可以通过这种钱包管理一些主流的币种,比如比特币、以太币等。
移动客户端
这是我们的手机钱包,是一个管理多资产的钱包。我们计划设计一个类似小程序的架构。我们产品所有应用或者所有侧链与主链是共用一种帐户系统的。我们可以用一个帐户去使用、下载平台上的各种应用,比如可以把资产转移到应用里面,参与到应用中,如果是交易所就可以实现币币兑换,还可以转到各种应用去,比如有打赏功能,有的是用区块链做抵押功能的等。
我们的目标是要让区块链不再是一个高不可攀的技术,而是人人触手可及的服务。我们要打造一个安全、灵活、高效、低成本、高复用的区块链应用开发平台,推动区块链技术的普及和发展。
作者简介:
单青峰毕业于东南大学,曾担任学习宝后端架构师、新浪微博搜索引擎研发工程师、云云网网页搜索引擎研发工程师,具有10年以上的编程经验,同时也是阿希系统的创始人、全栈工程师、贵阳区块链创新研究院智库专家团专家成员。他长期以来致力于跨链底层技术的研究,对跨链技术拥有深刻的认知和独特的见解。