• 元宇宙:本站分享元宇宙相关资讯,资讯仅代表作者观点与平台立场无关,仅供参考.

读懂Monad及其生态项目一览

  • 2025年3月01日 11:34

文章来源:ASXN;编译:金色财经xiaozou1、前言

Monad是一个高性能优化的EVM兼容L1,具有10,000TPS(每秒10亿gas)、500毫秒的出块频率和1秒的最终性。该链从零开始构建,旨在解决EVM面临的一些问题,具体来说:

*EVM按顺序处理交易,导致网络高活动期间的瓶颈,从而延长交易时间,尤其是在网络拥堵时。

*吞吐量低,仅为12-15TPS,且出块时间长,为12秒。

*EVM要求每笔交易支付gas费用,费用波动较大,尤其是在网络需求高时,gas费用可能变得极其昂贵。2、为什么扩展EVM

Monad提供完整的EVM字节码和EthereumRPCAPI兼容性,使开发者和用户无需更改现有工作流程即可集成。

一个常见的问题是,当存在像SVM这样性能更好的替代方案时,为什么还要扩展EVM。与大多数EVM实现相比,SVM提供更快的出块时间、更低的费用和更高的吞吐量。然而,EVM具有一些关键优势,这些优势源于两个主要因素:EVM生态系统中的大量资本和广泛的开发者资源。

(1)资本基础

EVM拥有大量资本,Ethereum的TVL接近520亿美元,而Solana为70亿美元。L2如Arbitrum和Base各自持有约25-30亿美元的TVL。Monad和其他EVM兼容链可以通过与最小摩擦集成的规范桥和第三方桥从EVM链上的大资本基础中受益。这一庞大的EVM资本基础相对活跃,可以吸引用户和开发者,因为:

*用户倾向于流动性和高交易量。

*开发者寻求高交易量、费用和应用的可见性。

XnuR0v2XzeMAxena25krMOMhI1tvxCSRgE0ywSNr.png

除了开发者,用户也更喜欢熟悉的工作流程。通过Rabby、MetaMask和Etherscan等工具,EVM工作流程已成为标准。这些成熟的平台促进了桥和协议的集成。此外,基本应用(AMM、货币市场、桥)可以立即启动。这些基本原语对于链的可持续性以及新颖应用至关重要。3、扩展EVM

扩展EVM有两种主要方法:

*将执行移至链下:通过rollups将执行卸载到其他虚拟机,采用模块化架构。

*提高性能:通过共识优化和增加区块大小及gas限制来提高基础链EVM的性能。

(1)Rollup和模块化架构

Vitalik在2020年10月引入了rollups作为Ethereum的主要扩展解决方案,符合模块化Blockchain原则。因此,Ethereum的扩展路线图将执行委托给rollup,这些rollup是利用Ethereum安全性的链下虚拟机。Rollup在执行方面表现出色,具有更高的吞吐量、更低的延迟和更低的交易成本。它们的迭代开发周期比Ethereum短——在Ethereum上需要数年的更新可能在rollup上只需数月,因为潜在成本和损失较低。

Rollup可以使用中心化的排序器运行,同时保持安全逃生舱,帮助它们绕过某些去中心化要求。需要注意的是,许多rollup(包括Arbitrum、Base和OPMainnet)仍处于起步阶段(阶段0或阶段1)。在阶段1的rollup中,欺诈证明提交仅限于白名单参与者,且与链上可证明错误无关的升级必须为用户提供至少30天的退出窗口。阶段0的rollup在许可操作者宕机或审查时为用户提供不到7天的退出时间。

bzcBlyz8zGA9Sh2XvxJ82Gayqe4odouxqC77qTbL.png

Arbitrum专注于游戏的L3、Xai和ProofofPlay,展示了这种方法。它们基于ArbitrumOrbit堆栈构建,使用AnyTrust数据可用性在Arbitrum上结算。Xai达到67.5TPS,而ProofofPlayApex达到12.2TPS,ProofofPlayBoss为10TPS。这些L3通过Arbitrum结算引入了额外的信任假设,而不是Ethereum主网,同时面临去中心化数据可用性层较少的潜在挑战。Optimism的L2——Base、Blast和即将推出的Unichain——通过Ethereum结算和blob数据可用性保持更强的安全性。

