INDEPENDENT CRASH TESTSTEST PROTOCOL PUBLISHED IN FULLRATINGS YOU CANNOT BUYEVERY REPORT DATED & RE-TESTEDPROTOCOLS TESTED ACROSS 12 CHAINSNEW: BRIDGE CRASH SERIES · READ NOW
Helius Helius · Solana mainnet

Privacy Rings

Independent on-chain verification of the deployed program: who can change it, what each privileged role can do to user funds, and whether the mainnet program matches the released binary. No fork run, no score.

Independent on-chain verification. Not a BULWARK rating.
Program ring1GaLCuJnkUMVkX2JeZLTTX17wKsV4fZmPVzXANWmainnet-betaRead at slot 469,218,692

Three findings

Upgrade authorityA program-derived address, not a single key. It is off the ed25519 curve, holds no account and has never signed. The last upgrade and the last authority change both went through a 2-of-6 Squads multisig with no time lock.
Other authoritiesProtocol, tree creation, ring creation and fee rights sit in one program-derived address, a Squads vault of the same multisig; forester rights sit in another program-derived address. None of them can move deposited funds, but they can pause a tree or stall withdrawals.
BuildThe program deployed on mainnet is byte-for-byte the binary published in the project release, apart from trailing zero padding.

Program

Program IDring1GaLCuJnkUMVkX2JeZLTTX17wKsV4fZmPVzXANW
LoaderBPFLoaderUpgradeab1e11111111111111111111111
ProgramDataCMV9fRyA66cwi1ce4bynyXR9zDU7f99gXZWCUNesp8xr
Data length641,949 bytes
Last deployedSlot 467,127,839
Read atSlot 469,218,692

Authority history

SlotEventExecuted byApproval
467,127,839Program upgradedSquads v4 program, multisig BCurTwuv…axXQR, vault Dhf62Dbdd…if7Tr, signer HwSzxkvm…EQPyg. The authority at that slot was the vault, not the current address.2-of-6, no time lock
467,408,467Authority set to CuZ42…z1FBSquads v4 program, multisig BCurTwuv…axXQR, vault Dhf62Dbdd…if7Tr, signer HwSzxkvm…EQPyg.2-of-6, no time lock

Multisig BCurTwuvnYmGdRQYwomHBVz8VUuk2BBVirXpaGvaxXQR has six members and needs two signatures; time lock 0. The current authority CuZ42BsoBcLaNTUboJpGhekGmrYMZ7sRhwVki4frz1FB is off the ed25519 curve, holds no account and is not a vault of that multisig, so the program that controls it directly is being identified.

Privileged roles and what they can do

RoleHolderTypeEffect on user funds
Upgrade authorityCuZ42BsoBcLaNTUboJpGhekGmrYMZ7sRhwVki4frz1FBprogram-derivedCan replace the whole program. No single key can sign for it; the last two changes went through a 2-of-6 Squads multisig. The program that controls it directly is being identified.
Protocol authorityDhf62DbddAc2uDNqnz13W8Z1MpF5MVJ8dvh3Uvhif7TrSquads vaultUpdates config and can pause deposits or withdrawals on one tree; cannot move user funds. Changes need 2 of 6 signatures.
Tree creationDhf62DbddAc2uDNqnz13W8Z1MpF5MVJ8dvh3Uvhif7TrSquads vaultCreates trees; no path to user balances.
Ring creationDhf62DbddAc2uDNqnz13W8Z1MpF5MVJ8dvh3Uvhif7TrSquads vaultCreates and activates ring configs; no path to user balances.
Fee authorityDhf62DbddAc2uDNqnz13W8Z1MpF5MVJ8dvh3Uvhif7TrSquads vaultSets tree fees; changes what a user pays, cannot move deposits.
ForesterB5df3kMmMxwqRUwWPffiECeqAL1ht27G1ES8guKHKi5Kprogram-derivedUpdates the nullifier tree, claims rent and closes nullifier accounts; can stall the withdrawal path, cannot transfer assets.

Config account EienwBSpsbAetT3RAAMzVA9rB5RHgCF7yTH7FFST6AK5. Flags read: tree creation not permissionless, ring activation not permissionless, SPL interface creation permissionless, next tree id 1.

Build verification

Releaseshielded-pool-v1.0.0
Assetshielded_pool_program.so, 634,120 bytes
SHA-256dc68dd2793403f3aa23102cfbaba580eb612def73c05685a7ef99787d08030a2
Published checksumMatches the asset
Deployed prefixIdentical to the asset; remaining 7,799 bytes are zero padding

What can still change

Evidence

This page covers the program and its authorities only. Deposit and withdrawal flows, prover and indexer checks were not run. It is not an audit and not investment advice.