What if making blockchain infrastructure easier to use sometimes means giving developers more than one way to build on it?

I noticed this while exploring DUSK, and its split between DuskVM and DuskEVM made me pause. I usually think of a blockchain as having one main execution environment, with everything else treated as tooling around it.

DUSK takes a different route. DuskEVM provides Solidity and Vyper execution with familiar Ethereum tooling, while DuskVM runs Rust/WASM contracts directly on the Dusk L1. The two paths settle through the same underlying network, but they serve different development needs.

At first, this looked like a technical convenience. Then I started thinking about the problem underneath it.

Developers already have habits, libraries, wallets, and codebases they understand. Asking every financial application to abandon those tools just to access a different settlement environment creates unnecessary friction. At the same time, some applications may need direct access to native assets, privacy features, or lower-level protocol capabilities that an EVM environment does not naturally provide.

That trade-off feels surprisingly relevant to infrastructure design.

While researching DUSK, I found myself wondering whether interoperability is sometimes discussed too narrowly. Perhaps compatibility is not only about connecting different chains; it can also mean allowing different development models to coexist without forcing every application into one technical path.

The interesting question for me is where abstraction should end. Too little abstraction creates friction, while too much can hide capabilities developers eventually need.

DUSK makes that boundary worth examining from a builder’s perspective rather than just a market one.
#dusk $DUSK @Dusk