为什么并行化将会是下一代的区块链解决方案?

原文标题:《Parallel Execution: The Next Generation of Blockchains》
撰文:Paul Timofeev 、Mike Jin、Gabe Tramble 
编译:Chris,Techub News

区块链是虚拟机,一种软件基础的计算模型,它运行在任何人都可以加入但极难被单一实体控制的分布式物理计算机网络之上。区块链的概念最初在中本聪 2008 年发表的比特币白皮书中被提出,作为支持比特币中加密安全点对点支付的核心基础设施。对于区块链而言,交易就像是社交媒体和互联网公司的日志;它们作为特定网络活动记录,关键的区别在于区块链上的交易是不可篡改的,通常也是公开可查询的。

交易究竟是什么

区块链上的交易涉及将数字资产从一个地址转移到分布式账本上的另一个地址,这一过程通过公钥密码学技术来保护。交易不仅可用于去中心化的点对点转账,还可用于各种认证和验证流程。

任何人都可以在 SeiTrace 等区块链浏览器上观察的交易示例

区块链交易如何运作

当 Bob 决定向 Alice 发送代币时,他的操作会立即通告至整个区块链网络。在这个过程中,网络中的特定节点(验证节点)开始活动,它们核实交易的有效性。经过足够数量的节点确认无误后,此次交易便会被记录在一个新区块内,并与其他用户的交易一同打包。一旦区块填满,它便被永久地添加到区块链上,因此形成了这一技术的名称。如此,Bob 和 Alice 就能在这个持久、公开的账本上查验自己的交易详情。

在区块链中,每笔交易都携带了元数据,这些信息帮助网络中的节点辨认并实施特定的指令和参数。交易通常包括高级数据如转账金额、接收地址和用以验证交易的数字签名,及自动生成的其他底层数据,这些数据的具体内容则根据不同的网络设计而异。

尽管这些过程普遍适用,具体的执行细节会根据所用的区块链架构有所不同。

例如,在以太坊等传统区块链中,存在一种名为内存池(mempool)的机制。Mempool 实质上是一个缓存区或「等候区」,用于存放尚未被纳入区块的交易。

这里是采用内存池的区块链中,交易的一般生命周期:

  • 用户发起并签署交易。

  • 区块链网络的验证节点检查交易的有效性并确保参数正确。

  • 一旦通过验证,交易便会进入公共内存池,与其他待处理的交易一同等待被打包。

  • 根据交易所付的燃料费用与内存池中其他交易的费用比较,最终决定将哪些交易打包到下一个区块中。一旦打包,交易状态变为「成功」。

  • 在一段时间或达到某个区块生成的阈值后,区块得到最终确认,交易便永久记录在区块链上,除非遭受如 51% 攻击这样的极端情况,否则信息是不可更改的。

无内存池 (Solana)

与上述相反,像 Solana 这样的一些区块链平台并未使用内存池,而是将交易直接发送给区块生产者,这样做旨在提高处理速度和吞吐量,通过连续不断地生成区块来实现。

让我们继续通过非 mempool 区块链上的交易生命周期来了解:

  1. 用户在使用应用的过程中发起并签署交易。
  2. 应用程序将交易信息路由到远程过程调用(RPC)服务器。
  3. RPC 提供商将交易发送给当前指定的区块生产者,以及接下来的三个生产者;这是在当前第一个区块生产者无法及时执行交易时的预防步骤。
  4. 区块生产者随后将已签名的交易发送给共识节点进行验证。
  5. 共识节点投票验证交易内容,一旦完成,交易状态就会被路由回 RPC > 应用程序 > 用户,显示为「成功」或「失败」。
  6. 与基于 mempool 的区块链类似,区块本身在一定时间或基于区块的阈值通过后会被最终确定。

顺序执行

较老的区块链,尤其是比特币和以太坊,采用顺序执行机制进行交易。每笔添加到区块链上的交易都会引发网络状态的变化,并且出于安全目的,虚拟机的结构一次仅处理一个状态变化。

