Program Information
- Network: Solana Mainnet Beta
- Program ID:
9fhQBbumKEFuXtMBDw8AaQyAjCorLGJQiS3skWZdQyQD - Upgrade Authority:
AWexibGxNFKTa1b5R5MN4PJr9HWnWRwf8EW9g8cLx3dM(Squad Multisig) - Verification Hash:
c6f1e5336f2068dc1c1e1c64e92e3d8495b8df79f78011e2620af60aa43090c5
Pre-Deployment Checklist
Complete Devnet Testing
- All unit tests pass
- Integration tests successful
- User acceptance testing complete
Security Audit
- Code has been audited by reputable security firms
- All critical issues resolved
- Audit reports reviewed
Prepare Keypairs
- Secure the program keypair (
zkcash-keypair.json) - Secure the deployment keypair with sufficient SOL
- Set up multisig wallet for upgrade authority
Build for Mainnet
Build Verifiable Program
Always use verifiable builds for mainnet:This ensures the build can be reproduced and verified by anyone.
Deploy to Mainnet
Deploy Command
- Deploys the program to mainnet
- Sets your
deploy-keypair.jsonas the initial upgrade authority - Creates the program account at the address specified in
zkcash-keypair.json
Initialize Mainnet Program
Initialize SPL Token Trees (via Squad)
For mainnet, program initialization is done through Squad multisig for security.Generate Squad Transaction
- USDT Mint:
Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB - Max Deposit: 200,000 USDT
- Squad Vault:
AWexibGxNFKTa1b5R5MN4PJr9HWnWRwf8EW9g8cLx3dM
Submit to Squad Multisig
Transfer Upgrade Authority
After successful deployment, transfer upgrade authority to the Squad multisig:- Sets the Squad vault as the new upgrade authority
- Removes single-key control over program upgrades
- Requires multisig approval for future updates
Address Lookup Tables (ALT)
For transaction size optimization, Privacy Cash uses Address Lookup Tables.Create ALT
- Creates a new Address Lookup Table
- Adds all frequently-used protocol addresses
- Includes PDAs for SOL and SPL token trees
- Adds token program accounts and ATAs
- Program ID and PDAs
- SOL tree account and token account
- USDC tree account and associated token accounts
- Fee recipient accounts
- Relayer addresses
- System programs
Extend Existing ALT
To add new tokens (e.g., USDT) to an existing ALT:HEN49U2ySJ85Vc78qprSW9y6mFDhs1NczRxyppNHjofe
Update Configuration (via Squad)
Configuration updates like deposit limits must go through Squad multisig.Update SPL Deposit Limit
- Token: USDC (
EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v) - New Limit: 1,000,000 USDC
- Instruction discriminator
- Serialized parameters
- Complete base58 transaction for Squad
Verify Deployment
After deployment:Run Verification Build
See the Verification guide for build verification steps
Monitoring
Check Program Health
Explorer Links
- Program: https://explorer.solana.com/address/9fhQBbumKEFuXtMBDw8AaQyAjCorLGJQiS3skWZdQyQD
- Squad Multisig: https://explorer.solana.com/address/AWexibGxNFKTa1b5R5MN4PJr9HWnWRwf8EW9g8cLx3dM
Security Best Practices
- Never commit keypairs to version control
- Use hardware wallets for multisig signers
- Test on devnet before every mainnet upgrade
- Coordinate multisig operations with all signers in advance
- Monitor program activity after deployment
- Keep backups of all keypairs and configuration
- Document changes for audit trail
Mainnet Configuration Summary
| Parameter | Value |
|---|---|
| Program ID | 9fhQBbumKEFuXtMBDw8AaQyAjCorLGJQiS3skWZdQyQD |
| Upgrade Authority | AWexibGxNFKTa1b5R5MN4PJr9HWnWRwf8EW9g8cLx3dM |
| Fee Recipient | AWexibGxNFKTa1b5R5MN4PJr9HWnWRwf8EW9g8cLx3dM |
| Relayer | AF8VuwCncKd5ZBnLYYnMjqh4vLch8mjqE75sFe5ZjRFW |
| USDC Mint | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
| USDT Mint | Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB |
| ALT Address | HEN49U2ySJ85Vc78qprSW9y6mFDhs1NczRxyppNHjofe |
Next Steps
Verify Deployment
Verify your mainnet build matches the deployed bytecode