Author: Jason Rodrigues
In this piece, I will compare the different Virtual Machines that are presently available (Ethereum Virtual Machine, MoveVM and Solana) across different yardsticks. Celo networks run the Ethereum Virtual Machine (EVM) to support smart contract functionality.
Function Calling
How are function calls dispatched in this Virtual Machine?
- In Celo and the EVM, you have dynamic dispatch which is basically the process for the selection of specific implementations of polymorphic operation, i.e., function or method; you should choose to call at run time.
- In Solana, there is static dispatch of program structs
- In MoveVM, there is static dispatch of module structs, but not on generics.
Data Storage
Where and how is data stored?
- In Celo and the EVM, data is stored within the account associated with a smart contract.
- In Solana or SeaLevel, the data is stored within the owner’s account associated with a program.
- In MoveVM, data is stored within the owner’s account.
Processing
How are transactions processed? Is it serial or parallel?
- In Celo and the EVM, currently occurs in a serial fashion, ie one after the other. There is higher reliability to this and there is ongoing research on parallel virtual machines as well.
- In Solana or SeaLevel, transactions need to contain all the accounts and programs being accessed in order to parallelize
- MoveVM is capable of parallelization at runtime in some chains.
Type Safety
How is type safety governed for different programs running on the virtual machine?
- In Celo and the EVM, contract types characterize type safety
- In Solana or SeaLevel, program structs characterize the type safety
- In MoveVM, it’s the module structs and generics.
While they are all fairly similar in their understanding there are nuances of benefits that one presents over the other.
Transactions
How safe, and unique are transactions? How is the transaction hash determined?
- In Celo and the EVM, the nonce is the sequentially incrementing counter which indicates the transaction number from the account that helps determine TxID
- In Solana, Transaction uniqueness + remembering transactions
- MoveVM is based on the concept of the sequence number which is similar to nonces for an account and indicates the number of transactions that have been submitted and committed on chain from that account. It is incremented every time a transaction sent from that account is executed or aborted and stored in the blockchain.
If you want to learn more about Celo, find more here.