这导致了底层网络吞吐量的显著瓶颈,因为能够添加到区块中的交易数量受到限制,导致等待时间变长,交易成本的飙升,有时甚至使网络无法使用。此外,顺序执行模型使用硬件组件的效率相当低,因此无法从计算的突破性进展中受益,比如多处理器核心。

并行执行

并行计算是一种计算机架构的关键技术,它的发展历程可以追溯到 20 世纪 50 年代末,而其背后的理念和理论最早可以追溯到 1837 年。这种技术允许多个处理单元同时工作以解决单一问题,通过将大型复杂的任务细分成小块,实现比传统串行处理更高效的任务完成方式。

最初,这种技术主要应用于高性能计算系统中,但随着互联网时代的到来以及计算需求的指数级增长,加之近几十年来处理器速度提升的物理极限,并行计算已成为现代计算机架构的主流模式。

在区块链技术中,这种并行处理模式也被采用,主要用于同时处理和执行多个交易或从一个智能合约到另一个智能合约的价值转移,因此被称作「并行执行」。

并行执行的概念使得区块链能够同时处理多个互不冲突的交易,这大幅提升了网络的吞吐量,增强了其扩展性,使区块链能够更有效地应对更高的活动量和更大的区块需求。

可以通过一个简单的比喻来理解这一点:想象一下一家杂货店有多个结账通道供顾客使用,相比之下只有一个通道显然效率要低得多。这样的并行处理方式,提高了整体的处理效率和客户的满意度。

为什么并行执行很重要

在区块链技术中,实施并行执行的主要目标是提升网络的处理速度和整体性能,尤其是在面对高流量和大量资源请求的情况下。例如,在加密货币生态系统中,当 Bob 打算创建最新流行的 NFT 系列,而 Alice 希望购买她偏爱的模因币时,区块链网络能够同时响应这两种操作,而不会牺牲性能或用户体验。

这种能力虽然看似只是提升用户体验的简单特性,其实质上通过提高网络的效率,为开发新的创意应用和用例铺平了道路。这些应用和用例能够利用到的低延迟和高处理能力,为引入更多的用户群体到加密货币生态系统中提供了重要基础,预示着加密技术向更广泛应用的转变。

并行执行如何工作

尽管并行执行的前提相对简单,但底层区块链设计的细微差别会影响并行执行过程本身的表现。设计具有并行执行的区块链最相关的功能是交易访问其底层网络状态的能力,包括账户余额、存储和智能合约。

区块链的并行执行通常可以分为两种类型:确定性并行执行和乐观并行执行。确定性并行执行,如 Solana 采用的模式,要求交易在执行前明确声明其所有的内存依赖项,即它们需要访问的全局状态的具体部分。这种方法虽然增加了开发者的负担,但能够让网络在执行前对不冲突的交易进行排序和识别,从而形成一个可预测且效率更高的系统。相对地,乐观并行执行假设所有交易都无冲突地进行,这种结构可以加速交易的处理速度,但如果出现冲突,可能需要对交易进行重新执行。在发现两个冲突的交易 — 即尝试访问同一网络状态的交易时,系统可以选择重新处理这些交易,无论是并行还是按顺序执行。

为了更深入理解这些设计的影响,从当今推动并行执行前沿的团队的角度来分析并行执行可能会有所帮助。

当下并行执行的市场格局

Solana 虚拟机(SVM)

Solana 是第一个围绕并行执行设计的区块链网络,其灵感来自创始人 Anatoly Yakovenko 在电信行业的以往经验。Solana 旨在提供一个开发平台,其运行速度尽可能快,因此并行计算的速度和效率是一个简单直观的设计选择。

实现 Solana 快速和高吞吐量的关键组件是 Sealevel,它是网络的并行智能合约运行时环境。与基于 EVM 和 WASM 的环境不同,Sealevel 采用多线程架构,这意味着它可以在验证器核心的容量范围内同时处理多个交易。

