Differences between EVM and the VM that Concordium uses

Hey Concordium!

Was looking into some threads and wondered what the differences in VM beteen the EVM and the VM which Concordium uses, are. So here are some questions, which I hope you guys can answer.

  1. What are the most distinguished changes in VMs which are an advantage for Concordium?
  2. What are you most excited about due to these changes in VM?
  3. Why was chosen to not go for EVM?
  4. Are you working on an EVM-compatible unit within Concordium? If not, why not?

I was inspired in making this topic due to a thread on the FuelVM and them comparing it to the EVM (link here if you need inspiration: https://twitter.com/IAmNickDodson/status/1542516357886988288?s=20&t=O7l_NFt2Lv0Sgx26Us9wow ). Maybe something for the BD-department to figure out and work out, think a lot of people would be interested in reading a thorough readup on the differences and why certain design-aspects were chosen.



Concordium uses a standard Wasm (Webassembly) runtime for its smart contract execution.
We went with this choice so that we fit into the broad ecosystem of Wasm targetting languages, which includes Rust, C++, C, and offshoots of Javascript.

Wasm is a precisely specified foundation that fits our use-case exaclty. It is by design sandboxed and with a precise and simple semantics that makes it easy to do resource accounting. While we are currently using our own interpreter for simplicity, we have the option of changing that to a high-quality and high-performance implementation if that becomes necessary. Wasm is gaining in adoption and with it more high-quality and fast implementations become available.

EVM is ultimately very tied to the Ethereum way of doing things, and for a foundational project such as Concordium that is not necessarily good in the long-term since it limits options. The approach of Concordium is to be grounded in science and to conform to standards as much as possible. While EVM has been successful, there are clearly many things that it has that are dubious. The only reason for EVM would be “because Ethereum uses it”, not for any merits of EVM as such.

We are looking into ways of making it easier for Ethereum developers to work on Concordium. There are several aspects to this, from improved onboarding documentation, better tools, adding features to our own smart contracts. We are also looking at supporting EVM more directly if it makes sense, perhaps on a side-chain.