Skip to content

Primitives

RISC0 primitives

Since MultiVM is built on top of RISC0, it is recommended to familiarize with their terminology. You can find it here.

Settlement / data availability layer

A settlement layer refers to a particular component within MultiVM system that facilitates the finalization and settlement of transactions. There are some limitations on choosing a settlement layer in our system, but the best candidate is Ethereum blockchain, as it is the most secure. The settlement layer will serve as the data availability layer, as separating them into different parts will only result in data duplication without any benefit.

Cross-VM calls

Cross-VM calls refer to calls between contracts implemented under different virtual machines. Cross-contract calls are a subset of cross-VM calls and are not separately discussed in this wiki.

Env

Each contract call (or cross-VM call) is executed within a unique environment that is created before each call and deleted after its completion. This environment is responsible for the exchange of data between the host and the guest. This object helps to accomplish two main tasks:

  1. execution of cross-VM calls;
  2. encapsulation of operations related to storage work.

All contracts, regardless of VM, share a common storage. Smart contracts (guest programs) access the storage using the GET_STORAGE syscall through a request to the host. Data is written using the SET_STORAGE syscall.

Meta contract

A system contract that determines on which virtual machine the transaction should be executed. It verifies the validity of proofs, verifies the signature of transactions, etc.

Accounts

Accounts are created through a separate transaction using the system Meta contract. Additionally, when creating an account, a human-readable name must be specified. Access keys will be used to manage the account. To ensure compatibility with the Ethereum blockchain, a mapping of human-readable accounts to public keys and vice versa will be stored in storage.

MultiVM token

The native token of the MultiVM environment, which is used in its standard form for paying fees, maintaining the functionality of the entire blockchain and etc.

Transactions

A transaction in the MultiVM environment is no different from transactions in other blockchains, except that its execution result will be proven using ZK proof.

Blocks

Similarly to transactions, the main functions of a block in the MultiVM environment are no different from blocks in other blockchains, except that in addition to creating ZK proofs for each transaction, a final ZK proof for the entire block will also be generated in case of ZK rollup. This final proof will be recorded on the settlement layer.

Smart-contracts

Smart contracts are guest programs whose execution is proven using ZK technology. The implementation of smart contracts depends on the VMs integrated into the MultiVM environment. At the beginning, there will be three VMs: EVM, MultiVM, and SolanaVM. The supported languages are solidity and rust. It is possible to run Ethereum contracts without any modification or recompilation. To run Solana contracts, the contract needs to be recompiled into ELF format, but the code does not need to be changed.