Solana 并行执行的关键是在启用交易时,网络会为该交易分配一系列要执行的指令,具体是访问哪些账户和状态以及进行哪些更改 —— 这是确定哪些交易不冲突并且可以同时执行的关键,同时也允许尝试访问相同状态的交易同时进行。

Solana 还利用 Cloudbreak,其自定义的 accountsDB,用于存储和管理状态数据,以支持交易的并发读写。Cloudbreak 针对并行执行进行了优化,可以水平扩展以跨多个节点分布和管理状态数据。

得益于其并行架构,Solana 能够处理大量交易,同时仍然快速执行,为交易提供近乎即时的最终性。Solana 目前平均每秒处理 2,000 到 10,000 笔交易(TPS)。此外,随着像 Eclipse 这样的团队推出旨在利用 SVM 作为执行环境的 Layer 2 基础设施,SVM 的用例正在缓慢但稳步扩展。

并行 EVM

并行 EVM 描述了一种新的区块链执行环境,旨在结合 Solana 和以太坊的设计「两全其美」,具有 Solana 的速度和性能以及以太坊的安全性和流动性。通过并行处理交易而不是按照传统 EVM 设计顺序处理交易,并行 EVM 使开发人员能够在高性能网络上构建应用程序,同时能够利用与 EVM 流动性和开发人员工具的连接。

Sei Network

Sei Network 是一个与 EVM 兼容的开源 Layer1 区块链,它支持围绕高性能构建的各种去中心化应用程序。Sei 旨在为用户和开发者提供快速的速度和低成本,而并行执行是实现这一性能和用户体验的关键组成部分。目前,Sei 提供了 390 毫秒的区块确认时间,并在其太平洋主网上处理了超过 19 亿笔交易。

最初,Sei 采用了确定性并行执行模型,智能合约提前声明其所需的状态访问,以便系统能够同时运行不冲突的交易。随着他们 V2 升级的到来,Sei 正在过渡到一个乐观的并行模型,这意味着所有交易将在提交到网络时并行处理(执行阶段),然后在验证阶段检查与先前交易的冲突信息。如果发现两个或更多的冲突交易,即尝试访问相同网络状态的交易,Sei 会识别这一冲突点,然后根据冲突的性质,要么并行要么顺序地重新运行交易。

为了存储和维护交易数据,Sei 还将引入 SeiDB,这是一个定制数据库,旨在通过优化并行执行来改进 v1 版本的不足之处。SeiDB 的目标是减少存储冗余数据的开销,并保持高效的磁盘使用率,以提高网络性能。V2 减少了跟踪和存储所需的元数据量,并启用了预写日志,以帮助在崩溃事件中恢复数据。


最后,Sei 最近还宣布推出了其 Parallel Stack,这是一个开源框架,用于使 Layer 2 扩展解决方案(例如 rollups)能够利用并行执行并从中受益。

Monad

Monad 是一个即将到来的并行 EVM Layer 1 区块链,为以太坊应用程序和基础设施提供完整的字节码和 RPC 兼容性。通过一些创新的技术实现,Monad 旨在在保持较低交易成本的同时,通过优化性能和可移植性,提供比现有区块链更具互动性的体验,具有 1 秒的区块时间和高达 10,000 TPS 的最终确定性。

Monad 实现了并行执行和超标量流水线技术,以优化交易的速度和吞吐量。类似于 Sei v2,Monad 将采用乐观执行模型,这意味着网络将开始同时执行所有传入的交易,然后分析和验证交易以寻找冲突并相应地重新执行,最终目标是,如果交易按顺序执行,结果将是相同的。

要注意,在与以太坊保持同步的同时,Monad 会以线性顺序对区块中的交易进行排序,并顺序更新每个交易。