两个网络都优先考虑水平扩展。Optimism通过OPStack提供L2基础设施、链部署支持和具有互操作性功能的共享桥接。Arbitrum将特定用例卸载到L3,特别是游戏应用,其中额外的信任假设比金融应用带来更低的资本风险。

(3)优化链和EVM性能

替代扩展方法专注于执行优化或目标权衡,通过垂直而非水平扩展来增加吞吐量和TPS。Base、MegaETH、Avalanche和BNBChain体现了这一策略。

BaseBase宣布计划通过逐步增加gas目标达到1Ggas/s。9月,他们将目标提高到11Mgas/s,并将gas限制增加到33Mgas。初始区块处理了258笔交易,保持约70TPS五个小时。到12月18日,gas目标达到20Mgas/s,出块时间为2秒,每块支持40Mgas。相比之下,Arbitrum为7Mgas/s,OPMainnet为2.5MGas/s。

4vOFBwLXaMt9IB1aVpFfp1tVraUnY00GxZZCJZeY.png

*截至2025年1月,其月度费用达到1560万美元——是Arbitrum的7.5倍,OPMainnet的23倍。

*截至2025年1月,其交易量累计达到3.297亿笔,是Arbitrum(5790万笔)的6倍,OPMainnet(2450万笔)的14倍。注意:交易量可能被操纵,可能具有误导性。

Base团队专注于通过优化速度、吞吐量和低费用提供更统一的体验,而不是Arbitrum和Optimism的模块化方法。用户表现出对更统一体验的偏好,正如Base的活动和收入数字所示。此外,Coinbase的支持和分发也起到了帮助作用。

MegaETH

MegaETH是一个EVM兼容的L2。其核心是通过使用专用排序器节点的混合架构处理交易。MegaETH在其架构中独特地将性能和安全任务分离,结合新的状态管理系统,取代传统的MerklePatriciaTrie,以最小化磁盘I/O操作。

该系统每秒处理100,000笔交易,延迟低于毫秒,同时保持完全的EVM兼容性和处理TB级状态数据的能力。MegaETH使用EigenDA进行数据可用性,将功能分布在三种专用节点类型上:

*排序器:一个高性能单节点(100核,1-4TBRAM)管理交易排序和执行,将状态保持在RAM中以快速访问。它以大约10毫秒的间隔生成区块,见证区块验证,并跟踪Blockchain状态变化的状态差异。排序器通过并行EVM执行和优先级支持实现高性能,在正常操作期间无需共识开销。

*证明者:这些轻量级节点(1核,0.5GBRAM)计算验证区块内容的加密证明。它们异步和乱序验证区块,采用无状态验证,水平扩展,并为全节点验证生成证明。系统支持零知识和欺诈证明。

*全节点:在中等硬件(4-8核,16GBRAM)上运行,全节点桥接证明者、排序器和EigenDA。它们通过点对点网络处理压缩的状态差异,应用差异而无需重新执行交易,使用证明者生成的证明验证区块,使用优化的MerklePatriciaTrie维护状态根,并支持19倍压缩同步。

szmgVUZJLFkTLfIaulo3xGUkfcIUzzKcAB4Ye5m3.png

(5)Monad的EVM早期的Ethereum分叉主要修改了共识机制,如Avalanche,同时保持了GoEthereum客户端用于执行。尽管存在多种编程语言的Ethereum客户端,但它们基本上复制了原始设计。Monad通过从第一原则和零开始重建共识和执行组件而有所不同。

Monad优先考虑最大化硬件利用率。相比之下,Ethereum主网对支持独立质押者的重视限制了性能优化,因为它需要与较弱的硬件兼容。这一限制影响了区块大小、吞吐量和出块时间的改进——最终,网络的速度取决于其最慢的验证者。

