Wallet SDK v1.0.0 release notes
- Version: v1.0.0
- Date: 28 January, 2026
- Environment: preprod, preview
High-level summaryβ
This is the initial stable release of the Midnight Wallet SDK, a TypeScript wallet implementation for the Midnight Network. It provides complete support for Midnight's three-token system: unshielded tokens (including NIGHT), shielded tokens with zero-knowledge proofs, and DUST for fee payments.
Audienceβ
This release is relevant for developers who:
- Implement wallet functionality on the Midnight Network
- Integrate Midnight token transfers into their DApps
- Need to manage shielded (private) and unshielded token balances
- Implement atomic swaps between parties
What changed (Summary of updates)β
- Full support for unshielded tokens (including NIGHT)
- Full support for shielded tokens with zero-knowledge proofs
- Dust management for transaction fee payments
- HD wallet key derivation
- Bech32m address encoding and decoding
- Transaction balancing across all token types
- Atomic swap support
New featuresβ
Below is a detailed breakdown of the new features added in this release.
Wallet facadeβ
Unified API that enables shielded, unshielded, and dust wallet operations through a single interface. It handles transaction balancing, transfers, and swaps. This is the main entry point for most developers, abstracting the complexity of managing three separate wallet types.
Unshielded walletβ
Manages NIGHT and other unshielded tokens using a UTxO model with Schnorr signatures. Tracks UTxOs, creates offers for swaps, and provides inputs/outputs for transaction balancing. Use this for transparent token operations.
Shielded walletβ
Manages privacy-preserving shielded tokens using Zswap zero-knowledge proofs. Handles ZK proof generation, coin commitment tracking, and encrypted output decryption. Token values and addresses are hidden from observers while maintaining verifiability.
DUST walletβ
Manages Dust, the fee payment resource generated from NIGHT holdings. Handles Dust address designation, balance tracking, and automatic fee payment during transaction balancing. Required for submitting any transaction on the network.
HD walletβ
Derives cryptographic keys from a seed following BIP-32/BIP-44/CIP-1852 standards. Generates keys for unshielded (secp256k1), shielded (JubJub curve), and Dust (BLS12-381 curve) operations from a single mnemonic or seed.
Address formatβ
Encodes and decodes Midnight addresses using Bech32m format. Supports three address types with network identifiers:
mn_addr- Unshielded payment addressesmn_shield-addr- Shielded payment addressesmn_dust-addr- Dust addresses for fee generation
Transaction balancingβ
Automatically provides inputs to cover outputs, creates change outputs for surplus, and adds Dust spends for fees. Works across all token types in a single transaction. This is the core operation that enables transfers, contract interactions, and swaps.
Atomic swapsβ
Enables trustless token exchanges between parties using Midnight's offer system. Offers can be merged into a single transaction that hides the exchanged amounts from observers. Currently supports shielded-only or unshielded-only swaps.
New features requiring configuration updatesβ
The following updates are required to configure the wallet to use the new features.
Prover service connectionβ
Zero-knowledge proofs for shielded transactions and Dust spends require an external prover service. The wallet cannot submit shielded transactions without this configuration.
Required updates:
- Configure prove server endpoint URL.
- Ensure the prove server is running and accessible via the configured endpoint URL.
Node endpointβ
The wallet requires a connection to a Midnight Node to submit transactions and query blockchain state.
Required updates:
- Configure Midnight Node WebSocket endpoint.
- Ensure the Midnight Node is running and accessible.
Indexer endpointβ
The wallet requires a connection to the indexer to synchronize UTxOs, transaction history, and state data.
Required updates:
- Configure indexer GraphQL endpoint.
- Ensure the indexer is running and accessible.
Known issuesβ
This section lists the known issues with this release of the wallet SDK.
Pending coins not cleared on transaction failureβ
When transaction submission or proof generation fails, coins marked as pending are not automatically released. This can cause the wallet to report lower available balances until the pending state is manually cleared or the wallet is restarted.
Workaround: Restart the wallet or re-sync to clear the stale pending state.
Transaction history not implemented for shielded and dust walletsβ
The shielded and dust wallets do not currently track transaction history. While the unshielded wallet maintains transaction records, the shielded and dust wallets only track coin balances without historical transaction data.
Packagesβ
| Package | Version | Description |
|---|---|---|
@midnight-ntwrk/wallet-sdk-facade | 1.0.0 | Unified API that enables shielded, unshielded, and dust wallet operations through a single interface. Handles transaction balancing, transfers, and swaps. |
@midnight-ntwrk/wallet-sdk-unshielded-wallet | 1.0.0 | Manages NIGHT and other unshielded tokens. Tracks UTxOs, creates offers for swaps, and provides inputs/outputs for transaction balancing. |
@midnight-ntwrk/wallet-sdk-shielded-wallet | 1.0.0 | Manages privacy-preserving shielded tokens. Handles ZK proof generation, coin commitment tracking, and encrypted output decryption. |
@midnight-ntwrk/wallet-sdk-dust-wallet | 1.0.0 | Manages Dust for transaction fees. Handles Dust designation, balance tracking, and automatic fee payment during transaction balancing. |
@midnight-ntwrk/wallet-sdk-hd | 3.0.0 | Derives cryptographic keys from a seed following BIP-32/BIP-44/CIP-1852. Generates keys for unshielded (secp256k1), shielded (JubJub), and Dust (BLS12-381) operations. |
@midnight-ntwrk/wallet-sdk-address-format | 3.0.0 | Encodes and decodes Midnight addresses using Bech32m format. Supports payment addresses, shielded addresses, and Dust addresses with network identifiers. |
@midnight-ntwrk/wallet-sdk-node-client | 1.0.0 | Communicates with Midnight Node. Submits transactions and queries blockchain state. |
@midnight-ntwrk/wallet-sdk-indexer-client | 1.0.0 | Queries the Midnight indexer via GraphQL over websocket. Retrieves UTxOs, events and block information. |
@midnight-ntwrk/wallet-sdk-prover-client | 1.0.0 | Interfaces with the prover service to generate zero-knowledge proofs for shielded transactions and Dust spends. |
@midnight-ntwrk/wallet-sdk-runtime | 1.0.0 | Organizes wallet lifecycle and state management. Supports version migration for protocol upgrades. |
@midnight-ntwrk/wallet-sdk-capabilities | 3.0.0 | Shared wallet features including coin selection algorithms and transaction balancing logic. |
@midnight-ntwrk/wallet-sdk-abstractions | 1.0.0 | Core interfaces and domain types used across all packages. |
@midnight-ntwrk/wallet-sdk-utilities | 1.0.0 | Common utilities for serialization, networking, and testing. |
Links and referencesβ
- SDK documentation: Wallet developer guide
- Examples: SDK example snippets
- GitHub repository: midnightntwrk/midnight-wallet
- DApp Connector API: midnightntwrk/midnight-dapp-connector-api