为了比当前以太坊客户端提供的状态更有效地维护和访问区块链数据,Monad 创建了自己的定制 MonadDB,这是为区块链本地构建的。Monad DB 利用先进的 Linux 内核特性,实现高效的异步磁盘操作,消除了同步输入 / 输出访问的限制。MonadDB 提供异步输入 / 输出(async I/O)访问,这是实现并行执行的关键特性,系统可以在等待读取先前交易的状态的同时开始处理下一笔交易。

一个简单的类比是,考虑烹饪一个多步骤的餐点(比如肉丸意面)。所涉及的步骤是 1)准备酱汁,2)煮肉丸,和 3)煮面条。一个高效的厨师会先为面条煮水,然后准备酱汁的配料,然后在现在沸腾的水中煮面条,接着煮酱汁,最后煮肉丸,而不是一次完成一个步骤,每完成一个任务后再进行下一个。

Move

Move 是一种编程语言,最初由 Facebook 团队在 2019 年为现已废弃的 Diem 项目开发。Move 旨在以安全的方式处理智能合约和交易数据,消除了其他语言固有的攻击向量,如可重入性攻击。

MoveVM 作为基于 Move 的区块链的本地执行环境,利用并行化提供更快的交易执行速度和更高的整体效率。

Aptos

Aptos 是由前 Diem 项目成员开发的基于 Move 的 Layer1 区块链,它通过并行执行提供了一个高性能的环境给应用开发者。Aptos 利用 Block-STM,这是一种软件事务内存(STM)并发控制机制的修改实现。

Block-STM 是一个多线程并行执行引擎,它允许乐观并行执行。交易在区块内被预排序和策略性地排序,这对于有效解决冲突和重新执行交易至关重要。Aptos 的研究发现,使用 Block-STM 的并行化理论上可以支持高达 160,000 TPS。

Sui

与 Aptos 类似,Sui 是由前 Diem 项目成员开发的 Layer 1 区块链,它也使用 Move 语言。然而,Sui 采用了自定义的 Move 实现,该实现从原始的 Diem 设计中改变了存储模型和资产权限。特别是,这允许 Sui 使用状态存储模型将独立交易表示为对象。每个对象在 Sui 的执行环境中都有唯一 ID ,从而允许系统轻松识别不冲突的交易再并行处理它们。


与 Solana 类似,Sui 实施了确定性并行执行,要求交易提前声明它们需要访问的账户。

Movement Labs

Movement 正在构建一套开发者工具和区块链基础设施服务,以便开发者能够轻松访问在 Move 上构建的好处。作为 Move 开发者的 AWS 类执行即服务平台,Movement 将并行化作为核心设计特性,以实现更高的吞吐量和更大的整体网络效率。MoveVM 是一个模块化的执行环境,它允许区块链网络根据需要扩展和调整其交易处理能力,以支持日益增长的交易量,增强其并行处理和执行交易的能力。


Movement 还将推出 M2,这是一个将与 EVM 和 Move 客户端互操作的 ZK-rollup。M2 将继承 Block-STM 并行化引擎,并有望因此实现数万 TPS。

并行系统的挑战

关于并行区块链技术的发展,我们必须考虑几个关键问题以及涉及的权衡:

  • 网络为了通过并行执行实现更好的性能而做出了哪些权衡?

  • 较少的验证者保护网络可以加快验证和执行速度,但这是否会牺牲掉区块链的安全性,使其更容易受到验证者的攻击?

  • 是否有大量的验证者共址?这是一种在加密和非加密系统中都常见的最小化延迟的策略,但如果特定数据中心受到威胁,网络会发生什么?

  • 对于乐观的并行系统,重新执行无效交易的过程是否会随着网络的扩展而成为瓶颈?这种效率是如何被测试和评估的?

  • 从高层次来看,并行区块链面临账本不一致的风险,即双重支出和交易顺序变化(事实上,这是顺序执行的主要好处)。确定性并行化通过为底层区块链上的交易创建内部标签系统来解决这个问题。实施乐观处理的区块链必须确保它们用于验证和重新执行交易的机制是安全且有效的,并且可以合理地实现对性能的权衡。

未来展望

