Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

PC-Token: Overview

Pre-Alpha Disclaimer: This is an early pre-alpha release for exploring the SDK and starting development only. There is no real encryption — all data is completely public and stored as plaintext on-chain. Do not submit any sensitive or real data. Encryption keys and the trust model are not final; do not rely on any encryption guarantees or key material until mainnet. All interfaces, APIs, and data formats are subject to change without notice. The Solana program and all on-chain data will be wiped periodically and everything will be deleted when we transition to Encrypt Alpha 1. This software is provided “as is” without warranty of any kind; use is entirely at your own risk and dWallet Labs assumes no liability for any damages arising from its use.

What It Is

PC-Token (Confidential Performant Token) is a confidential token standard built on Encrypt FHE, modeled after Anza’s P-Token. It replaces all plaintext balances and amounts with FHE-encrypted ciphertexts — same API surface as P-Token, full confidentiality.

What’s Confidential

  • Balances — always encrypted. Nobody can see how much anyone holds.
  • Transfer amounts — client-encrypted via gRPC. Never plaintext on-chain.
  • Allowances — encrypted delegation for composability.
  • LP positions — when used with PC-Swap, LP ownership is encrypted.

The only plaintext that ever appears is the withdrawal amount during unwrap, on a temporary receipt account that gets closed immediately.

Architecture

Public Domain (SPL Token)         Confidential Domain (PC-Token)
┌─────────────────────┐           ┌──────────────────────────┐
│ USDC, SOL, etc.     │           │ pcUSDC, pcSOL, etc.      │
│ Balances visible    │── Wrap ──>│ Balances encrypted       │
│ Transfers visible   │<─ Unwrap ─│ Transfers encrypted      │
└─────────────────────┘           │ Composable with DeFi     │
                                  └──────────────────────────┘

Instructions

DiscInstructionDescription
0InitializeMintCreate a new token mint
1InitializeAccountCreate token account with encrypted zero balance
3TransferEncrypted owner transfer
4ApproveApprove delegate with encrypted allowance
5RevokeRevoke delegation
10FreezeAccountFreeze authority freezes account
11ThawAccountFreeze authority thaws account
20TransferFromDelegated transfer (composability entry point)
23InitializeVaultCreate vault linking PC-Token mint to SPL mint
30WrapDeposit SPL → mint pcTokens (vault-backed)
31UnwrapBurnBurn pcTokens, create withdrawal receipt
32UnwrapDecryptDecrypt burned amount
33UnwrapCompleteVerify + release SPL, close receipt

Vault-Backed Only

There is no standalone MintTo or Burn. Tokens can only enter through Wrap (backed 1:1 by SPL tokens in the vault) and exit through the 3-step unwrap. Every pcToken is backed.

Composability

Other programs CPI into PC-Token via Approve + TransferFrom. The delegate (another program’s PDA) can move tokens on behalf of the user, with encrypted allowance enforcement:

#![allow(unused)]
fn main() {
// DeFi program (e.g., AMM, lending, dark pool)
fn execute_trade(accounts) {
    // CPI into PC-Token — move pcUSDC from user to pool
    pc_token::transfer_from(user_account, pool_account, amount_ct, delegate_pda);
}
}

The DeFi program never sees plaintext amounts. It just passes encrypted ciphertexts through CPI.