分片、侧链、状态通道、子链、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

相关文章

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

一文带你迅速搞懂路由器/交换机/光猫三者概念区别

《一文带你迅速搞懂路由器/交换机/光猫三者概念区别》讨论网络设备时,常提及路由器、交换机及光猫等词汇,日常生活、工作中,这些设备至关重要,居家上网、企业内部沟通乃至互联网冲浪皆无法脱离其影响力,本文将... 当谈论网络设备时,我们常常会听到路由器、交换机和光猫这几个名词。它们是构建现代网络基础设施的关键组成

redis和redission分布式锁原理及区别说明

《redis和redission分布式锁原理及区别说明》文章对比了synchronized、乐观锁、Redis分布式锁及Redission锁的原理与区别,指出在集群环境下synchronized失效,... 目录Redis和redission分布式锁原理及区别1、有的同伴想到了synchronized关键字

MySQL进行分片合并的实现步骤

《MySQL进行分片合并的实现步骤》分片合并是指在分布式数据库系统中,将不同分片上的查询结果进行整合,以获得完整的查询结果,下面就来具体介绍一下,感兴趣的可以了解一下... 目录环境准备项目依赖数据源配置分片上下文分片查询和合并代码实现1. 查询单条记录2. 跨分片查询和合并测试结论分片合并(Shardin

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

JAVA覆盖和重写的区别及说明

《JAVA覆盖和重写的区别及说明》非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性... 目录Java覆盖和重写的区别经常听到两种话认真读完上面两份代码JAVA覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可andro