与Solana的方法类似,Monad采用更强大的硬件来增加带宽并减少延迟。这一策略利用所有可用的核心、内存和固态硬盘来提高速度。鉴于强大硬件的成本不断下降,优化高性能设备比限制低质量设备的能力更为实际。

Er7rW9vKe2QCJC1ATi7VEipAWZ5v0nI4u9DIJZEn.png

*用户A剩下80USDC(分别向B和C发送了10USDC)。

*用户B有10USDC。

*用户C有310USDC。

并行执行过程

使用并行执行,过程更复杂,但效率更高。多个交易同时处理,而不是等待每个交易按顺序完成。虽然交易并行运行,但系统会跟踪它们的输入和输出。在顺序“合并”阶段,如果检测到某个交易使用了被较早交易更改的输入,则该交易将使用更新后的状态重新执行。

逐步过程如下:

*用户A最初有100USDC,用户B最初有0USDC,用户C最初有300USDC。

*通过乐观并行执行,多个交易同时运行,最初假设它们都从相同的初始状态开始工作。

*在这种情况下,交易1和交易2并行执行。两个交易都读取用户A初始状态为100USDC。

*交易1计划从用户A向用户B发送10USDC,将用户A的余额减少到90,用户B的余额增加到10。

*同时,交易2也读取用户A的初始余额为100,并计划向用户C转移10USDC,试图将用户A的余额减少到90,用户C的余额增加到310。

*当链按顺序验证这些交易时,首先检查交易1。由于其输入值与初始状态匹配,因此提交,用户A的余额变为90,用户B收到10USDC。

*当链检查交易2时,发现了一个问题:交易2计划时假设用户A有100USDC,但用户A现在只有90USDC。由于这种不匹配,交易2必须重新执行。

*在重新执行期间,交易2读取用户A更新后的状态为90USDC。然后成功从用户A向用户C转移10USDC,用户A剩下80USDC,用户C的余额增加到310USDC。

*在这种情况下,由于用户A有足够的资金进行两次转账,两个交易都能成功完成。

q3Vv10jQELXEYXry7rXCZPgji07FU1UIIhANGyaT.png

*节点执行已达成共识的交易.

*共识继续进行下一个区块,而不等待执行完成,执行跟随共识.

这种结构使系统能够在执行开始之前通过共识承诺大量工作,允许Monad通过分配额外的时间来处理更大的区块和更多的交易。此外,它使每个进程能够独立使用整个区块时间——共识可以使用整个区块时间进行全球通信,执行可以使用整个区块时间进行计算,两个进程互不阻塞。

为了在将执行与共识解耦的同时保持安全性和状态一致性,Monad使用延迟的默克尔根,其中每个区块包含N个区块前的状态默克尔根(N预计在启动时为10,在当前测试网中设置为3),允许节点在执行后验证它们是否达到了相同的状态。延迟的默克尔根允许链验证状态一致性:延迟的默克尔根充当检查点——N个区块后,节点必须证明它们到达了相同的状态根,否则它们执行了错误的内容。此外,如果节点的执行产生了不同的状态根,它将在N个区块后检测到这一点,并可以回滚并重新执行以达成共识。这有助于消除节点恶意行为的风险。生成的延迟默克尔根可用于轻客户端验证状态——尽管有N个区块的延迟。

由于执行被延迟并在共识之后发生,一个潜在的问题是恶意行为者(或普通用户意外地)不断提交最终会因资金不足而失败的交易。例如,如果总余额为10MON的用户提交了5笔交易,每笔交易单独尝试发送10MON,可能会导致问题。然而,如果不进行检查,这些交易可能会通过共识,但在执行期间失败。为了解决这个问题并减少潜在的垃圾邮件,节点在共识期间通过跟踪在途交易实施保护措施。

对于每个账户,节点检查N个区块前的账户余额(因为这是最新的已验证的正确状态)。然后,对于该账户的每笔“在途”的待处理交易(已通过共识但尚未执行),它们减去正在转移的价值(例如发送1MON)和最大可能的gas成本,计算为gas_limit乘以maxFeePerGas。

