{
"ethereum": {
"roles": [],
"actors": [
{
"id": "Voting",
"name": "Voting",
"accounts": [
{
"address": "eth:0xc480F68A3dcC3EdD82134FAB45C14A0FcF1dA3CC",
"type": "Contract",
"isVerified": true,
"name": "0xc480…A3CC",
"url": "https://etherscan.io/address/0xc480F68A3dcC3EdD82134FAB45C14A0FcF1dA3CC"
}
],
"chain": "ethereum",
"description": "Token-weighted Railgun governance contract. Proposals must be sponsored, voted through quorum, and then executed through the Delegator; if you trust this contract, you trust RAIL voting power governed by these rules to change connected Railgun components.\n* Can upgrade **with no delay**\n * GovernorRewards [via: Delegator → ProxyAdmin]\n * LegacySweeper [via: Delegator]\n * Treasury [via: Delegator → ProxyAdmin]\n * RailgunSmartWallet [via: Delegator → ProxyAdmin]\n* Can interact with VerificationKeySetter_64DA\n * switch the VKeySetter into COMMITTING so its owner can push stored verification keys to the verifier [via: Delegator]\n* Can interact with VerificationKeySetter_9086\n * switch the VKeySetter into COMMITTING so its owner can push stored verification keys to the verifier [via: Delegator]\n* Can interact with GovernorRewards\n * add or remove allowed reward safety vectors [via: Delegator]\n * add or remove reward tokens from the distribution set [via: Delegator]\n * change the per-interval reward rate [via: Delegator]\n * pause, unpause, transfer proxy ownership, or upgrade the GovernorRewards implementation [via: Delegator → ProxyAdmin]\n* Can interact with LegacySweeper\n * pause, unpause, transfer proxy ownership, or upgrade the legacy Sweeper implementation [via: Delegator]\n* Can interact with Delegator\n * grant or revoke delegated caller permissions and transfer ownership of the Delegator \n* Can interact with RailToken\n * mint additional RAIL up to the hard cap and transfer token ownership [via: Delegator]\n* Can interact with Treasury\n * grant or revoke treasury roles, including who can move ETH and ERC20s out of the treasury [via: Delegator]\n * pause, unpause, transfer proxy ownership, or upgrade the treasury implementation [via: Delegator → ProxyAdmin]\n * transfer ETH or ERC20s out of the treasury [via: Delegator → ProxyAdmin → GovernorRewards - or Delegator → LegacySweeper - or Delegator]\n* Can interact with RailgunSmartWallet\n * add or remove allowed SNARK safety vectors [via: Delegator]\n * add or remove tokens from the shielding blocklist [via: Delegator]\n * change the shield, unshield, and NFT fee schedule [via: Delegator]\n * change the treasury that receives protocol fees [via: Delegator]\n * pause, unpause, transfer proxy ownership, or upgrade the Railgun smart wallet implementation [via: Delegator → ProxyAdmin]",
"discoveryDrivenData": true
},
{
"id": "SweeperProxyOwner",
"name": "SweeperProxyOwner",
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0x76EB574EFF49FB64DE6f7F2854952B05B5E24624",
"type": "EOA",
"isVerified": true,
"name": "0x76EB…4624",
"url": "https://etherscan.io/address/0x76EB574EFF49FB64DE6f7F2854952B05B5E24624"
}
],
"chain": "ethereum",
"description": "* Can upgrade **with no delay**\n * GovernorRewardsSweeper \n* Can interact with GovernorRewardsSweeper\n * pause, unpause, transfer proxy ownership, or upgrade the Sweeper implementation \n* Can interact with VerificationKeySetter_9086\n * stage replacement verification keys and manage the helper's local SETTING and WAITING states \n* Can interact with Delegator\n * update the Railgun smart wallet SNARK verifying keys through the Delegator [via: VerificationKeySetter_9086]",
"description": "* Can upgrade **with no delay**\n * GovernorRewardsSweeper \n* Can interact with GovernorRewardsSweeper\n * pause, unpause, transfer proxy ownership, or upgrade the Sweeper implementation \n* Can interact with VerificationKeySetter_9086\n * stage replacement verification keys and manage the helper's local SETTING and WAITING states ",
"discoveryDrivenData": true
},
{
"id": "VKeySetterOwner_bbc2",
"name": "VKeySetterOwner_bbc2",
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "eth:0xbbc2fB58643235AFfBF1f0CDd27Bc6E6CFBBa4e2",
"type": "EOA",
"isVerified": true,
"name": "0xbbc2…a4e2",
"url": "https://etherscan.io/address/0xbbc2fB58643235AFfBF1f0CDd27Bc6E6CFBBa4e2"
}
],
"chain": "ethereum",
"description": "* Can interact with VerificationKeySetter_64DA\n * stage replacement verification keys and manage the helper's local SETTING and WAITING states \n* Can interact with Delegator\n * update the Railgun smart wallet SNARK verifying keys through the Delegator [via: VerificationKeySetter_64DA]",
"description": "* Can interact with VerificationKeySetter_64DA\n * stage replacement verification keys and manage the helper's local SETTING and WAITING states ",
"discoveryDrivenData": true
}
]
}
}
contracts+13-13
{
"addresses": {
"ethereum": [
{
"name": "Treasury",
"isVerified": true,
"address": "eth:0xE8A8B458BcD1Ececc6b6b58F80929b29cCecFF40",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x4F8E20f55f879beE7Bc010Bd6bD2138B34aC65c8"
],
"implementations": [
"eth:0xA092c7577354EA82a6c7e55B423c3DD80f0dF255"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "Upgradeable treasury that collects Railgun fees, and can release ETH or ERC20s only to current TRANSFER_ROLE members. If you trust this contract, you trust its role admins to decide who can move treasury assets and its proxy admin to change the treasury logic.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Voting\n * **defaultAdminRoleMembers**: Delegator; ultimately Voting\n * **transferRoleMembers**: A4f2OneOffPayout, A4f2StreamPayout, Ae8AOneOffPayout, Ae8AStreamPayout, Beneficiary5a02OneOffPayout, Beneficiary5a02StreamPayout, Delegator, GovernorRewards, LegacySweeper; ultimately Voting",
"description": "Upgradeable treasury that collects Railgun fees, and can release ETH or ERC20s only to current TRANSFER_ROLE members. If you trust this contract, you trust its role admins to decide who can move treasury assets and its proxy admin to change the treasury logic.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Voting\n * **defaultAdminRoleMembers**: Delegator; ultimately Voting\n * **transferRoleMembers**: Delegator, GovernorRewards, IntervalPayouts, LegacySweeper; ultimately Voting",
"upgradableBy": [
{
"name": "Voting",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xE8A8B458BcD1Ececc6b6b58F80929b29cCecFF40#code"
},
{
"name": "RailgunSmartWallet",
"isVerified": true,
"address": "eth:0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x4F8E20f55f879beE7Bc010Bd6bD2138B34aC65c8"
],
"implementations": [
"eth:0xB4F2d77bD12c6b548Ae398244d7FAD4ABCE4D89b"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "Upgradeable privacy pool contract that accepts shielded deposits, verifies private transactions and unshields, and maintains the commitment tree. If you trust this contract, you trust its owner to change fees, treasury routing, token compatibility, and SNARK safety vectors, and its proxy admin to pause or upgrade the logic.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Voting\n * **owner**: Delegator; ultimately Voting",
"upgradableBy": [
{
"name": "Voting",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xFA7093CDD9EE6932B4eb2c9e1cde7CE00B1FA4b9#code"
},
{
"name": "Getters",
"isVerified": true,
"address": "eth:0xe90275239D734899e8D94646139213F6F97bEB0E",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Read-only helper contract that batches governance snapshot and reward-view calls. It does not custody funds or hold privileged roles.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xe90275239D734899e8D94646139213F6F97bEB0E#code"
},
{
"name": "Ae8AStreamPayout",
"name": "IntervalPayouts",
"isVerified": true,
"address": "eth:0x29905A43aA3865D0D7F2743dDE63754B4aa9CA11",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable payout stream that can pull a fixed amount of a configured asset from the Railgun treasury to a fixed beneficiary whenever the next interval is due. It has no admin, but the treasury's TRANSFER_ROLE assignment allows it to execute the programmed payout schedule.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x29905A43aA3865D0D7F2743dDE63754B4aa9CA11#code"
},
{
"name": "GovernorRewardsSweeper",
"isVerified": true,
"address": "eth:0x2eCa05b128bF5cbd5A73CC4BB625B51131FF119B",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x76EB574EFF49FB64DE6f7F2854952B05B5E24624"
],
"implementations": [
"eth:0x2ea76A3c4795DD1a5d206B285fD21b2Fb83EAf1a"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "Upgradeable helper that forwards all ETH or ERC20 balances it holds to a fixed receiver. If you trust this contract, you trust its proxy admin to upgrade, pause, or retarget the sweep behavior.\n* Roles:\n * **admin**: SweeperProxyOwner",
"description": "Upgradeable helper that forwards all ETH or ERC20 balances it holds to a fixed receiver. If you trust this contract, you trust its proxy admin to upgrade, pause, or retarget the sweep behavior.\n* Roles:\n * **admin**: EOA 1",
"upgradableBy": [
{
"id": "SweeperProxyOwner",
"name": "SweeperProxyOwner",
"id": "EOA-1",
"name": "EOA 1",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x2eCa05b128bF5cbd5A73CC4BB625B51131FF119B#code"
},
{
"name": "ProxyAdmin",
"isVerified": true,
"address": "eth:0x4F8E20f55f879beE7Bc010Bd6bD2138B34aC65c8",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Admin interface for Railgun's pausable upgradeable proxies. It does not hold funds, but its controller can operate every proxy attached to it.\n* Roles:\n * **owner**: Delegator",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x4F8E20f55f879beE7Bc010Bd6bD2138B34aC65c8#code"
},
{
"name": "VerificationKeySetter_64DA",
"isVerified": true,
"address": "eth:0x64DA0892E8E24fECa6Eb5E3D8cbf2D9b6Fbe7598",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Auxiliary verifier-key staging contract. Its owner stores replacement verification keys locally and, once Railgun governance switches the contract into COMMITTING state, can forward those keys to the Railgun smart wallet verifier through the Delegator. If you trust this contract, you trust its owner to stage and commit verifier-key changes and Railgun governance to authorize the commit phase.\n* Roles:\n * **delegator**: Delegator; ultimately Voting\n * **owner**: VKeySetterOwner_bbc2",
"description": "Auxiliary verifier-key staging contract. Its owner stores replacement verification keys locally and, once Railgun governance switches the contract into COMMITTING state, can forward those keys to the Railgun smart wallet verifier through the Delegator. If you trust this contract, you trust its owner to stage and commit verifier-key changes and Railgun governance to authorize the commit phase.\n* Roles:\n * **delegator**: Delegator; ultimately Voting\n * **owner**: EOA 2",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x64DA0892E8E24fECa6Eb5E3D8cbf2D9b6Fbe7598#code"
},
{
"name": "Beneficiary5a02OneOffPayout",
"name": "IntervalPayouts",
"isVerified": true,
"address": "eth:0x7673e2E62435D25EDBcb58fD0d88c4C95806b10F",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable payout stream that can pull a fixed amount of a configured asset from the Railgun treasury to a fixed beneficiary whenever the next interval is due. It has no admin, but the treasury's TRANSFER_ROLE assignment allows it to execute the programmed payout schedule.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x7673e2E62435D25EDBcb58fD0d88c4C95806b10F#code"
},
{
"name": "Ae8AOneOffPayout",
"name": "IntervalPayouts",
"isVerified": true,
"address": "eth:0x859E0C1790b8a721F4943742603cDB685A73BA5D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable payout stream that can pull a fixed amount of a configured asset from the Railgun treasury to a fixed beneficiary whenever the next interval is due. It has no admin, but the treasury's TRANSFER_ROLE assignment allows it to execute the programmed payout schedule.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x859E0C1790b8a721F4943742603cDB685A73BA5D#code"
},
{
"name": "VerificationKeySetter_9086",
"isVerified": true,
"address": "eth:0x9086aFC6FC88667d4031Cabd556AfDD0E3903B46",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Auxiliary verifier-key staging contract. Its owner stores replacement verification keys locally and, once Railgun governance switches the contract into COMMITTING state, can forward those keys to the Railgun smart wallet verifier through the Delegator. If you trust this contract, you trust its owner to stage and commit verifier-key changes and Railgun governance to authorize the commit phase.\n* Roles:\n * **delegator**: Delegator; ultimately Voting\n * **owner**: SweeperProxyOwner",
"description": "Auxiliary verifier-key staging contract. Its owner stores replacement verification keys locally and, once Railgun governance switches the contract into COMMITTING state, can forward those keys to the Railgun smart wallet verifier through the Delegator. If you trust this contract, you trust its owner to stage and commit verifier-key changes and Railgun governance to authorize the commit phase.\n* Roles:\n * **delegator**: Delegator; ultimately Voting\n * **owner**: EOA 1",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0x9086aFC6FC88667d4031Cabd556AfDD0E3903B46#code"
},
{
"name": "GovernorRewards",
"isVerified": true,
"address": "eth:0xA02782CE1bF85f56f8cC7C0E66e61299Ac75c86f",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x4F8E20f55f879beE7Bc010Bd6bD2138B34aC65c8"
],
"implementations": [
"eth:0xaF51CD5f71Ed88D6d1F65b575f1a8Ce3a78eC42b"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "Upgradeable reward distributor that pulls assets from the Railgun treasury and allocates them to stakers using snapshot voting power. If you trust this contract, you trust its owner to set reward parameters and tracked assets, and its proxy admin to pause or upgrade the logic.\n* Roles:\n * **admin**: ProxyAdmin; ultimately Voting\n * **owner**: Delegator; ultimately Voting",
"upgradableBy": [
{
"name": "Voting",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xA02782CE1bF85f56f8cC7C0E66e61299Ac75c86f#code"
},
{
"name": "LegacySweeper",
"isVerified": true,
"address": "eth:0xa353bC0454931Ac46fd90c8EF27f908Ab9E34686",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xB6d513f6222Ee92Fff975E901bd792E2513fB53B"
],
"implementations": [
"eth:0x9b1310BdCC19D172D0092240e33209a9156c8EE2"
]
},
"chain": "ethereum",
"pastUpgrades": [],
"description": "Older Railgun sweeper generation that still holds Treasury transfer rights. It is upgradeable and forwards balances to an immutable receiver, but this specific deployment does not expose the receiver getter cleanly through discovery.\n* Roles:\n * **admin**: Delegator; ultimately Voting",
"upgradableBy": [
{
"name": "Voting",
"delay": "no"
}
],
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xa353bC0454931Ac46fd90c8EF27f908Ab9E34686#code"
},
{
"name": "A4f2OneOffPayout",
"name": "IntervalPayouts",
"isVerified": true,
"address": "eth:0xa863262Bf5E97e8CFeC47a71402aC360C0983060",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable payout stream that can pull a fixed amount of a configured asset from the Railgun treasury to a fixed beneficiary whenever the next interval is due. It has no admin, but the treasury's TRANSFER_ROLE assignment allows it to execute the programmed payout schedule.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xa863262Bf5E97e8CFeC47a71402aC360C0983060#code"
},
{
"name": "Delegator",
"isVerified": true,
"address": "eth:0xB6d513f6222Ee92Fff975E901bd792E2513fB53B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Permission router owned by Railgun governance. If you trust this contract, you trust its owner and any currently delegated callers to execute privileged calls through it on connected Railgun components.\n* Roles:\n * **owner**: Voting\n * **verificationKeyDelegates**: VerificationKeySetter_64DA, VerificationKeySetter_9086; ultimately SweeperProxyOwner, VKeySetterOwner_bbc2",
"description": "Permission router owned by Railgun governance. If you trust this contract, you trust its owner and any currently delegated callers to execute privileged calls through it on connected Railgun components.\n* Roles:\n * **owner**: Voting\n * **verificationKeyDelegates**: VerificationKeySetter_64DA, VerificationKeySetter_9086",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xB6d513f6222Ee92Fff975E901bd792E2513fB53B#code"
},
{
"name": "A4f2StreamPayout",
"name": "IntervalPayouts",
"isVerified": true,
"address": "eth:0xCA9A2894e814305fAfc2BA83a70B34295b1DdE9D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable payout stream that can pull a fixed amount of a configured asset from the Railgun treasury to a fixed beneficiary whenever the next interval is due. It has no admin, but the treasury's TRANSFER_ROLE assignment allows it to execute the programmed payout schedule.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xCA9A2894e814305fAfc2BA83a70B34295b1DdE9D#code"
},
{
"name": "RailToken",
"isVerified": true,
"address": "eth:0xe76C6c83af64e4C60245D8C7dE953DF673a7A33D",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "RAIL governance token contract with a capped mint schedule and an early anti-bot transfer override. If you trust this contract, you trust its owner to mint additional RAIL up to the hard cap.\n* Roles:\n * **owner**: Delegator; ultimately Voting",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xe76C6c83af64e4C60245D8C7dE953DF673a7A33D#code"
},
{
"name": "Staking",
"isVerified": true,
"address": "eth:0xEE6A649Aa3766bD117e12C161726b693A1B2Ee20",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable RAIL staking contract that tracks delegated voting power, enforces a 30-day unstake delay, and snapshots balances for governance. It has no admin, but its parameters define the governance system's voting power.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xEE6A649Aa3766bD117e12C161726b693A1B2Ee20#code"
},
{
"name": "Beneficiary5a02StreamPayout",
"name": "IntervalPayouts",
"isVerified": true,
"address": "eth:0xf5F9d74FbFd04801DFf83425ff6C2002f60B921A",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Immutable payout stream that can pull a fixed amount of a configured asset from the Railgun treasury to a fixed beneficiary whenever the next interval is due. It has no admin, but the treasury's TRANSFER_ROLE assignment allows it to execute the programmed payout schedule.\n",
"discoveryDrivenData": true,
"url": "https://etherscan.io/address/0xf5F9d74FbFd04801DFf83425ff6C2002f60B921A#code"
}
]
},
"risks": []
}