|
Monad is constructing a parallel EVM L1 with complete bytecode compatibility. The uniqueness of Monad lies not only in its parallel engine but also in the optimization engine they are building at the core. Monad employs a unique holistic design approach, combining several key features such as pipelining, asynchronous I/O, consensus-execution separation, and MonadDB.
A key innovation in Monad's design is pipelining with slight offsets. Offsets allow parallelization of more processes by running multiple instances simultaneously. Therefore, pipelining is used to optimize many functions, such as state access pipelining, transaction execution pipelining, consensus and execution internal pipelining, and pipelining within the consensus mechanism itself.
Next, let's take a closer look at the parallelization part of Monad. In Monad, transactions within a block are linearly ordered, but the goal is to achieve the final state faster by leveraging parallel execution. Monad's execution engine is designed using optimistic parallel algorithms. The engine in Monad processes transactions simultaneously and then performs analysis to ensure that if transactions are executed one after another, the same results will be obtained. If any conflicts arise, a re-execution is required. Parallel execution here is a relatively simple algorithm, but combining it with other key innovations of Monad makes this approach novel. It is worth noting that even in case of re-execution, it is typically inexpensive because the inputs required for invalid transactions are almost always retained in the cache, making it a simple cache lookup. Re-execution is ensured to be successful because you have already executed previous transactions in the block.
Monad also enhances performance by separating execution and consensus (similar to Solana and Sei) and implementing delayed execution. The idea here is that if you relax the execution conditions to complete execution before reaching consensus, you can run execution and consensus in parallel, providing additional time for both. Of course, Monad uses a deterministic algorithm to handle this situation to ensure that one does not run too far ahead and get out of control. |
|