这个过程创建了一个运行的“可用余额”,用于在共识期间验证新交易。如果新交易的价值加上最大gas成本超过此可用余额,则在共识期间拒绝该交易,而不是让它通过后在执行期间失败。

由于Monad的共识以略微延迟的状态视图进行(由于执行解耦),它实施了一种保护措施,以防止包含发送者最终无法支付的交易。在Monad中,每个账户在共识期间都有一个可用或“储备”余额。随着交易被添加到提议的区块中,协议从该可用余额中扣除交易的最大可能成本(gas*最大费用+转移的价值)。如果账户的可用余额将降至零以下,则该账户的进一步交易不会包含在区块中。

这种机制(有时被描述为向储备余额收取运输成本)确保只有可以支付的交易被提议,从而防御攻击者试图用0资金淹没网络的无用交易的DoS攻击。一旦区块最终确定并执行,余额将相应调整,但在共识阶段,Monad节点始终对未决交易的可花费余额进行最新检查。

6、MonadBFT

(1)共识

HotStuff

MonadBFT是一种低延迟、高吞吐量的拜占庭容错(“BFT”)共识机制,源自HotStuff共识。

Hotstuff由VMresearch创建,并由Meta前Blockchain团队的LibraBFT进一步改进。它实现了线性视图更改和响应性,意味着它可以有效地轮换Leader,同时以实际网络速度而不是预定的超时时间进行。HotStuff还使用阈值签名以提高效率,并实现了流水线操作,允许在提交前一个区块之前提议新区块。

然而,这些好处伴随着某些权衡:与经典的两轮BFT协议相比,额外的轮次导致更高的延迟和流水线期间分叉的可能性。尽管有这些权衡,HotStuff的设计使其更适合大规模Blockchain实现,尽管它导致比两轮BFT协议更慢的最终性。

以下是HotStuff详解:

*当交易发生时,它们被发送到网络的一个验证者,称为Leader。

*Leader将这些交易编译成一个区块,并将其广播给网络中的其他验证者。

*验证者然后通过投票验证区块,投票发送给下一个区块的Leader。

*为了防止恶意行为者或通信故障,区块必须经过多轮投票才能最终确定状态。

*根据具体实现,区块只有在成功通过两到三轮后才能提交,确保共识的健壮性和安全性。

ZCOOZYRwEM3NtDDSQAtQLUFRU5jgCPVPy1NUE1dR.png

*第1轮:初始区块被提议并获得QC

*第2轮:下一个区块被提议并获得QC如果这两轮连续完成,则可以提交第一个区块。

DiemBFT过去使用三轮系统,但升级为两轮系统。两轮系统通过减少通信轮次实现更快的提交。它允许更低的延迟,因为交易可以更快地提交,因为它们不需要等待额外的确认。

具体过程

MonadBFT中的共识过程如下:

*Leader操作和区块提议:当当前轮的指定Leader启动共识时,过程开始。Leader创建并广播一个包含用户交易的新区块,以及前一轮共识的证明,形式为QC或TC。这创建了一个流水线结构,其中每个区块提议都携带前一个区块的认证。

*验证者操作:一旦验证者收到Leader的区块提议,他们开始验证过程。每个验证者根据协议规则仔细审查区块的有效性。有效的区块收到发送给下一轮Leader的签名YES投票。然而,如果验证者在预期时间内没有收到有效区块,他们通过广播包括他们已知的最高QC的签名超时消息来启动超时程序。这种双路径方法确保即使区块提议失败,协议也能取得进展。

*证书创建:协议使用两种类型的证书来跟踪共识进展。当Leader从三分之二的验证者收集到YES投票时,创建QC,证明对区块的广泛共识。或者,如果三分之二的验证者在没有收到有效提议的情况下超时,他们创建TC,允许协议安全地进入下一轮。两种证书类型都作为验证者参与的关键证明。

*区块最终确定(两链提交规则):MonadBFT使用两链提交规则进行区块最终确定。当验证者观察到来自连续轮的两个相邻认证区块形成一个链B←QC←B'←QC'时,他们可以安全地提交区块B及其所有祖先。这种两链方法在保持性能的同时提供了安全性和活跃性。

