分片、侧链、状态通道、子链、DAG 是什么 区别_区块链


一、分片(sharding)

区块链网络由主链和分片(shards)链组成,分片链上交易处于自己​独立​的空间中,​可以独立处理交易

其核心思路是​并非每个节点都需要处理所有的交易

分片之前整个网络的处理取决于单个节点的处理。

分片后,​只有同一片内的处理是同步的、一致的,不同分片之间则可以是异步的

这种属于底层解决方案,因为它是在区块链本身的基本协议中实施的。


分片链的​共识依赖于主链

已存在的主链,实现时会修改其底层协议,需要硬分叉。


分片(sharding)其实是一种传统数据库的技术,它将大型数据库分成更小、更快、更容易管理的部分,这些部分叫做数据碎片 (Vitalik Buterin称它为宇宙Universes,EOS也有分片,叫Region) 。

以太坊的分片,简单来说就是​将区块链网络划分成若干能够处理交易的较小组件式网络​,以实现每秒处理数千笔交易的支付系统。

设置一个区块链,在这个区块链系统中有一百个各自不同的宇宙,每一个宇宙都是一个独立的账户空间。使用者可以在某个宇宙中拥有一个账户,该用户发起的交易也只会对交易相关的宇宙产生影响。——Vitalik Buterin在BeyondBlock区块链技术交流大会的演讲






二、侧链(SideChains)

侧链(SideChains)因为最早是这对比特币提出,所以这个概念后期也更多的是在描述比特币相关的扩容,它的定义是:​可以让比特币安全地从比特币主链转移到其他区块链,又可以从其他区块链安全地返回比特币主链的一种协议。


侧链技术是一种​分开独立​的区块链,其会使用一个​双向锚定​来依附于主链。

换句话说,你可以将资产移动到侧链上,也可以转移回主链。

分片、侧链、状态通道、子链、DAG 是什么 区别_区块链_02

这个双向锚定可以在主链和侧链之间​按照预先设定的速率进行资产的内部交​换。初始的区块链通常代表着主链,而且所有新增的区块链都被定义为侧链。

主链上的用户首先需要将代币转移到输出地址,在那里代币会被锁定,从而用户不能消费它们。一旦转账完成,在经过安全时间的等待之后,信息就会在链上传递。在等待时间之后,相同数量的代币就会在侧链发布,让用户能够获得并且消费它们。当从侧链转移到主链的时候,相反的事情就会发生。


我们以闪电网络(Lighting Network)为例:它指的是A和B两人可以把比特币放到一个多重签名钱包中锁定(链下),然后进行交易签名更改双方各自能取回的比特币数量。交易参与方可以随时关闭交易通道,最后一笔经过签名且包含最新余额动态的交易最终将会被广播并写入比特币区块链(回归链上)。

另一种情况是涉及更多的第三方,比如已知C想和A交易,但双方没有建立支付通道,不过A和B、B和C都各自建立了支付通道,这时C就可以通过B和A达成交易,B其实在整个交易过程中充当着一个网关的角色。整个过程实际上不需要在主链确认,因为都是几方之间倒来倒去的”数字游戏“,因此交易速度会非常迅速。只有当关闭交易通道时,才会最终确定各自的余额并写进主链区块。

RSK其实也是侧链的框架,你可以理解为闪电网络解决的是比特币支付问题,而RSK则是通过侧链为比特币创建了一套类似以太坊的图灵完备的智能合约平台。



三、State Channels(状态通道)

状态通道和侧链技术,是以太坊社区的两种扩容技术。状态通道的核心思想是,允许执行​off chain (“脱链”)交易​,只需要将其​通道开启和关闭时状态的记录​在区块链上。

分片、侧链、状态通道、子链、DAG 是什么 区别_区块链_03

同时,在一个状态通道内发生的事情仍然保持着非常高的安全性和最终性;如果出现任何问题,仍然可以选择回溯到主链上。

比如:A要给B转1000笔小额的BTC,其工作方式大概是:首先在A和B之间打开一个付款通道, 并把通道的开放记录在区块链上。​通过这个支付通道, 可以在任何时间、数天、数周或十年内保持开放状态,然后进行1000次的交易。

只需在A和B想要关闭通道的时候,把这个通道上产生的交易的最终状态写在区块链上。这种技术已经存在好几年了,去年侧链技术通过闪电网络在比特币上实施。



四、子链

说到子链,首先绕不开的一个话题就是墨客MOAC链,MOAC——即Mother Of All Chain的缩写,中文翻译成“众链之母”,或是“女娲链”。这是一个主网已经上线了的第三代公链,它率先突破异步合约调用、合约分片处理和全领域跨链等当前业界难题,对合约的处理速度远远优于当前譬如以太坊等智能合约平台。

分片、侧链、状态通道、子链、DAG 是什么 区别_区块链_04

子链的出现,是一个革命性的变革,如果你考虑墨客MOAC的生态,它就好像一个开发用的GitHub,那么子链,可以变成一个个功能库,让子链之间可以互相分享。而各种提供服务的子链,因为服务的不同,必须有角色细分。比如提供ipfs的子链,重点在存储;提供zksnarks的子链,重点在运算速度。那么怎么可能用同样配置的scs来做不同的子链支持基础呢?怎么可以用同样的共识算法,同样的区块速度等等,来做不同的事情呢?所以你需要专业人士做专业的事情,那么子链,就是可以根据你不同的需求来定义与创建。


当然,子链和侧链的区别也很大,一方面​侧链是为小微转账设计的​,不可能提供墨客链这种功能库,互相调用的功能,另一方面,​侧链可以直接打垮,子链你无法直接攻击​,必须攻击母链。双花肯定不会出现,因为母链这里解决全局一致性,主要就是底层vnode的规模受到币价的挖矿利润限制,但是scs的规模,可以在应用推动下,无限扩展。墨客MOAC就是解决了V神和BM的争论中,维持了去中心化的安全性,又提升了可扩展性能力。


五、DAG

DAG 是​有向无环图(Directed Acyclic Graph)​的缩写,这是一种有顶点和边的图结构。它可以保证从一个顶点沿着若干边前进(有向),但永远不能回到原点(无环)。

在IOTA这个项目中,提到的Tangle(缠结)就属于DAG的一种数据结构,真正意义上讲,IOTA已不属于“区块链”,你可以理解为如果比特币、以太坊使用的是底层数据结构是BlockChain,而IOTA的底层数据结构则是DAG,但它依然属于“去中心化”的范畴。

有向无环图(Tangle)

在 IOTA 里发起一笔交易的流程如下:

你需要​先找到网络里的两笔交易,验证它们的合法性​,然后做微量的POW计算,​把自己的交易与它们绑定,再广播到网络​。你的交易会被后来的交易以相同的方式验证。

如果验证你交易的其他交易越多,则你的交易的确定性越高。当达到一个临界值时,就认为这个交易被确定了,这和比特币6个区块确定交易状态的思想一致。简单来说,IOTA是把算力作为交易的一部分。只要你想加入这个网络,那必须先成为Mini版矿工,做出微量的POW贡献,也因此它是去中心化的。

DAG的优势可以做到高并发,理论上是无限多的并发,意味着它可以大幅提升交易速度。