DuskVM gives each contract a 64 KB argument buffer.
That is a much more revealing builder detail than “supports Rust and WASM.”
I initially read native WASM execution as a fairly open door. Looking closer, DuskVM has a specific boundary that every contract has to respect.
The contract must expose an argbuf, which is where call data is placed. Exposed functions also follow DuskVM’s fn foo(u32) -> u32 convention, using the incoming value to describe how many bytes should be read and the return value to describe the output written back.
And DuskVM does not make the contract’s input correct for it.
The smart contract remains responsible for validating what enters that buffer and processing it safely.
That is the pressure test I would put on builders choosing the native path.
Getting Rust to compile into WASM proves very little by itself. The contract still has to behave correctly at DuskVM’s ABI boundary every time external data crosses it.
Native execution gives builders direct access to Dusk L1 capabilities.
But the 64 KB buffer is where the abstract architecture becomes very ordinary engineering: bytes come in, and your contract has to know exactly what to do with them.
@Dusk_Foundation $DUSK #dusk
That is a much more revealing builder detail than “supports Rust and WASM.”
I initially read native WASM execution as a fairly open door. Looking closer, DuskVM has a specific boundary that every contract has to respect.
The contract must expose an argbuf, which is where call data is placed. Exposed functions also follow DuskVM’s fn foo(u32) -> u32 convention, using the incoming value to describe how many bytes should be read and the return value to describe the output written back.
And DuskVM does not make the contract’s input correct for it.
The smart contract remains responsible for validating what enters that buffer and processing it safely.
That is the pressure test I would put on builders choosing the native path.
Getting Rust to compile into WASM proves very little by itself. The contract still has to behave correctly at DuskVM’s ABI boundary every time external data crosses it.
Native execution gives builders direct access to Dusk L1 capabilities.
But the 64 KB buffer is where the abstract architecture becomes very ordinary engineering: bytes come in, and your contract has to know exactly what to do with them.
@Dusk_Foundation $DUSK #dusk
