Circle USYC
Tokenized shares of Hashnote International Short Duration Yield Fund, a Cayman fund that earns roughly the overnight Fed funds rate through reverse repo on US government securities and T-bills. Issued by Circle International Bermuda since Circle bought Hashnote in January 2025. About 98% of supply is on BNB Chain.
Control
Who can freeze, mint, pause or upgrade, and what stops them?
A single key can replace the contract code.
A single key can replace the contract code.
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 grant or revoke every other role.
A single key can pause all transfers.
A single key can change who may hold the token.
The issuer doesn't document its admin powers; they're only visible onchain.
The latest published audit is from 2024-03, more than two years ago.
On ethereum, the token depends on a bridge (Circle CCTP, a TokenManagerProxy (likely Axelar)).
- No public bug bounty.
- Transfers are limited to allowlisted wallets.
Audits and bug bounty
- Unnamed firm · USYC contracts1 Mar 2024
No public bug bounty found.
Chains and bridges
Holders on a bridged chain also depend on the bridge.
- ethereumNative, and a bridge can mint · Circle CCTP, a TokenManagerProxy (likely Axelar)
- bsc, arc, solanaIssued natively · Circle
Who controls USYC 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.
Powers
Every privileged power we found, normalized to canonical power types.
- UpgradeCriticalRedUSYC token ownerEOA0x13FF…2dD6
None · via
YieldCoin.upgradeTo, upgradeToAndCall · _assertOwner() (owner()) - UpgradeCriticalRedEntitlements ownerEOA0x8fB0…2fC0
None · via
Entitlements.upgradeTo, upgradeToAndCall · _assertOwner() (owner()) - UpgradeCriticalRedTeller ownerEOA0x8b1A…a55b
None · via
Teller.upgradeTo, upgradeToAndCall · _assertOwner() (owner()) - MintCriticalRedTokenManagerProxy (bridge, likely Axelar ITS)Unknown contract0x6A41…C378
None · via
YieldCoin.mint · minterAllowance > 0 - MintCriticalRedUnlimited minter, no roles (identity unknown)EOA0x85fB…d011
None · via
YieldCoin.mint · minterAllowance > 0 - MintCriticalRedUSYC PriceReporterPriceReporter0x9fde…23D7
→ EOA
None · via
YieldCoin.mint · minterAllowance > 0 - MintCriticalRedUSYC fund admin (role 255; issuer says MPC)EOA0xDbE0…800D
None · via
YieldCoin.mint · minterAllowance > 0 - MintCriticalRedUSYC fund admin (role 255; issuer says MPC)EOA0xDbE0…800D
None · via
YieldCoin.setMinterAllowance, incrementMinterAllowance, decrementMinterAllowance · creates minters (Entitlements capability, role 20) - MintCriticalRedUSYC Teller (USDC)Teller0xeE35…30e6
→ EOA
None · via
YieldCoin.mint · minterAllowance > 0 - MintCriticalRedCircle CCTP TokenMinterV2TokenMinterV20xfd78…D002
→ EOA
None · via
YieldCoin.mint · minterAllowance > 0 - Force-transferCriticalRedUSYC fund admin (role 255; issuer says MPC)EOA0xDbE0…800D
None · via
YieldCoin.transferFrom · fund-admin branch skips allowance and allowlist (role 255) - Burn from holderCriticalRedTokenManagerProxy (bridge, likely Axelar ITS)Unknown contract0x6A41…C378
None · via
YieldCoin.burn, burnFor · minterAllowance > 0 - Burn from holderCriticalRedUnlimited minter, no roles (identity unknown)EOA0x85fB…d011
None · via
YieldCoin.burn, burnFor · minterAllowance > 0 - Burn from holderCriticalRedUSYC PriceReporterPriceReporter0x9fde…23D7
→ EOA
None · via
YieldCoin.burn, burnFor · minterAllowance > 0 - Burn from holderCriticalRedUSYC fund admin (role 255; issuer says MPC)EOA0xDbE0…800D
None · via
YieldCoin.burn, burnFor · minterAllowance > 0 - Burn from holderCriticalRedUSYC Teller (USDC)Teller0xeE35…30e6
→ EOA
None · via
YieldCoin.burn, burnFor · minterAllowance > 0 - Burn from holderCriticalRedCircle CCTP TokenMinterV2TokenMinterV20xfd78…D002
→ EOA
None · via
YieldCoin.burn, burnFor · minterAllowance > 0 - Set priceCriticalRedOracle owner (nonce 0)EOA0x1DE1…9E98
None · via
GenericNextPriceAggregator.upgradeTo, upgradeToAndCall · onlyOwner (owner()) - Set priceCriticalRedUSYC PriceReporterPriceReporter0x9fde…23D7
→ EOA
None · via
GenericNextPriceAggregator.transmit, setNextPrice · msg.sender == reporter() - Set priceCriticalRedPriceReporter ownerEOA0x0a18…9f5a
None · via
PriceReporter.upgradeTo, upgradeToAndCall · _assertOwner() (owner()) - Set priceCriticalRedUSYC fund admin (role 255; issuer says MPC)EOA0xDbE0…800D
None · via
PriceReporter.setFeeSchedule, setTokenDetails, transmit +2 more · _assertFundAdmin() (fund admin, role 255) - Set priceCriticalRedUSYC fund admin (role 255; issuer says MPC)EOA0xDbE0…800D
None · via
Teller.setOracle · _assertFundAdmin() (fund admin, role 255) - Grant rolesCriticalRedUSYC token ownerEOA0x13FF…2dD6
None · via
YieldCoin.transferOwnership · _assertOwner() (owner()) - Grant rolesCriticalRedOracle owner (nonce 0)EOA0x1DE1…9E98
None · via
GenericNextPriceAggregator.transferOwnership · onlyOwner (owner()) - Grant rolesCriticalRedEntitlements ownerEOA0x8fB0…2fC0
None · via
Entitlements.setUserRole, setUserRoleBatch, setRoleCapability · owner() (role 255 grants) - Grant rolesCriticalRedEntitlements ownerEOA0x8fB0…2fC0
None · via
Entitlements.transferOwnership · _assertOwner() (owner()) - Grant rolesCriticalRedPriceReporter ownerEOA0x0a18…9f5a
None · via
PriceReporter.transferOwnership · _assertOwner() (owner()) - Grant rolesCriticalRedTeller ownerEOA0x8b1A…a55b
None · via
Teller.transferOwnership · _assertOwner() (owner()) - PauseHighYellowEntitlements ownerEOA0x8fB0…2fC0
None · via
Entitlements.unpause · owner() - PauseHighYellowUSYC fund admin (role 255; issuer says MPC)EOA0xDbE0…800D
None · via
Entitlements.pause · Entitlements capability, role 255 (blocks every transfer and redemption) - Set complianceHighYellowUSYC fund admin (role 255; issuer says MPC)EOA0xDbE0…800D
None · via
Entitlements.setPublicCapability · Entitlements capability, role 255 - Set complianceHighYellowUSYC fund admin (role 255; issuer says MPC)EOA0xDbE0…800D
None · via
Entitlements.setRoleCapability · Entitlements capability, role 255 - Set complianceHighYellowUSYC fund admin (role 255; issuer says MPC)EOA0xDbE0…800D
None · via
Entitlements.setUserRole, setUserRoleBatch · Entitlements capability, role 255
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,723 · 13 Oct 2026 · tool discovery-0.2.0 · View raw JSON on GitHub ↗
Who controls USYC 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.
Powers
Every privileged power we found, normalized to canonical power types.
- UpgradeCriticalRedBSC Entitlements ownerEOA0x2D83…0782
None · via
Entitlements.upgradeToAndCall · onlyOwner (owner()) - UpgradeCriticalRedUSYC BSC token ownerEOA0xcd63…F70E
None · via
USYCSatellite.upgradeTo, upgradeToAndCall · onlyOwner (owner()) - MintCriticalRedUnlimited minter, no roles (identity unknown)EOA0x85fB…d011
None · via
USYCSatellite.mint · minterAllowance > 0 - MintCriticalRedCircle CCTP TokenMinterV2TokenMinterV20xfd78…D002
→ EOA
None · via
USYCSatellite.mint · minterAllowance > 0 - Burn from holderCriticalRedUnlimited minter, no roles (identity unknown)EOA0x85fB…d011
None · via
USYCSatellite.burn · minterAllowance > 0 - Burn from holderCriticalRedCircle CCTP TokenMinterV2TokenMinterV20xfd78…D002
→ EOA
None · via
USYCSatellite.burn · minterAllowance > 0 - Grant rolesCriticalRedBSC Entitlements ownerEOA0x2D83…0782
None · via
Entitlements.setUserRole, setUserRoleBatch, setRoleCapability · owner() (role 255 grants) - Grant rolesCriticalRedBSC Entitlements ownerEOA0x2D83…0782
None · via
Entitlements.transferOwnership · _assertOwner() (owner()) - Grant rolesCriticalRedUSYC BSC token ownerEOA0xcd63…F70E
None · via
USYCSatellite.transferOwnership · onlyOwner (owner()) - PauseHighYellowBSC Entitlements ownerEOA0x2D83…0782
None · via
Entitlements.unpause · owner() - Set complianceHighYellowUSYC fund admin (role 255; issuer says MPC)EOA0xDbE0…800D
None · via
Entitlements.setRoleCapability · Entitlements capability, role 13 - Set complianceHighYellowUSYC fund admin (role 255; issuer says MPC)EOA0xDbE0…800D
None · via
Entitlements.setUserRole, setUserRoleBatch · Entitlements capability, role 13
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,400,715 · 13 Oct 2026 · tool discovery-0.2.0 · View raw JSON on GitHub ↗