Private Assets Deposit

What is a Private Deposit in Mystiko Web Wallet?

Private Deposit is an operation that converts your public assets to private assets. Private Deposit takes the off-chain generated zero-knowledge commitment as input, and constructs a Merkle tree on-chain. The metadata of the Private Deposit, which is encrypted on-chain, includes randomly-generated secrets. Such randomly-generated secrets will be used to generate zero knowledge proof based on the user's local secret keys, when the user withdraws the assets.
❗️Note: Do NOT send your assets directly into Mystiko contracts via normal token transfer. This will cause asset loss. A valid Private Deposit can only be created via Mystiko web wallet, and be submitted to Mystiko contract's 'deposit' method along with your assets and commitments.

Private Deposit Tutorial

In this chapter, we will demonstrate how to privately deposit 100 USDT from MetaMask public address to Mystiko shielded address on Ethereum mainnet. Private deposit on BNB Chain follows the same procedures.
  • Switch the metamask network to the source chain network (in this demo, choose Ethereum network). Make sure you have enough gas tokens for confirmation and rollup (in this demo, ETH and USDT).
  • Go to Mystiko web wallet ‘transaction’ page, and fill in asset deposit info:
    • Source chain and destination chain (Ethereum in this demo);
    • Type of tokens to be deposited (we chose USDT out of the three options - USDC/USDT/ETH);
    • Mystiko private accounts address to store the deposit- users can either choose their other existing mystiko accounts in their wallet if users would like to separate their private assets in different accounts; or manually type in other users’ Mystiko account address (we chose “Account 1” for private assets deposit in this demo);
    • The amount of assets to be shielded - users could choose the suggested amount in Mystiko or type in a customized amount. Please beware of the minimal and maximum amount for each transaction. (we chose to deposit 100 USDT in this demo);
    • Rollup Fee - rollup fee is deducted from the tokens to be shielded, i.e. users shall pay a certain amount of USDT, instead of ETH, to miners if users chose to privately deposit USDT. Users could add rollup gas to speed up the rollup process. (we chose to pay 15 USDT as a rollup gas fee in this demo)
  • Confirm deposit details in the pop-up, and click “Deposit”.
  • Grant access to Mystiko Wallet and pay transaction gas fee in Metamask. Click the metamask logo in the browsers if the second confirmation didn’t show up. Notes: Processing time depends on speed and stability of the source chain network.
  • Deposit status and history could be also found in “Deposit history”. Click deposit id for more deposit details.
  • Once the deposit succeeded, in the recipient account ( “Account 1” in this demo), a new pending deposit will immediately be displayed in the recipient account balance, and the status of this transaction will be ‘queued’ in the deposit history. ( “100 Pending” USDT means 100 shielded USDT is about to be rolled up to the receiver account; “0 Available” means there are no available shielded assets to be spent in this account at the moment ).
    • Asset status will be automatically synced every 10 mins - if users would like to accelerate data synchronization, users could manually update the latest data synchronization status on each chain by clicking “🔁”. Note: refreshing “🔁” won’t accelerate the asset confirmation, it only accelerates data synchronization and balance display updates.
  • Once the rollup process is completed, the status of deposited assets will shift from “pending” to “available”, and the account balance will be updated in the asset page. The status of this transaction will be ‘included’ in the deposit history. (In this demo, after a successful deposit, 100 USDT will be added to the pending balance while in the progress of rollup. When the deposit rollup is completed, the account balance shifts from “100 pending + 0 available” to “0 pending + 100 available”)