Skip to content

dusk-network/wallet

Dusk Wallet

A non-custodial wallet for Dusk. Chrome and Firefox extension builds from one codebase.

Your keys. Your DUSK. No middleman.

CI   Release   Coverage   GitHub Repo stars   Join Discord   X (formerly Twitter) Follow   Read the docs

Dusk Wallet extension design

Features

🔐 Self-custody — Your mnemonic never leaves your device. Encrypted at rest.

Public & Shielded — Send from your public account or shield funds for privacy.

🌐 dApp Ready — Connect to any Dusk dApp through event-based provider discovery.

🔄 Multi-network — Switch between mainnet, testnet, devnet, or custom nodes.

🧩 Shared runtime — Extension targets share the same wallet engine and UI shell.

Install

Chrome Extension

From a fresh checkout:

npm install
npm run build:chrome

Then load dist/ as an unpacked extension in chrome://extensions (Developer mode).

Firefox Extension

From a fresh checkout:

npm install
npm run build:firefox

Then load dist-firefox/ as a temporary add-on in about:debugging.

For dApp Developers

The extension announces an EIP-1193-style provider through Dusk discovery events. Dusk isn't EVM, but the provider patterns are familiar.

const providers = [];

window.addEventListener("dusk:announceProvider", (event) => {
  providers.push(event.detail);
});

window.dispatchEvent(new Event("dusk:requestProvider"));

const dusk = providers[0]?.provider;
const [account] = await dusk.request({ method: "dusk_requestAccounts" });

dusk.on("accountsChanged", console.log);
dusk.on("chainChanged", console.log);

Full API reference: docs/provider-api.md

Architecture

src/
├── background/      # Extension service worker
├── ui/              # Popup, full view, notifications
├── shared/          # Wallet logic (works everywhere)
├── platform/        # Platform abstraction (extension vs tauri)
└── wallet/          # Engine interface

The wallet engine runs in an offscreen document for extension builds. The shared runtime is structured so other hosts can reuse the same cryptographic core.

Additional documentation:

Development

npm run build:extension   # Build extension → dist/
npm run build:firefox     # Build Firefox extension → dist-firefox/

# Local Rusk node (Docker)
npm run rusk:up
npm run rusk:wait

# UI component workbench
npm run storybook

# E2E (Playwright + Docker Rusk)
npm run e2e:rusk

Security

  • Mnemonic encrypted with user password (PBKDF2 + AES-GCM)
  • No analytics, no tracking, no remote calls except to your chosen node

License

MIT

About

Multi-platform wallet for Dusk: Browser extension, desktop and mobile

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors