MONAD的2.25亿美元融资:乐观的并行化和MonadBFT洞察
Monad,被誉为首款一层的智能合约平台,刚刚从知名风投企业Paradigm那里筹集了2.25亿美元的资金哦~
虽然Monad目前还没有正式上线,但是大家翘首以盼它在2024年底的公共测试网上线,而主网部署已经在2025年初的计划之中啦。
Monad致力于打造一个并行以太坊虚拟机(EVM)项目,类似于Aurora(建立在Near协议之上)或Sei,它试图并行化EVM指令的执行,以便网络能够同时处理多个交易。这样一来,不仅交易量增大,吞吐量也提升了,成本也降低了。
并行化涉及将交易执行分解成更小、独立的任务,这些任务可以同时处理。Monad引入了四种优化措施以提升其共识、执行和数据存储:MonadBFT、延迟执行、并行执行和MonadDB。

MonadBFT
MonadBFT,听起来就像是一个二进制的瑜伽动作,其实是双边一致性容错算法,旨在提升区块链的可扩展性和效率。它是基于HotStuff算法,但优化了在部分同步环境下的运行。
(这优化挺重要的,因为现实世界的网络往往因为网络拥堵、延迟等因素,并没有完美的同步表现。)
HotStuff算法是一种设计用来让区块链系统达到拜占庭容错(BFT)的共识协议,也就是尽管部分节点表现出恶意或者故障,系统仍能继续运作的计算机能力。
它通过节点间的多次通信达成共识,以确定链中的下一个区块。不过,HotStuff需要三轮通信才能完成共识,这对于可扩展性和效率来说,可能是个瓶颈。而MonadBFT则将所需通信轮数从三缩减到了两轮,提高了效率。
共识机制分为几个阶段。一个领导者节点提议区块,验证者对其进行审查。在每一轮,领导者发送一个新区块,附带上一轮的多数认证证书(QC)或超时证书(TC)。QC证明多数验证者已批准该区块,并表明他们认同区块的有效性。
而TC表示需要在既定时间内达到的验证者数量没有达成共识。这就像是系统的一个后备措施,防止单个轮次的停滞。
验证者对领导者提出的新区块进行投票。如果足够的验证者(占比三分之二)批准,那么块将被最终化,并颁发QC。
如果验证者在规定时间内没有收到有效的块,他们将发送签名的超时消息,这些消息可以汇总成TC。然后,这个TC直接发送给下一轮的领导者。只有当验证者看到两个连续认证的块时,块才被最终化。
这个两阶段提交规则保证了快速区块最终化,同时维持网络安全和容错能力。在所有异步BFT设置中,Monad三分之二的验证节点必须是非敌对的,并且投票权重相等,以维持安全性。

延迟执行
延迟执行就像给交易执行找个“备胎”,让它不直接依赖于共识。不像以太坊这样的传统区块链,节点必须在建立共识之前执行交易,MonadBFT的共识只关注交易的顺序。
在以太坊上,节点必须就区块中的交易列表以及状态后交易执行的Merkle树根达成共识。这意味着共识领导者在提交区块之前必须执行交易,而验证节点在投票之前也需要重新执行这一过程。
因此,区块时间可能会相当长,网络可以处理的计算复杂性也会降低。但MonadBFT的共识机制只确定交易的顺序,在达成共识后,允许执行独立进行。
为了确保执行正确,Monad将状态Merkle树根的达成协议延迟了D个区块。D是一个系统级别的参数,目前预计值为10。
这种设计降低了恶意节点不正确执行交易的风险。一旦网络以三分之二的多数票数就区块N达成共识,这也意味着它也同意了区块N-D中由Merkle树所表示的状态。
如果任何节点在执行区块N-D时发现错误,它会反对区块N的提议。这会触发从区块N-D-1的最后状态回滚,然后重新执行区块N-D中的交易。节点可以通过检查自己的Merkle树来验证和更正其执行结果,并且轻节点可以查询全节点以获取状态变量的Merkle证明。
并行执行
流行的并行执行区块链要么是确定的,要么是乐观的。

Monad采用乐观执行来实现并行交易处理,有点像中央处理器(CPU)中使用的预测执行。
Monad的执行引擎在上一个事务的执行完成之前,就开始处理新事务,从而提高整体吞吐量。
然而,这种被称为乐观并发控制的策略在后续事务相关性存在时可能会导致错误。如果检测到冲突(例如,当两个交易试图修改相同的账户余额时),则受影响的交易将被重新执行以纠正差异。
在最坏的情况下,一个交易必须执行两次,但总体上,这只会增加1.5%的额外开销。Monad还采用静态代码分析器来提前预测交易之间的依赖关系。这种静态分析使得Monad能够在执行之前就识别潜在冲突,尽管它不能预防所有冲突,但这有助于优化初始交易的调度以实现更高效的乐观并行执行。
Sei也采用乐观并行化,假设交易不会冲突,但它采取了独特的处理冲突的方法。在并行化过程中,Sei跟踪每个交易修改的每个私有部分。如果发现两个交易冲突,即它们都试图修改状态的同一部分,系统将临时停止执行并按顺序重新处理这些冲突交易,类似于Monad。
然而,Monad使用静态代码分析器来更有效地进行事务调度,因此减少了冲突的可能性,而Sei只是在执行中处理出现的冲突。
乐观执行还消除了对复杂调度和依赖分析算法的需求,这些算法对于确定性方法来说是必需的。在使用Sui和Solana采用的确定性方法中,交易必须在执行之前就声明它们将访问的状态部分。
这种提前声明使得系统能够按避免执行过程中冲突的方式进行事务调度。这种方法的主要优点是可预测性:由于依赖关系提前已知,系统能够确保交易不会相互影响,从而实现一致可靠的后果。
然而,这种可预测性也有一些代价。分析依赖关系和调度交易需要复杂算法,这些算法必须考虑到所有可能的交易间相互作用,并带来计算开销,从而导致更高的硬件要求。
对实时分析和调度也增加了复杂性,因为系统必须持续监控和调整执行顺序以防止冲突。
此外,确定性方法在高效扩展时可能面临挑战。随着交易数量的增加,依赖关系的复杂性呈指数级增长。

MonadDB
MonadDB是一种专门为优化并行执行设计的定制数据库。在像以太坊这样的传统区块链中,输入/输出(I/O)访问成为一个重要的瓶颈,主要是因为这些系统依赖于同步I/O操作。
进程必须等待每个读取或写入操作完成,才能进行下一个操作,这严重限制了吞吐量和整体性能。为了克服这一限制,MonadDB采用了异步磁盘操作,允许系统能够同时启动多个读取和写入操作,而不必等待每个操作完成。这提高了交易处理速度,特别是在与并行执行结合使用时。