【区块链基础知识系列】 第6课 区块链之分片技术(sharding)-区块链扩容问题的良方

本文主要是介绍【区块链基础知识系列】 第6课 区块链之分片技术(sharding)-区块链扩容问题的良方,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

进行区块链扩容的一个答案就是分片技术(Sharding)。分片技术承诺通过改变网络验证的方式来增加吞吐量。分片技术独特于其他解决扩容的链上技术的关键特性,就是它可以进行水平扩容,也就是说,网络的吞吐量随着挖矿网络的扩展而增加。这种特殊的特性可能使它成为推动区块链技术被快速采用的理想技术。

本文将简要地讨论现有区块链平台的扩容问题,因为大多数读者都必须要熟悉这一问题。然后我们将进一步讨论分片技术和它的不同形式将如何成为一个有希望解决扩容问题的方案。这篇文章还将涉及到实现分片技术的一些理论基础和其所面临的实际挑战,以及我们如何能克服这些挑战。

现有区块链的扩容问题

公共区块链平台今天面临的最大问题之一就是可扩展性。所有主流的平台都在努力提高每秒的交易量。事实上,当今的公共以太坊网络每秒处理20-30笔交易和比特币网络平均每秒可以处理7-10笔交易。这一数字远低于像Visa这样的集中支付处理器,后者平均每秒能处理约8000笔交易。

缓慢的交易处理造成了一个主要问题,因为大量的未完成交易阻塞了网络,使得那些诸如实时支付这样的应用程序很难在区块链上一展身手。随着确认支付的时间拉长,最终就会给用户带来诸多不便;这也是为什么像PayPal和Visa这样的信用卡支付方式仍然更具吸引力的主要原因之一。随着更多更复杂的DApps开始依赖于相同的一个区块链网络,迟缓的交易速度所导致的问题只会变得更加复杂。

从技术角度来看,所有区块链的共识协议都有一个具有挑战性的限制:网络中的每一个完全参与的节点都必须要验证每一笔交易,并且这些节点必须和它的其他节点保持一致,这是区块链技术的组成部分,它通过创建分布式的账本来保证区块链的安全。

在大多数像比特币和以太坊这样的区块链上,节点都是由公众进行运行的。虽然去中心化的共识机制提供了一些重要的优势,比如容错性、安全性、政治中立和真实性,但是这种验证链的方法是以降低可扩展性为代价的。当这些公共区块链变得更大时,它将需要越来越多的处理能力来验证这些公共区块链,这可能会在这些区块链的网络中造成瓶颈,从而减慢那些创建新应用程序的速度。

分片技术:分而治之

分片技术是一种基于数据库分片传统概念的扩容技术,它将数据库分割成多个碎片并将这些碎片放置在不同的服务器上。在公共区块链的情境中,网络上的交易将被分成不同的碎片,其由网络上的不同节点组成。因此,每个节点只需处理一小部分传入的交易,并且通过与网络上的其他节点并行处理就能完成大量的验证工作。将网络分割为碎片会使得更多的交易同时被处理和验证。因此,随着网络的增长,区块链处理越来越多的交易将成为可能。这种属性也称为水平扩容。

我们可以想象一下,现有的区块链就像一条繁忙的高速公路,这条高速公路的收费站只有一个收费口。这种布局的结果将是导致交通堵塞,因为人们将排着长队等待通过这唯一的收费站。实现一个基于分片技术的区块链就像在高速公路上增加15或20个收费口。它将极大地提高汽车通过收费站的速度。因此,分片技术将带来巨大的差异,并显著提高区块链的交易速度。

基于分片技术的区块链的实现对公共区块链有着不同的好处。首先,区块链上处理交易的速度变成了每秒上千笔甚至更多,这改变了人们对加密货币作为支付方式效率的看法。改善交易吞吐量将会给去中心化的系统带来使越来越多的用户和应用程序,而这将反过来促进区块链的进一步采用,也使挖矿变得更有利可图,同时也能吸引更多加入到公共网络上的节点,从而形成一个良性循环。

此外,分片技术可以帮助降低交易费用,因为验证单笔交易的处理量减少了;节点可以在依然盈利运营的同时收取较小的费用。在现实世界中,我们将低费用与高交易处理能力结合起来,会使公共链将变得越来越有吸引力。这些积极的趋势所持续的时间越长,我们就会越能看到更多的主流的加密技术和区块链应用程序的出现。

分片技术的策略

这部分主要讲的是相关的基本概念,但是我们有更细分的方法来实现分片策略,如网络分片和交易分片,以及状态分片等。通过网络和交易分片,区块链节点的网络被分割成不同的碎片,每个碎片都能形成独立的处理过程并在不同的交易子集上达成共识。通过这种方式,我们可以并行处理相互之间未建立连接的交易子集,通过提高数量级显著提高交易的吞吐量。

另一方面,在当今的主流公共区块链上,所有公共节点都承担着存储交易、智能合约和各种状态的负担,这可能使其在为了获得更大的存储空间而进行巨大的花费,以维持其在区块链上的正常运转。

为了解决这一问题,有一种可被称为状态分片的可行方法已被提出。这一技术的关键是将整个存储区分开,让不同的碎片存储不同的部分;因此,每个节点只负责托管自己的分片数据,而不是存储完整的区块链状态。

分片技术的复杂性

尽管所有不同形式的分片技术都可能非常直观,但通过对技术细节的解读,我们可以看到这一方法的复杂性和潜在的挑战。分片技术的其中一些挑战是很容易克服的,而另一些则不然。一般来说,网络和交易分片更容易实现,而状态分片则要复杂得多。下面,对于不同的分片机制,我们会明确地讨论它们所面临的一些挑战,以及它们的可行性。

网络分片

分片的第一个也是最重要的挑战是创建碎片。开发者需要开发一种机制来确定哪些节点可以按照安全的方式保留在哪些碎片中,这样就能避免那些控制大量特定碎片的人所发起的攻击 。

打败攻击者的最佳方法(至少在大多数情况下)就是建立随机性。通过利用随机性,网络可以随机抽取节点形成碎片。这样一种随机抽样的方式可以防止恶意节点过度填充单个碎片。

但是,我们如何建立随机性呢?最容易获得公共随机性的来源是区块,例如,交易的Merkle tree root。在区块中所提供的随机性是可被公开验证的,并且可以通过随机提取器中提取统一的随机比特。

然而,简单地使用随机机制将节点分配给碎片仍是不够的。我们还必须要确保网络的一个碎片中不同成员意见的一致性。这可以通过像工作量证明这样的共识协议来实现。

交易分片

交易分片可听起来那么简单。考虑到在一个类似于比特币的系统中引入交易分片(没有智能合同),系统的状态是用UTXOs来进行定义的。我们假设网络已经由碎片所组成,用户发送一笔交易,每一笔交易有两个输入和一个输出。那么,该笔交易将如何分配给一个碎片呢?

最直观的方法是根据交易哈希值的最后几位来决定碎片。例如,如果哈希值的最后一个比特是0的话,那么交易将被分配给第一个碎片,否则它被分配给第二个碎片(假设我们只有两个碎片)。这允许我们在单个碎片中验证交易。但是,如果用户是恶意的,他可能会创建另一笔具有两个相同输入但不同输出的交易——是的,就是一个双花交易。第二笔交易将有一个不同的哈希值,因此,这两笔交易就可能形成不同的碎片。然后,每个碎片将分别验证接收到的交易,同时忽略在另一个碎片中验证的双花交易。

为了防止双花问题,在验证过程中,碎片将不得不进行相互通信。事实上,由于双花交易可能会在任何碎片中出现,因此特定碎片所接收到的交易将不得不与其它的碎片进行通信。而实际上,这种相互之间的通信可能会破坏交易分片的整个目的