计算机的历史告诉我们,随着时间的推移,并行系统往往比顺序系统更有效和可扩展。Solana 之后的并行区块链的崛起强调了这一概念也适用于加密基础设施。即使是 Vitalik 也提到并行化为提高 EVM rollups 可扩展性的潜在关键解决方案之一。广义上讲,加密 / 区块链的采用增长需要比今天可用的系统更优越的系统,包括并行区块链。Solana 最近的网络挑战突出了并行区块链开发中还有很大的改进空间。随着更多的团队寻求推动链上前沿的界限,并将下一批大规模用户群体和采用引入到区块链原生应用和生态系统中,并行执行模型为构建能够高效处理网络活动量级、轻松匹配 Web2 公司规模的系统提供了一个直观的框架。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/17216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytorch深度学习实践笔记10(b站刘二大人)

🎬个人简介:一个全栈工程师的升级之路! 📋个人专栏:pytorch深度学习 🎀CSDN主页 发狂的小花 🌄人生秘诀:学习的本质就是极致重复! 《PyTorch深度学习实践》完结合集_哔哩哔哩_bilibi…

C++的第一道门坎:类与对象(一)

1.面向过程与面向对象 1.1面向过程 我们之前学习的C语言就是一种面向过程的语言,面向过程的语言强调的是具体实现的过程,一般用函数来具体实现。我们用面向过程的思想,就可以把炒菜分为以下几个步骤: 1.2面向对象 而对于面向对象的语言而言…

【简单介绍下容器是什么?】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

【Spring】Spring AOP底层原理:JDK动态代理和CGLIB动态代理

目录 1、代理模式 1.1、静态代理 1.2、动态代理 2、JDK 动态代理 2.1、jdk动态代理简介 2.2、使用JDK动态代理机制步骤 3、CGLIB 动态代理 3.1、CGLIB 动态代理的特性 3.2、CGLIB的核心类 3.3、CGLIB 动态代理步骤 4、JDK 和 CGLIB 创建代理对象的区别 ​编辑 1、…

(四)手把手教你内网穿透,实现外网主机访问内网服务器

背景:书接上回, 服务器的使用-CSDN博客 课题组成员都有自己的账号,且能通过内网访问服务器,进行远程连接了。我们知道内网中的主机可以访问公网的主机,反之不可以访问。那么如果课题组成员在家不在内网区域内&#x…

源码编译安装LAMP与部署

目录 一、LAMP架构的简述 1.LAMP搭建时各组件安装顺序 二、编译安装Apache httpd服务 1.关闭防火墙,将安装Apache所需软件包传到/opt目录下 2.安装环境依赖包​编辑 3.配置软件模块 4.编译及安装 5.优化配置文件路径,并把httpd服务的可执行程序文…

基于51单片机的智能灯光控制系统

一.硬件方案 智能灯光控制系统由单片机最小系统、人体感应模块、关照强度模块、灯光控制模块、电源模块和灯泡组成。本文以STC89C52单片机为核心,通过利用光照度和红外人体感应相结合主动与被动的探测方法,现了室内无人或者关照充足时灯光自动光灯&…

Kubernetes 容器资源管理Resources和探针Probe

资源配额 Resources 在 Kubernetes 中,resources 配置用于设置容器的资源请求和限制,以确保集群中的资源(如 CPU 和内存)得到合理分配和使用。 在之前的pod中,不写 resources 字段。就意味着 Pod 对运行的资源要求“…

Java面试八股之AQS对资源的共享方式

AQS对资源的共享方式 AQS设计了一套灵活的机制,不仅支持独占(Exclusive)锁模式,也支持共享(Shared)锁模式,使得资源可以被一个或者多个线程以不同的方式访问。这两种模式通过控制一个内部的vol…

pyqt QTableView表格控件

pyqt QTableView表格控件 QTableView效果代码 QTableView QTableView 是 PyQt中的一个控件,用于显示表格数据。它通常与 QAbstractItemModel 或其子类(如 QStandardItemModel)一起使用,以提供和管理表格中的数据。 效果 代码 i…

