Portal Gate
  • 🟢Portal Gate
    • Why Portal Gate?
  • ⚙️System Overview
    • Users
    • Compliance Partners
      • ComplyCube
      • ShuftiPro
    • Stakers
    • Relayers
  • 🅿️Tokenomics
  • 📖How to PortalGate?
    • Step 1: KYC (Individuals)
    • Step 1: KYB (Institutions)
    • Step 2: Teleport
      • Relayer Withdrawal
      • Direct Withdrawal
    • Step 3: Compliance Tool (Optional)
    • Step 4: Refreshing Credentials (Prior to Expiration)
  • ⛓️Architecture
    • Keyring
      • ZK-Compliance Oracle
    • Privacy Solution
    • 📖Technical Docs
      • 🔏Portal Gate Privacy System
      • 🎰Zero-Knowledge Cryptography
      • 🗼Relayers
      • ⏩Trusted Forwarder
      • 👷Trusted Setup
      • 📖Contract Addresses
      • 👮‍♂️Audits
      • 🐛Bug Bounty
      • ⛏️AP Mining
  • 💻Social Media
  • 📸Media Kit
  • ❓FAQ
    • Protocol & Product
    • Tokens
    • Security & Privacy
    • Wallet Management & KYC/B
  • Website
Powered by GitBook
On this page
  1. Architecture

Privacy Solution

Portal Gate has been designed to fit the needs of the market to solve the most prominent privacy concerns of Web3 users.

Portal Gate achieves its privacy goals by breaking the on-chain connection between the receiver and their address. After receiving digital asset deposits, the smart contract will distribute them to several addresses for withdrawal. As a result, an observer cannot associate the withdrawal with the deposit and user privacy is protected. This solution is also proven to have worked over the last few years.

Portal Gate's privacy is guaranteed by Merkle Tree and ZKP (zk-SNARKs).

  • Instead of recording the token balance changes of an address, the state of nodes (i.e. Portal Gate users) are stored in a contract that holds a Merkle tree (a kind of list) of all Portal Gate deposit and withdrawal events. The Merkle tree stores all notes that have ever been generated and all the destroyed notes (nullifiers). Users receive a deposit note, which can be seen as a secret key, upon depositing into the privacy solution.

  • When users go to withdraw, the same deposit note is used as proof of ownership of the deposits. ZKP is introduced in this stage to verify that the deposit with the given nullifier and amount actually exists in the Merkle tree with the given root and that the one who generated the proof knew the secret deposit key and agreed with all the transaction parameters. Upon withdrawal, the protocol also utilises ZKP to transfer the funds to a new address, breaking the link between the address from which the funds are deposited and the new withdrawal address.

PreviousZK-Compliance OracleNextTechnical Docs

Last updated 1 year ago

⛓️