另一方面,当我们有一个基于账户的系统(没有智能合约)时,问题就简单得多了。每一笔交易将会有一个发送者的地址,然后系统可以根据发送者的地址分配一个碎片。这确保了两笔双花交易将在相同的碎片中得到验证,因此系统可以很容易地检测到双花交易,而不需要进行任何跨碎片的通信。

状态分片

状态分片带来了新的挑战。事实上,状态分片是迄今为止最具挑战性的分片技术提案

继续使用我们的基于账户的模型(我们暂时不在我们的例子中引入智能合约),在一个状态分片的区块链中,一个特定的碎片只会保留一部分状态。例如,如果我们有两个碎片和两个用户帐户,分别为Alice和Bob,那么每个碎片将保留一个用户的余额。

假设Alice创建了一笔交易,她将支付Bob一笔钱。这笔交易将由第一个碎片进行处理,一旦该笔交易被验证,关于Bob的新余额的信息就必须与他所在的碎片进行共享。如果两个受欢迎的帐户由不同的碎片进行处理,那么这可能需要进行频繁的跨碎片通信和状态交换。确保跨碎片通信不会超过状态分片的性能收益仍然是一个值得公开的研究问题。

减少跨碎片通信开销的一种可能方法,是限制用户进行跨碎片交易。以我们上面的例子来说,这就意味着系统不允许Alice直接与Bob进行交易。如果Alice必须与Bob交易的话,她将不得不在那块碎片中占有一个帐户。虽然这确实消除了任何跨碎片通信,但它可能会限制平台的可用性。

状态分片的第二个挑战是数据的可用性。我们可以考虑这样一个场景,由于某种原因,一些特定的碎片遭到了攻击而导致其脱机。由于碎片并没有复制系统的全部状态,所以网络不能再验证那些依赖于脱机碎片的交易。因此,在这样的情况下区块链基本上是无法使用的。解决此问题的方法是维护存档或进行节点备份,这样就能帮助系统进行故障修复以及恢复那些不可用的数据。但是,这样就使得节点将不得不存储系统的整个状态,因此这还可能会引发一些中心化的风险。

我们在任何分片机制(当然不是特定于状态分片)中需要考虑的另一个要点是,确保碎片在抵御攻击和失败时是具有弹性的; 网络必须接受新的节点并以随机的方式将这些分配给不同的碎片。换句话说,网络必须在一段时间内进行节点的重新分配。

然而,在状态分片的情况下,重新分配节点是非常棘手的。由于每个碎片只保留了状态的一部分,所以在一次重新调整网络的过程中,在同步完成前可能会出现导致使整个系统失效的问题。为了防止系统的中断,我们必须对网络进行逐步调整,以确保每个碎片在所有节点被清空前仍有足够多的旧节点。

类似地,一旦一个新节点加入了一个碎片中,系统就必须确保该节点有足够的时间与碎片状态进行同步;否则,传入节点将完全拒绝每一笔交易。

结论

综上所述,分片技术是区块链的一个令人兴奋的技术,他让我们看到了希望,它可以在不影响去中心化和透明度的情况下解决扩容问题。然而,毫无疑问的是,分片技术,尤其是状态分片,在设计层面和实现层面都是非常困难的。

我们应该小心的处理分片技术。此外,开发者们还需要做更多的研究来确定状态分片的可行性,因为它可能不是解决存储问题的法宝。研究人员和开发者们正在积极寻找那些可替代的解决方案。也许,答案就在我们眼前。

这篇关于【区块链基础知识系列】 第6课 区块链之分片技术(sharding)-区块链扩容问题的良方的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

linux生产者,消费者问题

pthread_cond_wait() :用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。 pthread_cond_wait() 必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线程通过pthread

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