wordpress主题 ACG美化插件v3.4.2支持zibll主题7b2主题美化

独具一格的二次元风格,打造全新的子比美化方向 大部分代码均为CSS、JS做成插件只是为了方便懒人小白站长 后台全功能一览,大部分美化均为网上通用流传,

2.冒泡排序

样例输入 5 8 3 6 4 9 样例输出 3 4 6 8 9 以下是解题答案&#xff1a; class demo1{public static void main(String[] args) {Scanner scnnew Scanner(System.in);int[] array new int[scn.nextInt()];if(array.length>0&&array.length<200){for(int…

python列表访问的深入解析

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、正向索引与负索引的奥秘 二、切片&#xff1a;高效访问多个元素 切片示例 三、切片的…

Java 文件操作和输入输出流

在 Java 编程中&#xff0c;文件操作和输入输出流是非常常见和重要的任务&#xff0c;它们允许你读取和写入文件、处理数据流等。 文件操作概述 文件操作是指对文件进行创建、读取、写入、删除等操作的过程。在 Java 中&#xff0c;文件操作通常涉及到使用文件对象、输入输出…

OpenBayes 一周速览|TripoSR 开源:1 秒即 2D 变 3D、经典 GTZAN 音乐数据集上线

公共资源速递 This Weekly Snapshots &#xff01;5 个数据集&#xff1a; FER2013 面部表情识别数据集 GTZAN 音乐流派分类数据集 MVTec-AD 工业异常检测数据集 UCAS-AOD 遥感目标检测数据集 Oxford 102 Flowers 花卉图片数据集 3 个教程&#xff1a; Latte 全球首个开…

利用ArcGIS Python批量拼接遥感影像(arcpy batch processing)

本篇文章将说明如何利用ArcGIS 10.1自带的Python IDLE进行遥感影像的批量拼接与裁剪。 1.运行环境&#xff1a;ArcGIS10.1 (安装传送门)、Python IDLE 2.数据来源&#xff1a;地理空间数据云 GDEMV2 30M分辨率数字高程数据 3.解决问题&#xff1a;制作山西省的DEM影像 如下…

【WEB前端2024】开源智体世界:乔布斯3D纪念馆-第30课-门的移动动画

【WEB前端2024】开源智体世界&#xff1a;乔布斯3D纪念馆-第30课-门的移动动画 使用dtns.network德塔世界&#xff08;开源的智体世界引擎&#xff09;&#xff0c;策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。dtns.network是一款主要由JavaScript编写的智体世界引擎…

服务器端口转发,服务器端口转发的作用、好处与坏处

服务器端口转发&#xff0c;服务器端口转发的作用、好处与坏处。 服务器端口转发是一种关键的网络技术&#xff0c;它在网络安全和通信中发挥着不可替代的作用。其主要功能是将来自一个端口的网络流量转发到另一个端口&#xff0c;从而实现内外网之间的流量交互。这种技术通常…

雷军-2022.8小米创业思考-8-和用户交朋友,非粉丝经济;性价比是最大的诚意;新媒体,直播离用户更近;用真诚打动朋友,脸皮厚点!

第八章 和用户交朋友 2005年&#xff0c;为了进一步推动金山的互联网转型&#xff0c;让金山的同事更好地理解互联网的精髓&#xff0c;我推动了一场向谷歌学习的运动&#xff0c;其中一个小要求就是要能背诵“谷歌十诫”。 十诫的第一条就令人印象深刻&#xff1a;以用户为中…

基于Cortex的MCU设计

基于Cortex的MCU设计 今日更新的存货文档&#xff0c;发现日更文章还是很花时间的。保证一周更新三篇文章就行啦&#xff0c;本篇文章的内容起始主要取自于《Cortex-M3 权威指南》和知网下载的论文。写的不详细&#xff0c;想进一步了解的就去看这篇文档或网上找别的资料&#…