本地内存池架构

Monad采用本地内存池架构,而不是传统的全局内存池。在大多数Blockchain中,待处理交易被广播到所有节点,这可能很慢(许多网络跳)并且由于冗余传输而带宽密集。相比之下,在Monad中,每个验证者维护自己的内存池;交易由RPC节点直接转发给接下来的几个预定Leader(目前是接下来的N=3个Leader)以包含。

这利用了已知的Leader时间表(避免不必要的广播给非Leader),并确保新交易快速到达区块提议者。即将到来的Leader执行验证检查并将交易添加到他们的本地内存池中,因此当验证者轮到领导时,它已经有相关的交易排队。这种设计减少了传播延迟并节省了带宽,实现了更高的吞吐量。

(2)RaptorCast

Monad使用一种称为RaptorCast的专用多播协议,以快速将区块从Leader传播到所有验证者。Leader不是将完整区块串行发送给每个对等方或依赖简单的广播,而是使用纠删码方案(根据RFC5053)将区块提议数据分解为编码块,并通过两级中继树高效分发这些块。在实践中,Leader将不同的块发送给一组第一层验证者节点,然后这些节点将块转发给其他人,这样每个验证者最终都会收到足够的块以重建完整区块。块的分配按权益加权(每个验证者负责转发一部分块),以确保负载平衡。这样,整个网络的上传容量被用来快速传播区块,最小化延迟,同时仍然容忍可能丢弃消息的拜占庭(恶意或故障)节点。RaptorCast使Monad即使在大区块的情况下也能实现快速、可靠的区块广播,这对于高吞吐量至关重要。

BLS和ECDSA签名

QC和TC使用BLS和ECDSA签名实现,这是密码学中使用的两种不同类型的数字签名方案。

Monad结合使用BLS签名和ECDSA签名以提高安全性和可扩展性。BLS签名支持签名聚合,而ECDSA签名通常验证速度更快。

ECDSA签名

虽然无法聚合签名,但ECDSA签名速度更快。Monad将它们用于QC和TC。

QC创建:

*Leader提议一个区块

*验证者通过签名投票表示同意

*当收集到所需的投票部分时,它们可以组合成一个QC。

*QC证明验证者同意该区块

TC创建:

*如果验证者在预定时间内没有收到有效区块

*它向对等方广播签名的超时消息

*如果收集到足够的超时消息,它们形成一个TC。

*TC允许即使当前轮失败也能进入下一轮

BLS签名Monad将BLS签名用于多重签名,因为它允许签名逐步聚合成单个签名。这主要用于可聚合的消息类型,如投票和超时。

投票是验证者在同意提议的区块时发送的消息。它们包含表示批准区块的签名,并用于构建QC。

超时是验证者在预期时间内没有收到有效区块时发送的消息。它们包含带有当前轮号、验证者的最高QC和这些值的签名的签名消息。它们用于构建TC。

投票和超时都可以使用BLS签名组合/聚合以节省空间并提高效率。如前所述,BLS比ECDSA签名相对较慢。

Monad结合使用ECDSA和BLS以受益于两者的效率。尽管BLS方案较慢,但它允许签名聚合,因此特别适用于投票和超时,而ECDSA更快但不允许聚合。7、MonadMEV

简单来说,MEV指的是通过重新排序、包含或排除区块中的交易,各方可以提取的价值。MEV通常被分类为“好的”MEV,即保持市场健康高效的MEV(例如清算、套利)或“坏的”MEV(例如三明治攻击)。

Monad的延迟执行影响了链上MEV的工作方式。在Ethereum上,执行是共识的前提——意味着当节点就一个区块达成一致时,它们就交易列表和顺序以及结果状态达成一致。在提议新区块之前,Leader必须执行所有交易并计算最终状态,允许搜索者和区块构建者可靠地针对最新确认的状态模拟交易。

