Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Privacy-Cash/privacy-cash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Privacy Cash

Transfer SOL privately. Private SPL tokens transfer and private swap will soon follow.

The program is fully audited by Accretion, HashCloak, Zigtur and Kriko, and verified onchain (with hash c6f1e5336f2068dc1c1e1c64e92e3d8495b8df79f78011e2620af60aa43090c5).

Overview

This project implements a privacy protocol on Solana that allows users to:

  1. Shield SOL: Deposit SOL into a privacy pool, generating a commitment that is added to a Merkle tree.
  2. Withdraw SOL: Withdraw SOL from the privacy pool to any recipient address using zero-knowledge proofs.

The implementation uses zero-knowledge proofs to ensure that withdrawals cannot be linked to deposits, providing privacy for Solana transactions.

Project Structure

  • program/: Solana on-chain program (smart contract)
    • src/: Rust source code for the program
    • test/: Tests
    • Cargo.toml: Rust dependencies and configuration

Prerequisites

SDK

If you want to integrate Privacy Cash into your project, use the Privacy Cash SDK here.

Anchor Program

  1. Navigate to the program directory:

    cd anchor
  2. Build the program:

    anchor build
  3. Run unit test:

    cargo test
  4. Run integration test:

    npm run test:sol
    npm run test:spl
    npm run test:mint-checked
  5. Deploy the program to devnet:

    anchor build -- --features devnet
    rm target/deploy/zkcash-keypair.json
    cp zkcash-keypair.json target/deploy/zkcash-keypair.json
    anchor deploy --provider.cluster devnet
    
    or
    rm target
    anchor build --verifiable
    cp zkcash-keypair.json target/deploy/zkcash-keypair.json
    anchor deploy --verifiable --provider.cluster devnet
    
    or
    solana program deploy target/deploy/zkcash.so --program-id zkcash-keypair.json --upgrade-authority ./deploy-keypair.json
  6. Deploy to mainnet:

    anchor build --verifiable
    
    rm target/deploy/zkcash-keypair.json
    cp zkcash-keypair.json target/deploy/zkcash-keypair.json 
    
    anchor deploy --verifiable --provider.cluster mainnet
  7. Transfer the authority to multisig wallet

    solana program set-upgrade-authority 9fhQBbumKEFuXtMBDw8AaQyAjCorLGJQiS3skWZdQyQD \
    --new-upgrade-authority AWexibGxNFKTa1b5R5MN4PJr9HWnWRwf8EW9g8cLx3dM \
    --upgrade-authority deploy-keypair.json \
    --skip-new-upgrade-authority-signer-check \
    --url mainnet-beta