LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资讯 > 社区互动|解读aelf区块链白皮书——Part2

社区互动|解读aelf区块链白皮书——Part2

2020-09-24 ?lf 来源:区块链网络

在上篇文章中,艾斯为大家介绍了aelf为什么采取云计算、并行执行和AEDPoS共识机制。今天,我们来了解aelf的更多技术。

解读aelf的侧链

云计算、并行机制和AEDPoS都极大的加快了任意智能合约执行的性能。但是当把这些用于企业级应用场景时,就会出现新的问题。首先,在软件设计原则里,把所有的方法写在同一个类里面是十分糟糕的做法。我们总会写一系列类去继承一个基类,这样会把功能解耦并且当需要的时候,这个类还能随时扩展。在区块链设计中也是如此。第二,因为所有的数据和交易在区块链浏览器里都是可见的,如果我们把不同企业或政府部门的智能合约和数据都放在一个单链里,不仅一般人而且竞争对手也能看到数据。总之,数据隐私将荡然无存,虽然一些比如零知识证明的技术能够将数据进行哈希化,把不同的企业逻辑隔离在不同的区块链里总是一个更好的做法。

基于这些考虑,aelf在其他项目意识到之前,很早就提出了在这种场景下要使用侧链技术的思想。不幸的是,对于任何一个区块链新手而言,要想理解侧链怎么运作几乎是不可能的。实际上,侧链并不是字面意思,它不是一个从属的概念,相反,它和主链(比如aelf主链)一样,都是具有节点和全部功能的分布式系统。我刚才说了,我们能把不同企业的业务逻辑放在不同的区块链里,这句话的意思是,我们可以创建很多区块链,给它们施加魔法(当然不是魔法),让这些区块链和aelf主链相关联(实际上,我们可以把这些区块链中的任意一个叫做主链,而把剩下的都叫做侧链)。当前最流行的关联两个区块链的做法(也叫做跨链)是使用中间人机制。当我们想用比特币在以太坊上玩去中心化游戏时,我们需要把一些比特币发到一个锁定性的比特币地址里,这时中间人会把你锁定的比特币以一定的汇率换成以太币,在以太坊上分配相同额度的以太币,然后你就可以拿这些以太币在以太坊上玩游戏了。

但是在aelf中我们使用原数据的索引方法,这种方式更加直接。和其他项目基于一些成功项目开发的区块链不同(比如以太坊或者超级账本的Fabric联盟链框架),aelf一开始就从0开始,全部逻辑自主开发。在这个阶段,aelf团队就定义好了一个区块链、一个区块、一个交易等基本组件的C#数据结构。在aelf的“区块链”数据结构里,有一个属性叫做blockchain ID,这是一个唯一的哈希值;在“区块”数据结构里,包含着以下几个属性分别叫做blockchain ID、Merkle tree root和related side chain block list。而且我们需要知道另一个重要的事:所有的aelf数据结构都是被序列化之后存在Redis里的(一种知名的键值对的数据库系统),对于侧链也是一样。这样当aelf主链在BP的区块制造下不断生长的时候,别的侧链可以向跨链合约里发起交易,合约执行相关的代码,去和主链的网络端口连接,请求主链去索引侧链的区块并支付索引费。

这里的核心是怎么索引一个侧链。一个主链(即主链上的区块数据结构,抑或是Redis上带有主链ID的数据记录)收到了侧链发来的请求,把侧链的区块头的数据结构加入related side chain block list里——即在概念上我们索引或关联了一条侧链。注意我们提到在每个区块里也存在blockchain ID属性,这个特性能够索引很多不同区块链上的区块。当主链上的用户想在侧链上获取数据,或者反过来操作,我们只需要找到主链上的目标区块,然后从related side chain block list里面通过键的索引找到目标侧链上的目标区块即可。

正如我们会在后面提到的,不同应用场景的区块链有不同的区块产生速率。在这种情况下, 一条生长速度慢的区块链可能索引了另一条快速生长的区块链中的很多区块。而且这个方式可以适用于分叉这样的问题。