相比之下,在Monad上,共识和执行是解耦的。节点只需要就最近区块的交易顺序达成一致,而状态的共识可能稍后达成。这意味着验证者可能基于较早区块的状态数据工作,这使得它们无法针对最新区块进行模拟。除了缺乏确认的状态信息带来的复杂性外,Monad的1秒出块时间可能对构建者模拟区块以优化构建的区块具有挑战性。

访问最新的状态数据对搜索者是必要的,因为它为他们提供了DEX上的确认资产价格、流动性池余额和智能合约状态等——这使他们能够识别潜在的套利机会和发现清算事件。如果最新的状态数据未确认,搜索者无法在下一个区块产生之前模拟区块,并面临状态确认之前交易回滚的风险。

鉴于Monad区块存在延迟,MEV格局可能与Solana类似。

作为背景,在Solana上,区块每约400毫秒在一个槽中产生,但区块产生到“根化”(最终确定)之间的时间更长——通常为2000-4000毫秒。这种延迟不是来自区块生产本身,而是来自收集足够的权益加权投票以使区块最终确定所需的时间。

在这个投票期间,网络继续并行处理新区块。由于交易费用非常低,并且可以并行处理新区块,这创造了一个“竞争条件”,搜索者会发送大量交易希望被包含——这导致许多交易被回滚。例如,在12月期间,Solana上的31.6亿笔非投票交易中有13亿笔(约41%)被回滚。Jito的Buffalu早在2023年就强调,“Solana上98%的套利交易失败”。

由于Monad上存在类似的区块延迟效应,最新区块的确认状态信息不存在,并且新区块并行处理,搜索者可能会被激励发送大量交易——这些交易可能会失败,因为交易被回滚,确认的状态与它们用于模拟的状态不同。

8、MonadDB

Monad选择构建一个自定义数据库,称为MonadDB,用于存储和访问Blockchain数据。链扩展性的一个常见问题是状态增长——即数据大小超过节点的容量。Paradigm在四月份发布了一篇关于状态增长的简短研究文章,强调了状态增长、历史增长和状态访问之间的区别,他们认为这些通常被混为一谈,尽管它们是影响节点硬件性能的不同概念。

正如他们所指出的:

*状态增长指的是新账户(账户余额和随机数)和合约(合约字节码和存储)的积累。节点需要有足够的存储空间和内存容量来适应状态增长。

*历史增长指的是新区块和新交易的积累。节点需要有足够的带宽来共享区块数据,并且需要有足够的存储空间来存储区块数据。

*状态访问指的是用于构建和验证区块的读写操作。

如前所述,状态增长和历史增长都会影响链的扩展性,因为数据大小可能会超过节点的容量。节点需要将数据存储在永久存储中以构建、验证和分发区块。此外,节点必须在内存中缓存以与链同步。状态增长和历史增长以及优化的状态访问都需要链来适应,否则会限制区块大小和每个区块的操作。区块中的数据越多,每个区块的读写操作越多,历史增长和状态增长就越大,对高效状态访问的需求也就越大。

尽管状态和历史增长是扩展性的重要因素,但它们并不是主要问题,特别是从磁盘性能的角度来看。MonadDB专注于通过对数数据库扩展来管理状态增长。因此,增加16倍的状态只需要每次状态读取时多一次磁盘访问。关于历史增长,当链具有高性能时,最终会有太多数据无法本地存储。其他高吞吐量链,如Solana,依赖GoogleBigTable等云托管来存储历史数据,这虽然有效,但由于依赖中心化方,牺牲了去中心化。Monad最初将实施类似的解决方案,同时最终致力于去中心化解决方案。

(1)状态访问

除了状态增长和历史增长,MonadDB的关键实现之一是优化每个区块的读写操作(即改进状态访问)。

Ethereum使用MerklePatriciaTrie(“MPT”)来存储状态。MPT借鉴了PATRICIA(一种数据检索算法)的特性,以实现更高效的数据检索。

Merkle树Merkle树(“MT”)是一组哈希值,最终缩减为一个单一的根哈希值,称为Merkle根。数据的哈希值是原始数据的固定大小加密表示。Merkle根是通过反复哈希数据对直到剩下一个哈希值(Merkle根)而创建的。Merkle根的有用之处在于它允许验证叶子节点(即被反复哈希以创建根的单个哈希值),而无需单独验证每个叶子节点。

