VMs Differences
Last updated
Last updated
The Ethereum Virtual Machine (EVM) implementation in Lumio closely resembles the standard Ethereum mainnet and other networks.
However, there are some differences that you should be aware of. For detailed information, visit the Optimism (OP) portal, where these differences are thoroughly explained. Most of these variations are implemented to maintain compatibility with standard EVM protocols, which can be slightly different in the context of L2, as L2 is not a Layer 1 (L1) protocol and often requires specific workarounds.
An important aspect to note is that the default deployment of L2 includes a Cross VM contract in the genesis block, which is not typically found in the standard OP stack L2.
Considering the presence of two virtual machines and the mapping between accounts, it's crucial to understand that direct access from an EVM account to a Move VM account using a private key is not possible. Instead, connecting accounts across these VMs can only be achieved through the use of smart contracts.
Similar to EVM and Move VM, the Solana VM updated with L2 primitives, which allows to bridge assets, finalize blocks and required workgrounds. We also got rid of not-needed primitives in case of L2, and some other optimizations in progress.
The Move VM in our system is implemented using the standard Aptos framework, albeit with some modifications that we detail in this section. Essentially, it’s a fork of the Aptos Move VM, adhering to the same design principles. The majority of the changes were implemented to enable the compilation of the Move VM into MIPS, as required by Cannon for generating fault proofs in the future, which we have successfully accomplished.
We eliminated the concept of blocks, optimized the mempool, and removed P2P and other unnecessary primitives for L2. This approach enabled us to achieve 3k TPS with under 100 ms latency using Move VM, significantly improving the TPS.
Read more about our research in this paper.
The ZK primitives have been removed from the Move VM, primarily because most of them operate using threads, and integrating them currently requires additional effort.
The specific modules that have been removed include:
In our L2, the native coin within the Move VM is ETH, and we plan to enable gas payments in various types of coins in the future. Currently, the coin representing ETH in the Move VM is 0x1::native_coin::NativeCoin
. This implementation is similar to the native coin concept in the Aptos framework. However, this abstraction has been chosen for simplicity and to facilitate future adaptability.
We have also removed contracts related to staking or governance initially implemented in the framework. These may be reintroduced after reworking, but at this stage, as the L2 sequencer is singular and a shared sequencer is not yet operational, they have been omitted.
The list of removed modules includes:
Additionally, some logic has been modified, such as aspects related to gas, block production (especially concerning validator checks), and genesis. A comprehensive list of these changes will be detailed later.
Important: The use of 0x1::aptos_coin::AptosCoin
in your transactions or API calls is still possible, as it is proxied at the VM level.