在实际场景中,我们可以创建任意数量的区块链,然后把它们和主链相索引,在每一条侧链上,都运行某一个种类的智能合约,比如其中一条区块链上我们只让银行相关的智能合约部署在上面,而另一条侧链我们只允许电子商务相关的合约。因此aelf白皮书中有一句名言:一链一场景。

除此之外,索引的方法可以使很多区块链形成一种层级化逻辑结构,这是一种树状结构,其根部就是所谓的主链。这是因为一个被关联的区块链还可以索引另一条区块链做它的侧链,而且可以这样一级一级地索引下去。逻辑上讲,这和层级分类法完全吻合,比如金融行业包括银行、借贷、投资、保险等子类,投资银行又分为风险投资和投行等子类。每一个叶子类别都有一条区块链支持,并且被索引链接。

所以从分布式系统等角度看,这些区块链是怎么配合运行的呢?首先我们需要清楚在分布式系统中,每一个阶段其实是运行在你的计算机上的软件实例,即一个进程。在TCP-IP标准里,一个节点被分配了一个端口号。所以我们可以在一台计算机上运行任意数量的软件实例,只是每一个实例对应不同的端口号。我们可以同时运行几个区块链节点、一个IPFS节点和一个bit-torrent节点等等。在aelf里,你应该先启动一个主链的实例,然后你可以构造并运行另一个侧链实例,当有交易在侧链上传播时,主链上的BP节点(生产节点)收集它们。当部署在侧链上的智能合约被触发,主链上的BP节点(生产节点)和全节点运行它们。

aelf,一个区块链底层操作系统

为了使一个软件系统的设计思想臻于完美,aelf也使得其系统本身可扩展、可灵活组装和可插拔,正如Linux家族里有成百上千种Linux操作系统但是只有一个Linux内核一样。以太坊创始人Vitalik Buterin也解释道:以太坊可以被认为成世界计算机,因为上面运行着很多智能合约,其执行结果在全世界的分布式系统中都是一致的。在aelf里,这个思想依然稳固,而且我们称之为“区块链底层操作系统”或者一个分布式的操作系统。

aelf和任何其他的操作系统一样,都有内核和shell。实际上这个aelf内核并不是那种真正意义上的Linux内核,aelf的内核只是一个类比。aelf内核里有一个特别的概念叫做“最小可用区块链系统“,它定义了一个区块链中最基本的部分。如果一个开发者想创造一个新的区块链系统或者一个新的区块链项目,不需要从0开始进行开发,直接使用aelf区块链开源代码进行任何的扩展和定制化即可。上面介绍的几部分技术都包含在这个最小可用区块链系统里,有了这些技术,每个人都可以定制化:

区块特性:区块数据结构,区块打包速度,交易数据结构等。

共识类型:默认上AEDPoS,但也可以使用PoW或PoS这种激励性共识,你还可以用传统分布式系统意义上的共识,比如PoS或者PBFT(即实用拜占庭容错,实际上,3f+1个节点中,f个作恶节点上分布式系统达到共识能容忍的上限,这个上限就叫做“拜占庭容错”,即BFT,有专门的算法来实现这点。但是在1999年,一个达到此共识的更高效率的算法出现了,这就是PBFT)。在一些私有区块链或者联盟链的场景中,并不需要激励模型,所以PBFT就很合适了。

智能合约集:在aelf里,有很多被提前定义好的智能合约可以被别的智能合约直接调用。比如token合约、跨链合约(即CCTP)、共识合约和组织投票合约等等。当然,你可以使用全新的逻辑写自己的合约。

其他。

总结

这就是关于aelf区块链白皮书的所有解读内容。在之前的文章里,我们首先引出了两个容易被其他文章误导的概念,在对一般区块链有了全新的认知的基础上,我们介绍了aelf区块链项目中的强大技术。如果读者能够对aelf区块链的原理有更深入的理解,我的目标就达到了。但需要提醒的是,即使在这一系列文章中解释了这些技术,在读完文章之后,你还是有必要看一下aelf的白皮书。如果你理解了这些,你在开发aelf DApp上会更加得心应手。我们下一篇文章再见!

—-

编译者/作者:?lf

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...