这比单独验证每笔交易要高效得多,特别是在每个区块中有许多交易的大型系统中。它在各个数据片段之间创建了可验证的关系,并允许“Merkle证明”,即通过提供交易和重建根所需的中间哈希值(log(n)个哈希值而不是n笔交易),可以证明交易包含在区块中。

MerklePatriciaTrie

Merkle树非常适合Bitcoin的需求,其中交易是静态的,主要需求是证明交易存在于区块中。然而,它们不太适合Ethereum的用例,Ethereum需要检索和更新存储的数据(例如,账户余额和随机数,添加新账户,更新存储中的键),而不仅仅是验证其存在,这就是为什么Ethereum使用MerklePatriciaTrie来存储状态。

MerklePatriciaTrie(“MPT”)是一种修改后的Merkle树,用于在状态数据库中存储和验证键值对。虽然MT获取一系列数据(例如交易)并仅成对哈希它们,但MPT像字典一样组织数据——每个数据(值)都有一个特定的地址(键)来存储。这种键值存储是通过PatriciaTrie实现的。

Ethereum使用不同类型的键来访问不同类型的Trie,具体取决于需要检索的数据。Ethereum使用4种类型的Trie:

*世界状态Trie:包含地址和账户状态之间的映射。

*账户存储Trie:存储与智能合约相关的数据。

*交易Trie:包含区块中包含的所有交易。

*收据Trie:存储带有交易执行信息的交易收据。

*Trie通过不同类型的键访问值,这使得链能够执行各种功能,包括检查余额、验证合约代码是否存在或查找特定账户数据。

注意:Ethereum计划从MPT转向Verkle树,以“升级Ethereum节点,使其能够停止存储大量状态数据而不失去验证区块的能力”。

MonadDB:PatriciaTrie

与Ethereum不同,MonadDb在磁盘和内存中本地实现了PatriciaTrie数据结构。

如前所述,MPT是Merkle树数据结构与PatriciaTrie的结合,用于键值检索:其中两种不同的数据结构被集成/结合:PatriciaTrie用于存储、检索和更新键值对,而Merkle树用于验证。这导致了额外的开销,因为它增加了基于哈希的节点引用的复杂性,并且Merkle需要在每个节点上为哈希值提供额外的存储。

基于PatriciaTrie的数据结构使MonadDB能够:

*拥有更简单的结构:每个节点没有Merkle哈希,节点关系没有哈希引用,它只直接存储键和值。*直接路径压缩:减少到达数据所需的查找次数。*本地键值存储:虽然MPT将PatriciaTrie集成到单独的键值存储系统中,但PatriciaTrie的本地功能就是键值存储,这允许更好的优化。*无需数据结构转换:无需在Trie格式和数据库格式之间进行转换。这些使MonadDB具有相对较低的计算开销,需要更少的存储空间,实现更快的操作(无论是检索还是更新),并保持更简单的实现。

异步I/O

交易在Monad上并行执行。这意味着存储需要适应多个交易并行访问状态,即数据库应该具有异步I/O。

MonadDB支持现代异步I/O实现,这使得它能够处理多个操作而无需创建大量线程——与其他传统的键值数据库(例如LMDB)不同,后者必须创建多个线程来处理多个磁盘操作——由于需要管理的线程较少,因此开销较小。

在加密领域中输入/输出处理的简单示例是:

*输入:在交易前读取状态以检查账户余额*输出:在转账后写入/更新账户余额异步I/O允许输入/输出处理(即读取和写入存储),即使先前的I/O操作尚未完成。这对于Monad来说是必要的,因为多个交易正在并行执行。因此,一个交易需要在另一个交易仍在从存储中读取或写入数据时访问存储以读取或写入数据。在同步I/O中,程序按顺序一次执行一个I/O操作。在同步I/O处理中请求I/O操作时,交易会等待直到前一个操作完成。例如:

