Skip to main content

Using Privacy Wallets

This guide walks you through the complete workflow for using privacy wallets with verifiable credentials, from credential issuance to shielded transactions.

Prerequisites

Before you begin, ensure you have:

  • MetaMask browser extension installed (Chrome or Brave recommended on Mac)
  • Base network configured as your default network in MetaMask
  • Sufficient balances for testing: at least 5 USDC and 1 ETH
  • Access to the Ligetron platform: platform.ligetron.com
Network Setup

Confirm the Base network is active by checking for the Base logo next to your MetaMask profile picture.

Step 1: Generate Verifiable Credentials

Verifiable credentials are cryptographic proofs that demonstrate your eligibility to use the privacy pool without revealing your actual identity or personal information. They allow you to prove claims (such as being over 18 years old) while maintaining privacy.

Request Credentials

  1. Navigate to the credential request form
  2. Choose your Operator (illustrative only at demo stage)
  3. Complete all form fields with your information
    • For testing purposes, bank data can be mock/sample data
    • Important: Enter a Date of Birth that shows you are 18 years or older - this is the eligibility predicate enforced in the current demo
  4. Click Submit to send your credential request

Issue Credentials (Provider Action)

One user needs to approve the credential request:

  1. Navigate to the provider dashboard
  2. Locate your request in the Client Activity dashboard (appears at the top)
  3. Click the green Issue button next to the request details

Retrieve Your Credentials

After issuance, you will receive two emails at the address you provided:

  1. The first email confirms your credential request
  2. The second email contains your credential file as an attachment (.json_mdl.cbor extension)

Save the attachment from the second email to your local device - you'll need this file to perform shielded transactions.

Step 2: Shielded Transactions

Access the wallet interface: platform.ligetron.com/Verifiable_Credentials/wallet

Shielding Tokens

Shielding moves your tokens into the privacy pool, making subsequent transactions private. Once shielded, your token balance and transactions are hidden from public view.

  1. Select Shield from the Action Type dropdown
  2. Click Connect MetaMask under Wallet Connection
  3. Approve the connection in the MetaMask extension
  4. Select your token (USDC) and enter the quantity to shield
    • Amounts are entered in base units (smallest denomination)
    • Example: 100 = 100 × 10⁻⁶ = 0.0001 USDC
    • Recommended test amount: 100-200 base units
  5. Click Load Verifiable Credentials and select your saved credential file
  6. Click Shield Token

The browser console will display:

  • ZK proof generation progress (~4 seconds on modern hardware)
  • Data transmission to relayer
  • Confirmation when complete (15-45 seconds total)
Performance

Proof generation takes approximately 4 seconds on recent MacBooks. Total transaction time ranges from 15-45 seconds depending on network conditions.

Checking Your Balance

After shielding, verify your tokens are in the privacy pool:

  1. Select Balance from the Action Type dropdown
  2. Click Check Balance (your credentials are already loaded from the previous step)
  3. View your total shielded balance
  4. Expand the balance view to see individual UTXOs and their settlement status

Transferring Tokens

Private transfers require coordination between two parties. The receiver first generates an invoice, then the sender uses that invoice to complete the transfer.

Receiver: Generate Invoice

  1. Select Generate Invoice from the Action Type dropdown
  2. Choose your token (USDC) and specify the amount
  3. Click Generate Invoice
  4. Copy the Note Public Key (npk) using the clipboard icon

Sender: Execute Transfer

  1. Select Transfer from the Action Type dropdown
  2. Keep USDC selected in the Token dropdown
  3. Enter the transfer amount (must match receiver's invoice exactly)
  4. Paste the receiver's Note Public Key in the Receiver's NPK field
  5. Click Transfer Token

Verify Transfer

Both parties should check their balances after the transfer completes to confirm success:

  1. Select Balance from the Action Type dropdown
  2. Load the Verifiable Credential for your account
  3. Click Check Balance to view your updated balance

Important Notes

Sequential Operations

Important: Complete each action fully before starting the next one. If using multiple devices or browser tabs with the same account, perform operations sequentially to prevent transaction conflicts and ensure proper UTXO management.

Known UI Behavior

In some cases, entered amounts may reset when switching between form fields. If this occurs:

  • Re-enter the correct amount before proceeding
  • This behavior typically happens at most once per session

UTXO Requirements

The platform uses a UTXO (Unspent Transaction Output) model similar to Bitcoin. For transfers:

  • Each transfer must be funded by a single UTXO
  • The UTXO must have sufficient balance to cover the transfer amount plus change
  • Example: To transfer 30 units, you need a UTXO with at least 31 units
  • Check your available UTXOs in the Balance view
  • Only UTXOs with "Settled" status can be used for transfers
Coming Soon

UTXO merging functionality is in development to simplify balance management.

Smart Contract Verification

MetaMask may display a warning that the smart contract is unverified on Base. This is expected and can be safely acknowledged.

Troubleshooting

Credential Issues

Problem: Unable to complete shielding or transfers with credentials

Solutions:

  • Verify your Date of Birth in the credential shows you are 18 years or older
  • Ensure the .json_mdl.cbor file was properly downloaded and saved
  • Confirm credentials were successfully issued by checking the provider dashboard
  • Try re-uploading the credential file

Transaction Failures

Problem: Shield or transfer operations fail to complete

Solutions:

  • Verify you have a settled UTXO with sufficient balance for the transaction
  • For transfers, confirm amounts match exactly between sender and receiver invoices
  • Check you have adequate ETH balance for gas fees (at least 0.1 ETH recommended)
  • Confirm Base network is selected as the active network in MetaMask
  • Wait for previous transactions to complete before initiating new ones

Browser Compatibility

Problem: Interface not loading or behaving unexpectedly

Solutions:

  • Use Chrome or Brave browsers on Mac for optimal performance
  • Update MetaMask extension to the latest version
  • Clear browser cache and reload the page
  • Disable other browser extensions that might interfere with MetaMask
  • Check the browser console (F12) for error messages

Next Steps

  • Credential management and lifecycle
  • Advanced transaction features (unshielding, multi-party transfers)
  • Privacy best practices for shielded transactions
  • Understanding zero-knowledge proofs in the platform