More on blended execution vs. multiVM
One question we're often asked about blended execution is how it differs from multiVM.
The fundamental difference is that blended execution enables programs from different VM targets to use the same state trie. AKA all apps exist in one state machine.
What does this mean?
If apps exist in one state machine, they are atomically composable by default.
Let's use @fluentxyz as an example - we're focused on blending EVM / Wasm / SVM. Because programs from each of these environments exist in the same state machine, EVM programs written in Solidity can call Wasm programs written in Rust (and vice versa). The same will hold true for EVM <> SVM programs and Wasm <> SVM programs once SVM is enabled.
Why does this matter?
It's a much more expressive environment for devs. A popular SVM lending app can build on a popular EVM DEX. You can differentiate your Solidity app using Rust libraries. Blended execution enables composable experiences that weren't possible before.
From what I've seen of multiVM implementations, they do not share one state machine. MultiVM maintains multiple independent state machines and tries to make them as interoperable as possible.
Depending on the multiVM approach, this can be more or less clunky. Worst case it feels like bridging between two independent networks where users must switch wallets, gas tokens, etc.
We believe this is not great for dev or user experience and that blended execution is a much cleaner design.