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

2024-09-03 09:08

本文主要是介绍分片、侧链、状态通道、子链、DAG 是什么 区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里写图片描述

 

一、分片(sharding)

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

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

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

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

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

 

分片链的共识依赖于主链

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

 

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

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

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

 

 

 

 

二、侧链(SideChains)

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

 

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

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

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

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

 

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

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

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

 

 

三、State Channels(状态通道)

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

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

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

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

 

 

四、子链

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

分层还是分片?侧链还是子链?一文看懂牛叉的公链所拥有的技术。

子链的出现,是一个革命性的变革,如果你考虑墨客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的优势可以做到高并发,理论上是无限多的并发,意味着它可以大幅提升交易速度。
 

 

 

https://www.jinse.com/blockchain/181987.html

 

https://baijiahao.baidu.com/s?id=1608564003152999038&wfr=spider&for=pc

https://blog.csdn.net/tiandiwuya/article/details/80289380

这篇关于分片、侧链、状态通道、子链、DAG 是什么 区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1132590

相关文章

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu1565(状态压缩)

本人第一道ac的状态压缩dp,这题的数据非常水,很容易过 题意:在n*n的矩阵中选数字使得不存在任意两个数字相邻,求最大值 解题思路: 一、因为在1<<20中有很多状态是无效的,所以第一步是选择有效状态,存到cnt[]数组中 二、dp[i][j]表示到第i行的状态cnt[j]所能得到的最大值,状态转移方程dp[i][j] = max(dp[i][j],dp[i-1][k]) ,其中k满足c

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

native和static native区别

本文基于Hello JNI  如有疑惑,请看之前几篇文章。 native 与 static native java中 public native String helloJni();public native static String helloJniStatic();1212 JNI中 JNIEXPORT jstring JNICALL Java_com_test_g

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

hdu3006状态dp

给你n个集合。集合中均为数字且数字的范围在[1,m]内。m<=14。现在问用这些集合能组成多少个集合自己本身也算。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.Inp

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

Android fill_parent、match_parent、wrap_content三者的作用及区别

这三个属性都是用来适应视图的水平或者垂直大小,以视图的内容或尺寸为基础的布局,比精确的指定视图的范围更加方便。 1、fill_parent 设置一个视图的布局为fill_parent将强制性的使视图扩展至它父元素的大小 2、match_parent 和fill_parent一样,从字面上的意思match_parent更贴切一些,于是从2.2开始,两个属性都可以使用,但2.3版本以后的建议使

Collection List Set Map的区别和联系

Collection List Set Map的区别和联系 这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否