Skip to content

Build on Dusk

Dusk provides two smart-contract paths:

  • DuskVM executes Rust/WASM contracts directly on the Dusk L1.
  • DuskEVM provides Solidity and Vyper execution with settlement and data availability through DuskDS.

As a builder, choose the path based on what your product needs and which tooling model you want:

  • use DuskEVM when your application benefits from Solidity, EVM tooling, existing wallets, and Ethereum-compatible infrastructure.
  • use DuskVM when your application should execute directly on the Dusk L1 using Rust/WASM, protocol contracts, Dusk transaction models, privacy, or zero-knowledge capabilities.
  • EVM contract or dApp: use standard EVM wallets, JSON-RPC, and tools such as Foundry, Hardhat, viem, or ethers. The wallet signs; DuskEVM exposes Ethereum-compatible interfaces.
  • Browser dApp on the Dusk L1: use Dusk Connect. The wallet extension owns the keys and asks the user to approve profile access and transactions.
  • JavaScript client that talks directly to Rusk: use W3sper. Your application owns node connectivity and, for signing, profile storage and synchronized wallet state.
  • Infrastructure, indexer, exchange, or non-JavaScript client: use the Rusk HTTP API and RUES. Your integration handles raw request encoding, version headers, subscriptions, and transaction state.

For most browser applications on the Dusk L1, use Dusk Connect. Use W3sper directly when there is no injected wallet or when you need lower-level node and wallet primitives.

Use DuskEVM when your application is designed around the EVM ecosystem:

  • tokenized asset applications
  • DeFi protocols, AMMs, and lending
  • applications that expect an EVM environment: tooling, libraries, wallets, and infrastructure

You get:

  • Familiar languages and tooling (Solidity/Vyper, Hardhat/Foundry, etc.)
  • DUSK as the native gas token
  • Settlement and data availability from DuskDS
  • A route toward confidential flows through Hedger where your application needs privacy

See: DuskEVM quickstart.

DuskVM smart contracts are general-purpose contracts written in Rust and compiled to WASM. They execute directly on the Dusk L1.

Use this path when you need:

  • protocol-level logic that executes directly on the Dusk L1
  • direct interaction with Dusk transaction models
  • specialized contracts that need Rust/WASM execution
  • privacy or zero-knowledge capabilities that should live close to the base protocol
  • application logic that benefits from Dusk L1 assets, transaction models, or execution primitives

Typical examples include:

  • genesis or protocol contracts such as transfers and staking
  • low-level infrastructure contracts
  • applications that need direct access to DuskVM and L1 features

Compared with DuskEVM, DuskVM contracts require more familiarity with Dusk-specific tooling and architecture. The tradeoff is direct L1 execution rather than compatibility with the broader EVM ecosystem.

If that’s you, start with the DuskVM contract overview, then build the example in the quickstart.

You can explore existing contracts and examples in the Dusk repos: