本页面为开发者总结”为何选择 Monad”。有关在 Monad 上开发或重新部署所需了解内容的总结,请参见面向开发者的部署摘要。
- MonadBFT — 解决尾部分叉问题的前沿 BFT 共识机制
- RaptorCast — 高效的区块传输
- 异步执行 — 将共识与执行流水线化,以扩大执行的时间预算
- 并行执行和 JIT 编译 — 高效的交易执行
- MonadDb — 高效存储 Ethereum 状态
GPL-3.0 许可下开源,地址如下:
交易
智能合约
共识
执行
每个区块的执行阶段在该区块达成共识后开始,使节点能够继续对后续区块进行共识。并行执行
交易是线性排序的;执行的任务是达到串行执行该交易列表所产生的状态。朴素的做法就是一个接一个地执行交易。我们能做得更好吗?可以! Monad 实现了并行执行:- 执行器是用于执行交易的虚拟机。Monad 并行运行多个执行器。
- 执行器接收一笔交易并产生结果。结果是该交易的输入和输出列表,其中输入是执行过程中被 SLOAD 的 (ContractAddress, Slot, Value) 元组,输出是交易结果导致的被 SSTORE 的 (ContractAddress, Slot, Value) 元组。
- 结果最初以待定状态产生;然后按交易的原始顺序提交。当结果被提交时,其输出更新当前状态。轮到某个结果被提交时,Monad 检查其输入是否仍与当前状态匹配;如果不匹配,Monad 会重新调度该交易。得益于这一并发控制,Monad 的执行保证产生与交易串行运行时相同的结果。
- 当交易被重新调度时,许多或全部所需的输入都已缓存,因此重新执行通常相对便宜。请注意,在重新执行时,交易可能产生一组与之前执行不同的输入;

