Janus Henderson Anemoy Treasury Fund
Tokenized shares of a BVI professional fund holding 0–6 month US Treasury bills, with Janus Henderson as sub-manager. Runs on Centrifuge V3; subscriptions and redemptions are requests through ERC-7540 async vaults that the fund manager fills at NAV.
Control
Who can freeze, mint, pause or upgrade, and what stops them?
A single key can create new tokens.
A single key can create new tokens.
A single key can move tokens out of any wallet.
A single key can destroy tokens in any wallet.
A single key can change the onchain price.
A single key can move the assets backing the token.
A single key can grant or revoke every other role.
A single key can freeze a holder's tokens.
Multisig signers aren't named, so their independence can't be checked.
A 2-of-6 multisig can create new tokens: few signers need to agree.
A 2-of-6 multisig can move tokens out of any wallet: few signers need to agree.
A 2-of-6 multisig can destroy tokens in any wallet: few signers need to agree.
A 2-of-6 multisig can change the onchain price: few signers need to agree.
A 2-of-6 multisig can move the assets backing the token: few signers need to agree.
A 4-of-9 multisig can grant or revoke every other role: few signers need to agree.
A single key can pause all transfers.
A single key can change who may hold the token.
On ethereum, base, arbitrum, avalanche, bsc, plume, the token depends on a bridge (Centrifuge messaging (LayerZero, Axelar, Wormhole, Chainlink adapters)).
The issuer documents its admin powers.
Audited by Sherlock (2026-02).
- Bug bounty on Cantina, up to $250,000.
- Transfers are limited to allowlisted wallets.
Audits and bug bounty
- Sherlock · Centrifuge V3.1.0 deployment verification1 Feb 2026
Bug bounty on Cantina, up to $250,000.
Chains and bridges
Holders on a bridged chain also depend on the bridge.
- ethereum, base, arbitrum, avalanche, bsc, plumeNative, and a bridge can mint · Centrifuge messaging (LayerZero, Axelar, Wormhole, Chainlink adapters)
Who controls JTRSY on Ethereum
Token and service contracts on the left, the accounts holding their powers on the right. Edge color is the risk status of that power.
BalanceSheet
Service · verified
0x12a1…f43e
HubRegistry
Service · verified
0x19f4…DE93
FullRestrictions
Service · verified
0x21Cd…5EcC
JTRSY token
Tranche · Not a proxy
0x8c21…4b86
Hub
Service · verified
0xA4A7…1953
ProtocolGuardian
Service · verified
0xCEb7…35c6
JTRSY balance-sheet manager
EOA
0x95d2…37A9
OnOfframpManager (JTRSY balance-sheet manager)
Unknown contract
0xB6c9…3d85
AsyncRequestManager
0xF482…61Ae
JTRSY hub manager (writes NAV; Vault Street says 3-signer MPC)
EOA
0x7Bf0…02eC
Centrifuge Spoke (shared)
Spoke
0xEC35…25aB
JTRSY balance-sheet manager Safe
Safe 2/6
0x2B0f…7cfb
- ├ 0x7D26…bEf8
- ├ 0xaE66…5cB7
- ├ 0xDa2a…3aD1
- └ +3 more signers
Centrifuge Root (shared)
Root
0x7Ed4…368f
MessageProcessor
0x97cc…e30A
MessageDispatcher
0xf837…0B27
EOA
0x0446…24Bf
EOA
0x0800…F155
EOA
0x4d47…f541
EOA
0x5e7A…3EE1
EOA
0x701D…02b9
EOA
0x9eDe…AEA9
Safe 1/2
0xb307…EB3a
- ├ 0xb193…baBC
- ├ 0xd757…B553
EOA
0xd551…2616
EOA
0xE944…D28F
Centrifuge ProtocolGuardian Safe
Safe 4/9
0x9711…D225
- ├ 0xb307…EB3a
- ├ 0x0446…24Bf
- ├ 0x701D…02b9
- └ +6 more signers
Powers
Every privileged power we found, normalized to canonical power types.
- MintCriticalRedJTRSY balance-sheet managerEOA0x95d2…37A9
None · via
BalanceSheet.issue · isManager(pool 281474976710662) - MintCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.issue · isManager(pool 281474976710662) - MintCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.issue · isManager(pool 281474976710662) - MintCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.mint · auth (wards) - MintCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.mint · auth (wards) - MintCriticalRedJTRSY hub manager (writes NAV; Vault Street says 3-signer MPC)EOA0x7Bf0…02eC
None · via
Hub.setRequestManager, updateVault · _isManager(pool 281474976710662), swaps the contracts that issue shares - MintCriticalYellowJTRSY balance-sheet manager SafeSafe 2/60x2B0f…7cfb
No delay · via
BalanceSheet.issue · isManager(pool 281474976710662) - MintCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.mint · auth (wards) - Force-transferCriticalRedJTRSY balance-sheet managerEOA0x95d2…37A9
None · via
BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) - Force-transferCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) - Force-transferCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) - Force-transferCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.authTransferFrom · auth (wards) - Force-transferCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.authTransferFrom · auth (wards) - Force-transferCriticalYellowJTRSY balance-sheet manager SafeSafe 2/60x2B0f…7cfb
No delay · via
BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) - Force-transferCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.authTransferFrom · auth (wards) - Burn from holderCriticalRedJTRSY balance-sheet managerEOA0x95d2…37A9
None · via
BalanceSheet.revoke · isManager(pool 281474976710662) - Burn from holderCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.revoke · isManager(pool 281474976710662) - Burn from holderCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.revoke · isManager(pool 281474976710662) - Burn from holderCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.burn · auth (wards) - Burn from holderCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.burn · auth (wards) - Burn from holderCriticalYellowJTRSY balance-sheet manager SafeSafe 2/60x2B0f…7cfb
No delay · via
BalanceSheet.revoke · isManager(pool 281474976710662) - Burn from holderCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.burn · auth (wards) - Set priceCriticalRedJTRSY balance-sheet managerEOA0x95d2…37A9
None · via
BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction - Set priceCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction - Set priceCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction - Set priceCriticalRedJTRSY hub manager (writes NAV; Vault Street says 3-signer MPC)EOA0x7Bf0…02eC
None · via
Hub.updateSharePrice, notifySharePrice · _isManager(pool 281474976710662) - Set priceCriticalYellowJTRSY balance-sheet manager SafeSafe 2/60x2B0f…7cfb
No delay · via
BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction - Allocate fundsCriticalRedJTRSY balance-sheet managerEOA0x95d2…37A9
None · via
BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets - Allocate fundsCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets - Allocate fundsCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets - Allocate fundsCriticalRedJTRSY hub manager (writes NAV; Vault Street says 3-signer MPC)EOA0x7Bf0…02eC
None · via
Hub.updateContract · _isManager(pool 281474976710662), reconfigures pool contracts such as the on/offramp manager - Allocate fundsCriticalYellowJTRSY balance-sheet manager SafeSafe 2/60x2B0f…7cfb
No delay · via
BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets - Grant rolesCriticalRedMessageProcessor0x97cc…e30A
→ EOA
None · via
BalanceSheet.updateManager · auth (wards) - Grant rolesCriticalRedMessageDispatcher0xf837…0B27
→ EOA
None · via
BalanceSheet.updateManager · auth (wards) - Grant rolesCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
FullRestrictions.deny, rely · auth (wards) - Grant rolesCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.deny, rely · auth (wards) - Grant rolesCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.deny, rely · auth (wards) - Grant rolesCriticalRedJTRSY hub manager (writes NAV; Vault Street says 3-signer MPC)EOA0x7Bf0…02eC
None · via
Hub.updateHubManager, updateBalanceSheetManager · _isManager(pool 281474976710662) - Grant rolesCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
BalanceSheet.updateManager · auth (wards) - Grant rolesCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
FullRestrictions.deny, rely · auth (wards) - Grant rolesCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.deny, rely · auth (wards) - FreezeHighRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
FullRestrictions.updateRestriction · auth (wards) - FreezeHighRedJTRSY hub manager (writes NAV; Vault Street says 3-signer MPC)EOA0x7Bf0…02eC
None · via
Hub.updateRestriction · _isManager(pool 281474976710662), sent to the hook - FreezeHighGreenCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
FullRestrictions.updateRestriction · auth (wards) - PauseHighYellowEOA0x0446…24Bf
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x0800…F155
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x4d47…f541
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x5e7A…3EE1
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x701D…02b9
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x9eDe…AEA9
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowSafe 1/20xb307…EB3a
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0xd551…2616
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0xE944…D28F
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighGreenCentrifuge ProtocolGuardian SafeSafe 4/90x9711…D225
No delay · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - Set complianceHighYellowCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
FullRestrictions.trustedCall · auth (wards) - Set complianceHighYellowCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.file · auth (wards) - Set complianceHighYellowCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.file · auth (wards) - Set complianceHighYellowJTRSY hub manager (writes NAV; Vault Street says 3-signer MPC)EOA0x7Bf0…02eC
None · via
Hub.updateShareHook · _isManager(pool 281474976710662), swaps the transfer hook - Set complianceHighGreenCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
FullRestrictions.trustedCall · auth (wards) - Set complianceHighGreenCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.file · auth (wards)
| Power | Criticality | Held by | Checks | Status | Found via |
|---|---|---|---|---|---|
| Mint | Critical | None | Red | BalanceSheet.issue · isManager(pool 281474976710662) | |
| Mint | Critical | None | Red | BalanceSheet.issue · isManager(pool 281474976710662) | |
| Mint | Critical | None | Red | BalanceSheet.issue · isManager(pool 281474976710662) | |
| Mint | Critical | None | Red | Tranche.mint · auth (wards) | |
| Mint | Critical | None | Red | Tranche.mint · auth (wards) | |
| Mint | Critical | None | Red | Hub.setRequestManager, updateVault · _isManager(pool 281474976710662), swaps the contracts that issue shares | |
| Mint | Critical | No delay | Yellow | BalanceSheet.issue · isManager(pool 281474976710662) | |
| Mint | Critical | 2-day delay | Yellow | Tranche.mint · auth (wards) | |
| Force-transfer | Critical | None | Red | BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) | |
| Force-transfer | Critical | None | Red | BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) | |
| Force-transfer | Critical | None | Red | BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) | |
| Force-transfer | Critical | None | Red | Tranche.authTransferFrom · auth (wards) | |
| Force-transfer | Critical | None | Red | Tranche.authTransferFrom · auth (wards) | |
| Force-transfer | Critical | No delay | Yellow | BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) | |
| Force-transfer | Critical | 2-day delay | Yellow | Tranche.authTransferFrom · auth (wards) | |
| Burn from holder | Critical | None | Red | BalanceSheet.revoke · isManager(pool 281474976710662) | |
| Burn from holder | Critical | None | Red | BalanceSheet.revoke · isManager(pool 281474976710662) | |
| Burn from holder | Critical | None | Red | BalanceSheet.revoke · isManager(pool 281474976710662) | |
| Burn from holder | Critical | None | Red | Tranche.burn · auth (wards) | |
| Burn from holder | Critical | None | Red | Tranche.burn · auth (wards) | |
| Burn from holder | Critical | No delay | Yellow | BalanceSheet.revoke · isManager(pool 281474976710662) | |
| Burn from holder | Critical | 2-day delay | Yellow | Tranche.burn · auth (wards) | |
| Set price | Critical | None | Red | BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction | |
| Set price | Critical | None | Red | BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction | |
| Set price | Critical | None | Red | BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction | |
| Set price | Critical | None | Red | Hub.updateSharePrice, notifySharePrice · _isManager(pool 281474976710662) | |
| Set price | Critical | No delay | Yellow | BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction | |
| Allocate funds | Critical | None | Red | BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets | |
| Allocate funds | Critical | None | Red | BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets | |
| Allocate funds | Critical | None | Red | BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets | |
| Allocate funds | Critical | None | Red | Hub.updateContract · _isManager(pool 281474976710662), reconfigures pool contracts such as the on/offramp manager | |
| Allocate funds | Critical | No delay | Yellow | BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets | |
| Grant roles | Critical | None | Red | BalanceSheet.updateManager · auth (wards) | |
| Grant roles | Critical | None | Red | BalanceSheet.updateManager · auth (wards) | |
| Grant roles | Critical | None | Red | FullRestrictions.deny, rely · auth (wards) | |
| Grant roles | Critical | None | Red | Tranche.deny, rely · auth (wards) | |
| Grant roles | Critical | None | Red | Tranche.deny, rely · auth (wards) | |
| Grant roles | Critical | None | Red | Hub.updateHubManager, updateBalanceSheetManager · _isManager(pool 281474976710662) | |
| Grant roles | Critical | 2-day delay | Yellow | BalanceSheet.updateManager · auth (wards) | |
| Grant roles | Critical | 2-day delay | Yellow | FullRestrictions.deny, rely · auth (wards) | |
| Grant roles | Critical | 2-day delay | Yellow | Tranche.deny, rely · auth (wards) | |
| Freeze | High | None | Red | FullRestrictions.updateRestriction · auth (wards) | |
| Freeze | High | None | Red | Hub.updateRestriction · _isManager(pool 281474976710662), sent to the hook | |
| Freeze | High | 2-day delay | Green | FullRestrictions.updateRestriction · auth (wards) | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | No delay | Green | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Set compliance | High | None | Yellow | FullRestrictions.trustedCall · auth (wards) | |
| Set compliance | High | None | Yellow | Tranche.file · auth (wards) | |
| Set compliance | High | None | Yellow | Tranche.file · auth (wards) | |
| Set compliance | High | None | Yellow | Hub.updateShareHook · _isManager(pool 281474976710662), swaps the transfer hook | |
| Set compliance | High | 2-day delay | Green | FullRestrictions.trustedCall · auth (wards) | |
| Set compliance | High | 2-day delay | Green | Tranche.file · auth (wards) |
For regulated securities, freeze and force-transfer powers are often legally required. Control rates who holds them and what checks exist, not whether they exist. A single key holding a critical power or freeze is red; a multisig with no timelock is yellow.
Discovered at block 26,183,886 · 13 Oct 2026 · tool discovery-0.2.0 · View raw JSON on GitHub ↗
Who controls JTRSY on Base
Token and service contracts on the left, the accounts holding their powers on the right. Edge color is the risk status of that power.
BalanceSheet
Service · verified
0x12a1…f43e
FullRestrictions
Service · verified
0x21Cd…5EcC
JTRSY token
Tranche · Not a proxy
0x8c21…4b86
ProtocolGuardian
Service · verified
0xCEb7…35c6
OnOfframpManager (JTRSY balance-sheet manager)
Unknown contract
0xB6c9…3d85
AsyncRequestManager
0xF482…61Ae
JTRSY hub manager (writes NAV; Vault Street says 3-signer MPC)
EOA
0x7Bf0…02eC
Centrifuge Spoke (shared)
Spoke
0xEC35…25aB
Centrifuge Root (shared)
Root
0x7Ed4…368f
MessageProcessor
0x97cc…e30A
MessageDispatcher
0xf837…0B27
EOA
0x0446…24Bf
EOA
0x0800…F155
EOA
0x4d47…f541
EOA
0x5e7A…3EE1
EOA
0x701D…02b9
EOA
0x9eDe…AEA9
Safe 1/2
0xb307…EB3a
- ├ 0xb193…baBC
- ├ 0xd757…B553
EOA
0xd551…2616
EOA
0xE944…D28F
Centrifuge ProtocolGuardian Safe
Safe 4/9
0x9711…D225
- ├ 0xb307…EB3a
- ├ 0x0446…24Bf
- ├ 0x701D…02b9
- └ +6 more signers
Powers
Every privileged power we found, normalized to canonical power types.
- MintCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.issue · isManager(pool 281474976710662) - MintCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.issue · isManager(pool 281474976710662) - MintCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.mint · auth (wards) - MintCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.mint · auth (wards) - MintCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.mint · auth (wards) - Force-transferCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) - Force-transferCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) - Force-transferCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.authTransferFrom · auth (wards) - Force-transferCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.authTransferFrom · auth (wards) - Force-transferCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.authTransferFrom · auth (wards) - Burn from holderCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.revoke · isManager(pool 281474976710662) - Burn from holderCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.revoke · isManager(pool 281474976710662) - Burn from holderCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.burn · auth (wards) - Burn from holderCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.burn · auth (wards) - Burn from holderCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.burn · auth (wards) - Set priceCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction - Set priceCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction - Allocate fundsCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets - Allocate fundsCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets - Grant rolesCriticalRedMessageProcessor0x97cc…e30A
→ EOA
None · via
BalanceSheet.updateManager · auth (wards) - Grant rolesCriticalRedMessageDispatcher0xf837…0B27
→ EOA
None · via
BalanceSheet.updateManager · auth (wards) - Grant rolesCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
FullRestrictions.deny, rely · auth (wards) - Grant rolesCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.deny, rely · auth (wards) - Grant rolesCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.deny, rely · auth (wards) - Grant rolesCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
BalanceSheet.updateManager · auth (wards) - Grant rolesCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
FullRestrictions.deny, rely · auth (wards) - Grant rolesCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.deny, rely · auth (wards) - FreezeHighRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
FullRestrictions.updateRestriction · auth (wards) - FreezeHighGreenCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
FullRestrictions.updateRestriction · auth (wards) - PauseHighYellowEOA0x0446…24Bf
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x0800…F155
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x4d47…f541
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x5e7A…3EE1
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x701D…02b9
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x9eDe…AEA9
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowSafe 1/20xb307…EB3a
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0xd551…2616
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0xE944…D28F
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighGreenCentrifuge ProtocolGuardian SafeSafe 4/90x9711…D225
No delay · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - Set complianceHighYellowCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
FullRestrictions.trustedCall · auth (wards) - Set complianceHighYellowCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.file · auth (wards) - Set complianceHighYellowCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.file · auth (wards) - Set complianceHighGreenCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
FullRestrictions.trustedCall · auth (wards) - Set complianceHighGreenCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.file · auth (wards)
| Power | Criticality | Held by | Checks | Status | Found via |
|---|---|---|---|---|---|
| Mint | Critical | None | Red | BalanceSheet.issue · isManager(pool 281474976710662) | |
| Mint | Critical | None | Red | BalanceSheet.issue · isManager(pool 281474976710662) | |
| Mint | Critical | None | Red | Tranche.mint · auth (wards) | |
| Mint | Critical | None | Red | Tranche.mint · auth (wards) | |
| Mint | Critical | 2-day delay | Yellow | Tranche.mint · auth (wards) | |
| Force-transfer | Critical | None | Red | BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) | |
| Force-transfer | Critical | None | Red | BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) | |
| Force-transfer | Critical | None | Red | Tranche.authTransferFrom · auth (wards) | |
| Force-transfer | Critical | None | Red | Tranche.authTransferFrom · auth (wards) | |
| Force-transfer | Critical | 2-day delay | Yellow | Tranche.authTransferFrom · auth (wards) | |
| Burn from holder | Critical | None | Red | BalanceSheet.revoke · isManager(pool 281474976710662) | |
| Burn from holder | Critical | None | Red | BalanceSheet.revoke · isManager(pool 281474976710662) | |
| Burn from holder | Critical | None | Red | Tranche.burn · auth (wards) | |
| Burn from holder | Critical | None | Red | Tranche.burn · auth (wards) | |
| Burn from holder | Critical | 2-day delay | Yellow | Tranche.burn · auth (wards) | |
| Set price | Critical | None | Red | BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction | |
| Set price | Critical | None | Red | BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction | |
| Allocate funds | Critical | None | Red | BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets | |
| Allocate funds | Critical | None | Red | BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets | |
| Grant roles | Critical | None | Red | BalanceSheet.updateManager · auth (wards) | |
| Grant roles | Critical | None | Red | BalanceSheet.updateManager · auth (wards) | |
| Grant roles | Critical | None | Red | FullRestrictions.deny, rely · auth (wards) | |
| Grant roles | Critical | None | Red | Tranche.deny, rely · auth (wards) | |
| Grant roles | Critical | None | Red | Tranche.deny, rely · auth (wards) | |
| Grant roles | Critical | 2-day delay | Yellow | BalanceSheet.updateManager · auth (wards) | |
| Grant roles | Critical | 2-day delay | Yellow | FullRestrictions.deny, rely · auth (wards) | |
| Grant roles | Critical | 2-day delay | Yellow | Tranche.deny, rely · auth (wards) | |
| Freeze | High | None | Red | FullRestrictions.updateRestriction · auth (wards) | |
| Freeze | High | 2-day delay | Green | FullRestrictions.updateRestriction · auth (wards) | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | No delay | Green | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Set compliance | High | None | Yellow | FullRestrictions.trustedCall · auth (wards) | |
| Set compliance | High | None | Yellow | Tranche.file · auth (wards) | |
| Set compliance | High | None | Yellow | Tranche.file · auth (wards) | |
| Set compliance | High | 2-day delay | Green | FullRestrictions.trustedCall · auth (wards) | |
| Set compliance | High | 2-day delay | Green | Tranche.file · auth (wards) |
For regulated securities, freeze and force-transfer powers are often legally required. Control rates who holds them and what checks exist, not whether they exist. A single key holding a critical power or freeze is red; a multisig with no timelock is yellow.
Discovered at block 52,554,374 · 13 Oct 2026 · tool discovery-0.2.0 · View raw JSON on GitHub ↗
Who controls JTRSY on Arbitrum
Token and service contracts on the left, the accounts holding their powers on the right. Edge color is the risk status of that power.
BalanceSheet
Service · verified
0x12a1…f43e
FullRestrictions
Service · verified
0x21Cd…5EcC
JTRSY token
Tranche · Not a proxy
0x8c21…4b86
ProtocolGuardian
Service · verified
0xCEb7…35c6
OnOfframpManager (JTRSY balance-sheet manager)
Unknown contract
0xB6c9…3d85
AsyncRequestManager
0xF482…61Ae
JTRSY hub manager (writes NAV; Vault Street says 3-signer MPC)
EOA
0x7Bf0…02eC
Centrifuge Spoke (shared)
Spoke
0xEC35…25aB
JTRSY balance-sheet manager Safe
Safe 2/7
0x2B0f…7cfb
- ├ 0x7D26…bEf8
- ├ 0x3DD1…5E28
- ├ 0xaE66…5cB7
- └ +4 more signers
Centrifuge Root (shared)
Root
0x7Ed4…368f
MessageProcessor
0x97cc…e30A
MessageDispatcher
0xf837…0B27
EOA
0x0446…24Bf
EOA
0x0800…F155
EOA
0x4d47…f541
EOA
0x5e7A…3EE1
EOA
0x701D…02b9
EOA
0x9eDe…AEA9
Safe 1/2
0xb307…EB3a
- ├ 0xb193…baBC
- ├ 0xd757…B553
EOA
0xd551…2616
EOA
0xE944…D28F
Centrifuge ProtocolGuardian Safe
Safe 4/9
0x9711…D225
- ├ 0xb307…EB3a
- ├ 0x0446…24Bf
- ├ 0x701D…02b9
- └ +6 more signers
Powers
Every privileged power we found, normalized to canonical power types.
- MintCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.issue · isManager(pool 281474976710662) - MintCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.issue · isManager(pool 281474976710662) - MintCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.mint · auth (wards) - MintCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.mint · auth (wards) - MintCriticalYellowJTRSY balance-sheet manager SafeSafe 2/70x2B0f…7cfb
No delay · via
BalanceSheet.issue · isManager(pool 281474976710662) - MintCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.mint · auth (wards) - Force-transferCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) - Force-transferCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) - Force-transferCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.authTransferFrom · auth (wards) - Force-transferCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.authTransferFrom · auth (wards) - Force-transferCriticalYellowJTRSY balance-sheet manager SafeSafe 2/70x2B0f…7cfb
No delay · via
BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) - Force-transferCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.authTransferFrom · auth (wards) - Burn from holderCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.revoke · isManager(pool 281474976710662) - Burn from holderCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.revoke · isManager(pool 281474976710662) - Burn from holderCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.burn · auth (wards) - Burn from holderCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.burn · auth (wards) - Burn from holderCriticalYellowJTRSY balance-sheet manager SafeSafe 2/70x2B0f…7cfb
No delay · via
BalanceSheet.revoke · isManager(pool 281474976710662) - Burn from holderCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.burn · auth (wards) - Set priceCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction - Set priceCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction - Set priceCriticalYellowJTRSY balance-sheet manager SafeSafe 2/70x2B0f…7cfb
No delay · via
BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction - Allocate fundsCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets - Allocate fundsCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets - Allocate fundsCriticalYellowJTRSY balance-sheet manager SafeSafe 2/70x2B0f…7cfb
No delay · via
BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets - Grant rolesCriticalRedMessageProcessor0x97cc…e30A
→ EOA
None · via
BalanceSheet.updateManager · auth (wards) - Grant rolesCriticalRedMessageDispatcher0xf837…0B27
→ EOA
None · via
BalanceSheet.updateManager · auth (wards) - Grant rolesCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
FullRestrictions.deny, rely · auth (wards) - Grant rolesCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.deny, rely · auth (wards) - Grant rolesCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.deny, rely · auth (wards) - Grant rolesCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
BalanceSheet.updateManager · auth (wards) - Grant rolesCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
FullRestrictions.deny, rely · auth (wards) - Grant rolesCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.deny, rely · auth (wards) - FreezeHighRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
FullRestrictions.updateRestriction · auth (wards) - FreezeHighGreenCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
FullRestrictions.updateRestriction · auth (wards) - PauseHighYellowEOA0x0446…24Bf
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x0800…F155
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x4d47…f541
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x5e7A…3EE1
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x701D…02b9
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x9eDe…AEA9
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowSafe 1/20xb307…EB3a
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0xd551…2616
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0xE944…D28F
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighGreenCentrifuge ProtocolGuardian SafeSafe 4/90x9711…D225
No delay · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - Set complianceHighYellowCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
FullRestrictions.trustedCall · auth (wards) - Set complianceHighYellowCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
Tranche.file · auth (wards) - Set complianceHighYellowCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
Tranche.file · auth (wards) - Set complianceHighGreenCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
FullRestrictions.trustedCall · auth (wards) - Set complianceHighGreenCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
Tranche.file · auth (wards)
| Power | Criticality | Held by | Checks | Status | Found via |
|---|---|---|---|---|---|
| Mint | Critical | None | Red | BalanceSheet.issue · isManager(pool 281474976710662) | |
| Mint | Critical | None | Red | BalanceSheet.issue · isManager(pool 281474976710662) | |
| Mint | Critical | None | Red | Tranche.mint · auth (wards) | |
| Mint | Critical | None | Red | Tranche.mint · auth (wards) | |
| Mint | Critical | No delay | Yellow | BalanceSheet.issue · isManager(pool 281474976710662) | |
| Mint | Critical | 2-day delay | Yellow | Tranche.mint · auth (wards) | |
| Force-transfer | Critical | None | Red | BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) | |
| Force-transfer | Critical | None | Red | BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) | |
| Force-transfer | Critical | None | Red | Tranche.authTransferFrom · auth (wards) | |
| Force-transfer | Critical | None | Red | Tranche.authTransferFrom · auth (wards) | |
| Force-transfer | Critical | No delay | Yellow | BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) | |
| Force-transfer | Critical | 2-day delay | Yellow | Tranche.authTransferFrom · auth (wards) | |
| Burn from holder | Critical | None | Red | BalanceSheet.revoke · isManager(pool 281474976710662) | |
| Burn from holder | Critical | None | Red | BalanceSheet.revoke · isManager(pool 281474976710662) | |
| Burn from holder | Critical | None | Red | Tranche.burn · auth (wards) | |
| Burn from holder | Critical | None | Red | Tranche.burn · auth (wards) | |
| Burn from holder | Critical | No delay | Yellow | BalanceSheet.revoke · isManager(pool 281474976710662) | |
| Burn from holder | Critical | 2-day delay | Yellow | Tranche.burn · auth (wards) | |
| Set price | Critical | None | Red | BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction | |
| Set price | Critical | None | Red | BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction | |
| Set price | Critical | No delay | Yellow | BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction | |
| Allocate funds | Critical | None | Red | BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets | |
| Allocate funds | Critical | None | Red | BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets | |
| Allocate funds | Critical | No delay | Yellow | BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets | |
| Grant roles | Critical | None | Red | BalanceSheet.updateManager · auth (wards) | |
| Grant roles | Critical | None | Red | BalanceSheet.updateManager · auth (wards) | |
| Grant roles | Critical | None | Red | FullRestrictions.deny, rely · auth (wards) | |
| Grant roles | Critical | None | Red | Tranche.deny, rely · auth (wards) | |
| Grant roles | Critical | None | Red | Tranche.deny, rely · auth (wards) | |
| Grant roles | Critical | 2-day delay | Yellow | BalanceSheet.updateManager · auth (wards) | |
| Grant roles | Critical | 2-day delay | Yellow | FullRestrictions.deny, rely · auth (wards) | |
| Grant roles | Critical | 2-day delay | Yellow | Tranche.deny, rely · auth (wards) | |
| Freeze | High | None | Red | FullRestrictions.updateRestriction · auth (wards) | |
| Freeze | High | 2-day delay | Green | FullRestrictions.updateRestriction · auth (wards) | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | No delay | Green | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Set compliance | High | None | Yellow | FullRestrictions.trustedCall · auth (wards) | |
| Set compliance | High | None | Yellow | Tranche.file · auth (wards) | |
| Set compliance | High | None | Yellow | Tranche.file · auth (wards) | |
| Set compliance | High | 2-day delay | Green | FullRestrictions.trustedCall · auth (wards) | |
| Set compliance | High | 2-day delay | Green | Tranche.file · auth (wards) |
For regulated securities, freeze and force-transfer powers are often legally required. Control rates who holds them and what checks exist, not whether they exist. A single key holding a critical power or freeze is red; a multisig with no timelock is yellow.
Discovered at block 514,442,727 · 13 Oct 2026 · tool discovery-0.2.0 · View raw JSON on GitHub ↗
Who controls JTRSY on BNB Chain
Token and service contracts on the left, the accounts holding their powers on the right. Edge color is the risk status of that power.
BalanceSheet
Service · verified
0x12a1…f43e
FullRestrictions
Service · verified
0x21Cd…5EcC
ProtocolGuardian
Service · verified
0xCEb7…35c6
JTRSY token
ShareToken · Not a proxy
0xa5d4…627b
OnOfframpManager (JTRSY balance-sheet manager)
Unknown contract
0xB6c9…3d85
AsyncRequestManager
0xF482…61Ae
JTRSY hub manager (writes NAV; Vault Street says 3-signer MPC)
EOA
0x7Bf0…02eC
Centrifuge Spoke (shared)
Spoke
0xEC35…25aB
JTRSY balance-sheet manager Safe
Safe 2/5
0x2B0f…7cfb
- ├ 0xaE66…5cB7
- ├ 0xDa2a…3aD1
- ├ 0xd551…2616
- └ +2 more signers
Centrifuge Root (shared)
Root
0x7Ed4…368f
MessageProcessor
0x97cc…e30A
MessageDispatcher
0xf837…0B27
EOA
0x0446…24Bf
EOA
0x0800…F155
EOA
0x4d47…f541
EOA
0x5e7A…3EE1
EOA
0x701D…02b9
EOA
0x9eDe…AEA9
Safe 1/2
0xb307…EB3a
- ├ 0xb193…baBC
- ├ 0xd757…B553
EOA
0xd551…2616
EOA
0xE944…D28F
Centrifuge ProtocolGuardian Safe
Safe 4/9
0x9711…D225
- ├ 0xb307…EB3a
- ├ 0x0446…24Bf
- ├ 0x701D…02b9
- └ +6 more signers
Powers
Every privileged power we found, normalized to canonical power types.
- MintCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.issue · isManager(pool 281474976710662) - MintCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.issue · isManager(pool 281474976710662) - MintCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
ShareToken.mint · auth (wards) - MintCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
ShareToken.mint · auth (wards) - MintCriticalYellowJTRSY balance-sheet manager SafeSafe 2/50x2B0f…7cfb
No delay · via
BalanceSheet.issue · isManager(pool 281474976710662) - MintCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
ShareToken.mint · auth (wards) - Force-transferCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) - Force-transferCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) - Force-transferCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
ShareToken.authTransferFrom · auth (wards) - Force-transferCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
ShareToken.authTransferFrom · auth (wards) - Force-transferCriticalYellowJTRSY balance-sheet manager SafeSafe 2/50x2B0f…7cfb
No delay · via
BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) - Force-transferCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
ShareToken.authTransferFrom · auth (wards) - Burn from holderCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.revoke · isManager(pool 281474976710662) - Burn from holderCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.revoke · isManager(pool 281474976710662) - Burn from holderCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
ShareToken.burn · auth (wards) - Burn from holderCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
ShareToken.burn · auth (wards) - Burn from holderCriticalYellowJTRSY balance-sheet manager SafeSafe 2/50x2B0f…7cfb
No delay · via
BalanceSheet.revoke · isManager(pool 281474976710662) - Burn from holderCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
ShareToken.burn · auth (wards) - Set priceCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction - Set priceCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction - Set priceCriticalYellowJTRSY balance-sheet manager SafeSafe 2/50x2B0f…7cfb
No delay · via
BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction - Allocate fundsCriticalRedOnOfframpManager (JTRSY balance-sheet manager)Unknown contract0xB6c9…3d85
None · via
BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets - Allocate fundsCriticalRedAsyncRequestManager0xF482…61Ae
→ EOA
None · via
BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets - Allocate fundsCriticalYellowJTRSY balance-sheet manager SafeSafe 2/50x2B0f…7cfb
No delay · via
BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets - Grant rolesCriticalRedMessageProcessor0x97cc…e30A
→ EOA
None · via
BalanceSheet.updateManager · auth (wards) - Grant rolesCriticalRedMessageDispatcher0xf837…0B27
→ EOA
None · via
BalanceSheet.updateManager · auth (wards) - Grant rolesCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
FullRestrictions.deny, rely · auth (wards) - Grant rolesCriticalRedCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
ShareToken.deny, rely · auth (wards) - Grant rolesCriticalRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
ShareToken.deny, rely · auth (wards) - Grant rolesCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
BalanceSheet.updateManager · auth (wards) - Grant rolesCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
FullRestrictions.deny, rely · auth (wards) - Grant rolesCriticalYellowCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
ShareToken.deny, rely · auth (wards) - FreezeHighRedCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
FullRestrictions.updateRestriction · auth (wards) - FreezeHighGreenCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
FullRestrictions.updateRestriction · auth (wards) - PauseHighYellowEOA0x0446…24Bf
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x0800…F155
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x4d47…f541
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x5e7A…3EE1
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x701D…02b9
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0x9eDe…AEA9
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowSafe 1/20xb307…EB3a
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0xd551…2616
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighYellowEOA0xE944…D28F
None · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - PauseHighGreenCentrifuge ProtocolGuardian SafeSafe 4/90x9711…D225
No delay · via
ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners - Set complianceHighYellowCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
FullRestrictions.trustedCall · auth (wards) - Set complianceHighYellowCentrifuge BalanceSheet (shared)BalanceSheet0x12a1…f43e
→ EOA
None · via
ShareToken.file · auth (wards) - Set complianceHighYellowCentrifuge Spoke (shared)Spoke0xEC35…25aB
→ EOA
None · via
ShareToken.file · auth (wards) - Set complianceHighGreenCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
FullRestrictions.trustedCall · auth (wards) - Set complianceHighGreenCentrifuge Root (shared)Root0x7Ed4…368f
→ Timelock 2d → Safe 4/9
2-day delay · via
ShareToken.file · auth (wards)
| Power | Criticality | Held by | Checks | Status | Found via |
|---|---|---|---|---|---|
| Mint | Critical | None | Red | BalanceSheet.issue · isManager(pool 281474976710662) | |
| Mint | Critical | None | Red | BalanceSheet.issue · isManager(pool 281474976710662) | |
| Mint | Critical | None | Red | ShareToken.mint · auth (wards) | |
| Mint | Critical | None | Red | ShareToken.mint · auth (wards) | |
| Mint | Critical | No delay | Yellow | BalanceSheet.issue · isManager(pool 281474976710662) | |
| Mint | Critical | 2-day delay | Yellow | ShareToken.mint · auth (wards) | |
| Force-transfer | Critical | None | Red | BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) | |
| Force-transfer | Critical | None | Red | BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) | |
| Force-transfer | Critical | None | Red | ShareToken.authTransferFrom · auth (wards) | |
| Force-transfer | Critical | None | Red | ShareToken.authTransferFrom · auth (wards) | |
| Force-transfer | Critical | No delay | Yellow | BalanceSheet.transferSharesFrom · isManager(pool 281474976710662) | |
| Force-transfer | Critical | 2-day delay | Yellow | ShareToken.authTransferFrom · auth (wards) | |
| Burn from holder | Critical | None | Red | BalanceSheet.revoke · isManager(pool 281474976710662) | |
| Burn from holder | Critical | None | Red | BalanceSheet.revoke · isManager(pool 281474976710662) | |
| Burn from holder | Critical | None | Red | ShareToken.burn · auth (wards) | |
| Burn from holder | Critical | None | Red | ShareToken.burn · auth (wards) | |
| Burn from holder | Critical | No delay | Yellow | BalanceSheet.revoke · isManager(pool 281474976710662) | |
| Burn from holder | Critical | 2-day delay | Yellow | ShareToken.burn · auth (wards) | |
| Set price | Critical | None | Red | BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction | |
| Set price | Critical | None | Red | BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction | |
| Set price | Critical | No delay | Yellow | BalanceSheet.overridePricePoolPerShare, overridePricePoolPerAsset · isManager(pool 281474976710662), within one transaction | |
| Allocate funds | Critical | None | Red | BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets | |
| Allocate funds | Critical | None | Red | BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets | |
| Allocate funds | Critical | No delay | Yellow | BalanceSheet.withdraw, deposit · isManager(pool 281474976710662), moves pool escrow assets | |
| Grant roles | Critical | None | Red | BalanceSheet.updateManager · auth (wards) | |
| Grant roles | Critical | None | Red | BalanceSheet.updateManager · auth (wards) | |
| Grant roles | Critical | None | Red | FullRestrictions.deny, rely · auth (wards) | |
| Grant roles | Critical | None | Red | ShareToken.deny, rely · auth (wards) | |
| Grant roles | Critical | None | Red | ShareToken.deny, rely · auth (wards) | |
| Grant roles | Critical | 2-day delay | Yellow | BalanceSheet.updateManager · auth (wards) | |
| Grant roles | Critical | 2-day delay | Yellow | FullRestrictions.deny, rely · auth (wards) | |
| Grant roles | Critical | 2-day delay | Yellow | ShareToken.deny, rely · auth (wards) | |
| Freeze | High | None | Red | FullRestrictions.updateRestriction · auth (wards) | |
| Freeze | High | 2-day delay | Green | FullRestrictions.updateRestriction · auth (wards) | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | None | Yellow | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Pause | High | No delay | Green | ProtocolGuardian.pause · onlySafeOrOwner: the Safe or any one of its owners | |
| Set compliance | High | None | Yellow | FullRestrictions.trustedCall · auth (wards) | |
| Set compliance | High | None | Yellow | ShareToken.file · auth (wards) | |
| Set compliance | High | None | Yellow | ShareToken.file · auth (wards) | |
| Set compliance | High | 2-day delay | Green | FullRestrictions.trustedCall · auth (wards) | |
| Set compliance | High | 2-day delay | Green | ShareToken.file · auth (wards) |
For regulated securities, freeze and force-transfer powers are often legally required. Control rates who holds them and what checks exist, not whether they exist. A single key holding a critical power or freeze is red; a multisig with no timelock is yellow.
Discovered at block 127,410,883 · 13 Oct 2026 · tool discovery-0.2.0 · View raw JSON on GitHub ↗