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
| Label | Recipients | Amount | Status |
|---|---|---|---|
| No disbursements yet | |||
Viewing key releases
Upcoming scheduled unlocks
Q3 Payroll #2 — Finance
Time-delay · 6d 14h remaining
Governance Auditor Key
Governance · pending approval
Grant Batch #7 — Full audit
Released 3 days ago
Cloak SDK activity log
Real SDK calls — transact · scanTransactions · toComplianceReport
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: —
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
nk: [locked until release]
External Audit
Demo Governance Batch · Amounts only · Governance release
nk: [locked until release]
Grant Committee
Grant Batch #7 · Full audit trail · Released 3 days ago
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.
"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