I used to think a good blockchain should do everything.
Smart contracts?
Sure.
Privacy?
Add it.
EVM?
Obviously.
Custom execution?
Why not.
The longer the feature list, the more impressive the project looked to me.
I've changed my mind about that.
Looking at Dusk, what caught my attention wasn't another feature.
It was the decision not to force everything through the same execution environment.
Dusk has DuskVM for Rust/WASM contracts that run directly on the L1, while DuskEVM provides Solidity and Vyper execution through an EVM-compatible environment. The two paths use DuskDS underneath for settlement and data availability. (docs.dusk.network)
At first I thought:
Why make things this complicated?
Wouldn't one environment be easier?
Then I started thinking about the opposite.
Maybe forcing every application into one environment is the complicated choice.
A developer building a normal Solidity application probably doesn't want to learn an entirely different stack.
Someone building a protocol that needs direct access to Dusk's native transaction models probably doesn't want EVM abstractions getting in the way either.
So Dusk basically gives them different doors.
That doesn't automatically make the architecture better.
More components also mean more things to maintain.
More interfaces.
More assumptions.
More ways for something to break.
But I like the reasoning behind it.
Instead of saying:
“Here is our one blockchain environment. Everyone use it.”
Dusk seems to be saying:
“Tell us what you're building first.”
That's a subtle difference.
And maybe I'm overthinking it.
But after seeing so many chains trying to become everything to everyone, I find Dusk's willingness to keep different execution paths surprisingly refreshing.
Sometimes flexibility isn't about adding more features.
Sometimes it's about knowing which features not to force together.
#dusk $DUSK @Dusk
Smart contracts?
Sure.
Privacy?
Add it.
EVM?
Obviously.
Custom execution?
Why not.
The longer the feature list, the more impressive the project looked to me.
I've changed my mind about that.
Looking at Dusk, what caught my attention wasn't another feature.
It was the decision not to force everything through the same execution environment.
Dusk has DuskVM for Rust/WASM contracts that run directly on the L1, while DuskEVM provides Solidity and Vyper execution through an EVM-compatible environment. The two paths use DuskDS underneath for settlement and data availability. (docs.dusk.network)
At first I thought:
Why make things this complicated?
Wouldn't one environment be easier?
Then I started thinking about the opposite.
Maybe forcing every application into one environment is the complicated choice.
A developer building a normal Solidity application probably doesn't want to learn an entirely different stack.
Someone building a protocol that needs direct access to Dusk's native transaction models probably doesn't want EVM abstractions getting in the way either.
So Dusk basically gives them different doors.
That doesn't automatically make the architecture better.
More components also mean more things to maintain.
More interfaces.
More assumptions.
More ways for something to break.
But I like the reasoning behind it.
Instead of saying:
“Here is our one blockchain environment. Everyone use it.”
Dusk seems to be saying:
“Tell us what you're building first.”
That's a subtle difference.
And maybe I'm overthinking it.
But after seeing so many chains trying to become everything to everyone, I find Dusk's willingness to keep different execution paths surprisingly refreshing.
Sometimes flexibility isn't about adding more features.
Sometimes it's about knowing which features not to force together.
#dusk $DUSK @Dusk