*同步I/O:链将tx/block#1写入状态/存储。链等待其完成。然后链可以写入tx/block#2。*异步I/O:链同时将tx/block#1、tx/block#2和tx/block#3写入状态/存储。它们独立完成。

(2)StateSync

Monad拥有一个StateSync机制,帮助新节点或落后节点高效地赶上最新状态,而无需从创世开始重放每笔交易。StateSync允许一个节点(“客户端”)从其同行(“服务器”)请求到目标区块的最近状态快照。状态数据被分割成块(例如账户状态的部分和最近的区块头),这些块分布在多个验证者同行中以分担负载。每个服务器响应请求的状态块(利用MonadDb中的元数据快速检索所需的Trie节点),客户端组装这些块以构建目标区块的状态。由于链在不断增长,一旦同步完成,节点要么执行另一轮更接近顶端的StateSync,要么重放少量最近的区块以完全赶上。这种分块状态同步大大加速了节点引导和恢复,确保即使Monad的状态增长,新的验证者也可以加入或重启并完全同步,而无需数小时的延迟。9、生态系统

(1)生态系统努力

Monad团队专注于为其链开发一个强大而稳健的生态系统。过去几年,L1和L2之间的竞争已经从主要关注性能转向面向用户的应用程序和开发者工具。链仅仅吹嘘高TPS、低延迟和低费用已经不够了;它们现在必须提供一个包含各种不同应用程序的生态系统,从DePIN到AI,从DeFi到消费者。这变得越来越重要的原因是高性能L1和低成本L1的激增,包括Solana、Sui、Aptos和Hyperliquid,它们都提供了高性能、低成本的开发环境和区块空间。Monad在这里的一个优势是它使用了EVM。

如前所述,Monad提供完整的EVM字节码和EthereumRPCAPI兼容性,使开发者和用户能够集成,而无需更改其现有工作流程。那些致力于扩展EVM的人经常受到的一个批评是,有更高效的替代方案可用,例如SVM和MoveVM。然而,如果一个团队可以通过软件和硬件改进来最大化EVM性能,同时保持低费用,那么扩展EVM是有意义的,因为存在现有的网络效应、开发者工具和可以轻松访问的资本基础。

Monad的完整EVM字节码兼容性使应用程序和协议实例可以从其他标准EVM(如ETH主网、Arbitrum和OPStack)移植,而无需更改代码。这种兼容性既有优点也有缺点。主要优点是现有团队可以轻松将其应用程序移植到Monad。此外,为Monad创建新应用程序的开发者可以利用为EVM开发的丰富资源、基础设施和工具,如Hardhat、Apeworx、Foundry、Rabby和Phantom等钱包,以及Etherscan、Parsec和Dune等分析和索引产品。

易于移植的协议和应用程序的一个缺点是,它们可能导致懒惰、低效的分叉和应用程序在链上启动。虽然链拥有许多可用的产品很重要,但大多数应该是无法在其他链上访问的独特应用程序。例如,尽管大多数链都需要UniswapV2风格或基于集中流动性的AMM,但链还必须吸引一类新的协议和应用程序,以吸引用户。现有的EVM工具和开发者资源有助于实现新颖和独特的应用程序。此外,Monad团队实施了各种计划,从加速器到风险投资竞赛,以鼓励链上的新颖协议和应用程序。

(2)生态系统概述

Monad提供高吞吐量和最低的交易费用,使其非常适合特定类型的应用程序,如CLOB、DePIN和消费者应用程序,这些应用程序非常适合从高速、低成本的环境中受益。

在深入探讨适合Monad的特定类别之前,了解为什么应用程序会选择在L1上启动,而不是在L2上启动或启动自己的L1/L2/应用链,可能会有所帮助。

kiHXs7tpvVJ0gfRgidTgykwQ9eveLbV4g87hHQ4U.png

*AI应用

值得关注的项目有:Playback、Score、Fortytwo、Monorail、Mace等。

Copyright © 2021.Company 元宇宙YITB.COM All rights reserved.元宇宙YITB.COM