Comment on page
For the time being, the Nocturne UI only supports MetaMask.
A canonical Nocturne address is a public Nocturne address that can be used to generate more stealth addresses belonging to the owner of the corresponding Nocturne spending key. See Keys and Stealth Addresses
Registering your canonical address allows you to seamlessly and anonymously receive funds into Nocturne, even when the sender is public. It's an important part of making interactions between your private and public accounts as seamless as possible.
A Snap is an application embedded within MetaMask that extends your wallet with additional functionality.
When you connect your MetaMask wallet to the Nocturne UI, it will ask you to install the snap if you haven't already. You do not need to install the snap manually.
When you first install the MetaMask Snap, it will ask you to sign the fixed message shown below. It will then generate your Nocturne Keys from this signature. Once your keys are generated, they will be stored exclusively in the Snap.
Make note of the currently connected Ethereum account in the signature confirmation window—this is the Ethereum account you will use if you ever delete the Snap and need to recover your Nocturne account.
Because your key is generated from a signature using an Ethereum account, as long as you have access to that same Ethereum account, you can re-generate your Nocturne spending key simply by re-signing the original fixed message you signed to generate your spending key the first time.
As a gas optimization, the Nocturne protocol updates its internal Merkle tree in batches. This can take anywhere from a few minutes to a couple hours depending on current traffic.
While this might be annoying, this is the difference between a deposit costing ~240K gas and ~1M gas. At the time of writing, this saves you around $100 in gas fees.
Additionally, users will want to wait before spending their private funds after depositing. More time between deposit and spending improves privacy guarantees.
While normal MetaMask allows a user to generate many public Ethereum addresses, the Nocturne MetaMask Snap stores exactly one spending key and thus provides you with a single Nocturne account. Your Nocturne account automatically generates one-time stealth addresses within Nocturne for privacy. Because of this, there is no need to use multiple Nocturne accounts.
Why do I need to wait several hours for my deposit to complete?
There are no fees taken on deposits. Under the hood there are two steps to depositing within Nocturne—the user initiating the deposit and the deposit being completing after it has gone through the filtering step (see Compliance). This additional "fee" is not a "deposit fee" but rather compensation for the gas cost of the second completion transaction performed on the user's behalf.
To save on gas, the Bundler attempts to submit operations in batches, waiting up to 1 hour depending on current traffic. Note that this delay is subject to change in the future.
While this might be a bit annoying, the gas savings can be significant (upwards of $20), and waiting between operations is good for privacy.
To compensate the bundler for relaying the transaction and batching it for gas savings, gas is paid out of your private balance within Nocturne, not your public balance. This prevents you from linking your addresses by having to top them up with gas. When you queue up an operation, the frontend will estimate how much it costs and add a private transfer to the bundler. When the operation is executed, any excess will be refunded back to your private balance within Nocturne.
This means that you must have enough WETH deposited within Nocturne to pay for the operation. Depending on current gas prices, the fee can be upwards of 0.02WETH. Therefore, we strongly recommend depositing in increments of at least 0.2 ETH.