Sending
Shielded transfers send tokens privately from your shielded balance to another Nullmask user.
Requirements
The recipient must have a registered receiving key on Nullmask
You must have sufficient shielded balance (amount + fee)
Steps
Navigate to the Send screen
Select the token
Enter the amount
Enter or paste the recipient's Ethereum address
Confirm the transaction in your wallet
What Happens Behind the Scenes
The wallet signs a standard EIP-1559 transfer (e.g., "Send 1 ETH to 0xAlice")
The RPC proxy intercepts the transaction
The proxy checks that the recipient has a registered receiving key
The proxy selects funding notes from your shielded balance
A ZK proof is generated proving:
You authorized this transfer (ECDSA signature)
You have sufficient funds (note ownership + Merkle membership)
The output note is correctly encrypted for the recipient
The relayer submits the proof to the contract
The contract verifies the proof, spends your notes, and creates new notes
Output Notes
Each transfer creates 3 notes:
Output note
Recipient
The transferred amount
Change note
You
Leftover action-asset balance
Fee change note
You
Leftover fee-asset balance
Fee Estimation
Before confirming, the app estimates the fee using nullmask_estimateFee. The fee covers the relayer's gas costs for submitting the transaction on-chain.
Fees can be paid in ETH or the same token being transferred.
Privacy Guarantees
The on-chain transaction reveals nothing about sender, recipient, or amount
Only encrypted note ciphertexts are visible on-chain
The relayer sees only the opaque proof and public inputs
Last updated