乐鑫 Matter 技术体验日|快速落地 Matter 产品,引领智能家居生态新发展

随着 Matter 协议的推广和普及,智能家居行业正迎来新的发展机遇,众多厂商纷纷投身于 Matter 产品的研发与验证。然而,开发者普遍面临技术门槛高、认证流程繁琐、生产管理复杂等诸多挑战。  乐鑫信息科技 (688018.SH) 凭借深厚的研发实力与行业洞察力,推出了全面的 Matter 解决方案,包含基于乐鑫 SoC 的 Matter 硬件平台、基于开源 ESP-Matter SDK 的一

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

2024.6.24 IDEA中文乱码问题(服务器 控制台 TOMcat)实测已解决

1.问题产生原因: 1.文件编码不一致:如果文件的编码方式与IDEA设置的编码方式不一致,就会产生乱码。确保文件和IDEA使用相同的编码,通常是UTF-8。2.IDEA设置问题:检查IDEA的全局编码设置和项目编码设置是否正确。3.终端或控制台编码问题:如果你在终端或控制台看到乱码,可能是终端的编码设置问题。确保终端使用的是支持你的文件的编码方式。 2.解决方案: 1.File -> S

持久层 技术选型如何决策?JPA,Hibernate,ibatis(mybatis)

转自:http://t.51jdy.cn/thread-259-1-1.html 持久层 是一个项目 后台 最重要的部分。他直接 决定了 数据读写的性能,业务编写的复杂度,数据结构(对象结构)等问题。 因此 架构师在考虑 使用那个持久层框架的时候 要考虑清楚。 选择的 标准: 1,项目的场景。 2,团队的技能掌握情况。 3,开发周期(开发效率)。 传统的 业务系统,通常业

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的(比如这篇:从0开始在visual studio上安装opencv(超详细,针对小白)),但是中间出现了一些别人没有遇到的问题,虽然原因没有找到,但是本人给出一些暂时的解决办法: 问题1: 我在安装库命令行使用的是 .\vcpkg.exe install opencv 我的电脑是x64,vcpkg在这条命令后默认下载的也是opencv2:x6

问题-windows-VPN不正确关闭导致网页打不开

为什么会发生这类事情呢? 主要原因是关机之前vpn没有关掉导致的。 至于为什么没关掉vpn会导致网页打不开,我猜测是因为vpn建立的链接没被更改。 正确关掉vpn的时候,会把ip链接断掉,如果你不正确关掉,ip链接没有断掉,此时你vpn又是没启动的,没有域名解析,所以就打不开网站。 你可以在打不开网页的时候,把vpn打开,你会发现网络又可以登录了。 方法一 注意:方法一虽然方便,但是可能会有

硬件基础知识——自学习梳理

计算机存储分为闪存和永久性存储。 硬盘(永久存储)主要分为机械磁盘和固态硬盘。 机械磁盘主要靠磁颗粒的正负极方向来存储0或1,且机械磁盘没有使用寿命。 固态硬盘就有使用寿命了,大概支持30w次的读写操作。 闪存使用的是电容进行存储,断电数据就没了。 器件之间传输bit数据在总线上是一个一个传输的,因为通过电压传输(电流不稳定),但是电压属于电势能,所以可以叠加互相干扰,这也就是硬盘,U盘

亮相WOT全球技术创新大会,揭秘火山引擎边缘容器技术在泛CDN场景的应用与实践

2024年6月21日-22日,51CTO“WOT全球技术创新大会2024”在北京举办。火山引擎边缘计算架构师李志明受邀参与,以“边缘容器技术在泛CDN场景的应用和实践”为主题,与多位行业资深专家,共同探讨泛CDN行业技术架构以及云原生与边缘计算的发展和展望。 火山引擎边缘计算架构师李志明表示:为更好地解决传统泛CDN类业务运行中的问题,火山引擎边缘容器团队参考行业做法,结合实践经验,打造火山