Cloak Treasury
Private, programmable treasury with controlled visibility.
Powered by Cloak Shielded UTXO Devnet

Treasury Overview

Private disbursements via Cloak's shielded UTXO pool. Amounts and addresses hidden on-chain. Viewing keys issued per disbursement for selective audit.

SDK: @cloak.dev/sdk-devnet · Program: Zc1kHfp4...s27h · Proof: Groth16 · Pool: UTXO shielded DEVNET
SHIELDED BALANCE
$0
executed in pool
TOTAL DISBURSED
$0
executed disbursements
ACTIVE SCHEDULES
2
pending release
VIEWING KEYS
4
0 expiring soon
Recent disbursements
Shielded via Cloak · amounts hidden on-chain
ZK-SHIELDED
LabelRecipientsAmountStatus
No disbursements yet
Viewing key releases
Upcoming scheduled unlocks
Q3 Payroll #2 — Finance
Time-delay · 6d 14h remaining
LOCKED
Governance Auditor Key
Governance · pending approval
PENDING
Grant Batch #7 — Full audit
Released 3 days ago
REVEALED
Cloak SDK activity log
Real SDK calls — transact · scanTransactions · toComplianceReport
LIVE
14:23:01
transact() executed — Q3 Payroll #2 · Groth16 proof generated client-side · 8 shielded outputsSDK
14:22:48
UTXO deposit confirmed — $124,000 USDC entered shielded pool · leafIndex: 2441 · block: 298,441,102
14:22:31
generateUtxoKeypair() · createUtxo() called — owner keypair derived, USDC UTXO createdSDK
09:14:33
getNkFromUtxoPrivateKey() — viewing key nk derived · issued to Finance teamSDK
09:12:55
Governance trigger set — viewing key locked · awaiting guardian consensus
Yesterday
scanTransactions() + toComplianceReport() — Grant Batch #7 decrypted with nk · audit trail availableSDK

Schedule Disbursement

Configure a shielded batch. Amounts and addresses hidden via Cloak UTXO pool. Set when and to whom viewing keys (nk) are released.

Payment details
sdk.deposit() → transact() → fullWithdraw()
REAL SDK CALL — will execute on submit
// Configure payment to generate this call: transact({ inputUtxos: [createZeroUtxo(selectedMint)], outputUtxos: [createUtxo(amount, owner, selectedMint)], externalAmount: amount, depositor: signer.publicKey, }, baseOptions)
WALLET / STEALTH ADDR
AMOUNT
TOKEN
Total: $0.00 · Recipients: 0 · Token: USDC
Execution schedule
When does the shielded transaction fire?
Viewing key release
getNkFromUtxoPrivateKey() · scanTransactions()
REAL SDK CALL — viewing key derivation
// Derived client-side, never sent to server: const scanKeypair = await generateUtxoKeypair() const viewingKeyNk = getNkFromUtxoPrivateKey( scanKeypair.privateKey ) // nk passed into scanTransactions() for compliance
Privacy guarantee score
Based on Cloak pool depth + key delay
0
Configure to calculate
Shielded pool: Groth16 ZK
Key delay: —
Batch mixing: —

Active Disbursements

All shielded batches in flight. Amounts and recipients hidden on-chain. Only viewing key holders can read details via scanTransactions().

Viewing Keys

Issue scoped nk keys per disbursement. Control exactly who sees what — finance team, external auditors, regulators — with time-delayed or governance-gated release.

Issue new viewing key
getNkFromUtxoPrivateKey() · scoped access
REAL SDK CALL — compliance scan
const scan = await scanTransactions({ connection, programId: CLOAK_PROGRAM_ID, viewingKeyNk: nk, // derived from keypair limit: 250, }) const report = toComplianceReport(scan) // → per-tx gross, fee, net, running balance
Governance unlock
Approve pending viewing key releases
No pending governance viewing keys.
G1
G1
Pending
G2
G2
Pending
G3
G3
Pending
Connected voter wallet: none
Approval progress 0 / 2 needed
All issued keys
Active and scheduled nk viewing keys
Internal Finance Team
Q3 Payroll #2 · Full audit trail · Releases in 6d 14h
LOCKED
nk: [locked until release]
External Audit
Demo Governance Batch · Amounts only · Governance release
GOV. PENDING
nk: [locked until release]
Grant Committee
Grant Batch #7 · Full audit trail · Released 3 days ago
ACTIVE
nk:1qdef9i0j…1k2lmNoPq

Auditor Portal

Paste a viewing key (nk) to run scanTransactions() and decrypt the private history. The auditor never touches ZK mechanics — the key does all the work.

Enter viewing key
Calls scanTransactions() with your nk
REAL SDK CALL — runs on decrypt
const nk = getNkFromUtxoPrivateKey( keypair.privateKey ) const scan = await scanTransactions({ connection, programId: CLOAK_PROGRAM_ID, viewingKeyNk: nk, limit: 250 }) const report = toComplianceReport(scan) // Decrypts: gross, fee, net, running balance
The nk key decrypts only its issued scope.
"Amounts only" keys cannot reveal addresses.
Chain record remains shielded at all times.
Never log raw nk values — Cloak SDK enforced.
Paste a viewing key to decrypt disbursement history