My Name Tag:
Not Available, login to update
[ Download CSV Export ]
Contract Name:
RomeAuthority
Compiler Version
v0.7.5+commit.eb77ed08
Optimization Enabled:
Yes with 9999 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity 0.7.5; import "./interfaces/IRomeAuthority.sol"; import "./types/RomeAccessControlled.sol"; contract RomeAuthority is IRomeAuthority, RomeAccessControlled { /* ========== STATE VARIABLES ========== */ address public override governor; address public override guardian; address public override policy; address public override vault; address public newGovernor; address public newGuardian; address public newPolicy; address public newVault; /* ========== Constructor ========== */ constructor( address _governor, address _guardian, address _policy, address _vault ) RomeAccessControlled( IRomeAuthority(address(this)) ) { governor = _governor; emit GovernorPushed(address(0), governor, true); guardian = _guardian; emit GuardianPushed(address(0), guardian, true); policy = _policy; emit PolicyPushed(address(0), policy, true); vault = _vault; emit VaultPushed(address(0), vault, true); } /* ========== GOV ONLY ========== */ function pushGovernor(address _newGovernor, bool _effectiveImmediately) external onlyGovernor { if( _effectiveImmediately ) governor = _newGovernor; newGovernor = _newGovernor; emit GovernorPushed(governor, newGovernor, _effectiveImmediately); } function pushGuardian(address _newGuardian, bool _effectiveImmediately) external onlyGovernor { if( _effectiveImmediately ) guardian = _newGuardian; newGuardian = _newGuardian; emit GuardianPushed(guardian, newGuardian, _effectiveImmediately); } function pushPolicy(address _newPolicy, bool _effectiveImmediately) external onlyGovernor { if( _effectiveImmediately ) policy = _newPolicy; newPolicy = _newPolicy; emit PolicyPushed(policy, newPolicy, _effectiveImmediately); } function pushVault(address _newVault, bool _effectiveImmediately) external onlyGovernor { if( _effectiveImmediately ) vault = _newVault; newVault = _newVault; emit VaultPushed(vault, newVault, _effectiveImmediately); } /* ========== PENDING ROLE ONLY ========== */ function pullGovernor() external { require(msg.sender == newGovernor, "!newGovernor"); emit GovernorPulled(governor, newGovernor); governor = newGovernor; } function pullGuardian() external { require(msg.sender == newGuardian, "!newGuard"); emit GuardianPulled(guardian, newGuardian); guardian = newGuardian; } function pullPolicy() external { require(msg.sender == newPolicy, "!newPolicy"); emit PolicyPulled(policy, newPolicy); policy = newPolicy; } function pullVault() external { require(msg.sender == newVault, "!newVault"); emit VaultPulled(vault, newVault); vault = newVault; } }
// SPDX-License-Identifier: AGPL-3.0-or-later pragma solidity >=0.7.5; interface IRomeAuthority { /* ========== EVENTS ========== */ event GovernorPushed(address indexed from, address indexed to, bool _effectiveImmediately); event GuardianPushed(address indexed from, address indexed to, bool _effectiveImmediately); event PolicyPushed(address indexed from, address indexed to, bool _effectiveImmediately); event VaultPushed(address indexed from, address indexed to, bool _effectiveImmediately); event GovernorPulled(address indexed from, address indexed to); event GuardianPulled(address indexed from, address indexed to); event PolicyPulled(address indexed from, address indexed to); event VaultPulled(address indexed from, address indexed to); /* ========== VIEW ========== */ function governor() external view returns (address); function guardian() external view returns (address); function policy() external view returns (address); function vault() external view returns (address); }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.7.5; import "../interfaces/IRomeAuthority.sol"; abstract contract RomeAccessControlled { /* ========== EVENTS ========== */ event AuthorityUpdated(IRomeAuthority indexed authority); string UNAUTHORIZED = "UNAUTHORIZED"; // save gas /* ========== STATE VARIABLES ========== */ IRomeAuthority public authority; /* ========== Constructor ========== */ constructor(IRomeAuthority _authority) { authority = _authority; emit AuthorityUpdated(_authority); } /* ========== MODIFIERS ========== */ modifier onlyGovernor() { require(msg.sender == authority.governor(), UNAUTHORIZED); _; } modifier onlyGuardian() { require(msg.sender == authority.guardian(), UNAUTHORIZED); _; } modifier onlyPolicy() { require(msg.sender == authority.policy(), UNAUTHORIZED); _; } modifier onlyVault() { require(msg.sender == authority.vault(), UNAUTHORIZED); _; } /* ========== GOV ONLY ========== */ function setAuthority(IRomeAuthority _newAuthority) external onlyGovernor { authority = _newAuthority; emit AuthorityUpdated(_newAuthority); } }
{ "optimizer": { "enabled": true, "runs": 9999 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
[{"inputs":[{"internalType":"address","name":"_governor","type":"address"},{"internalType":"address","name":"_guardian","type":"address"},{"internalType":"address","name":"_policy","type":"address"},{"internalType":"address","name":"_vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"contract IRomeAuthority","name":"authority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"GovernorPulled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bool","name":"_effectiveImmediately","type":"bool"}],"name":"GovernorPushed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"GuardianPulled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bool","name":"_effectiveImmediately","type":"bool"}],"name":"GuardianPushed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"PolicyPulled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bool","name":"_effectiveImmediately","type":"bool"}],"name":"PolicyPushed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"}],"name":"VaultPulled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"bool","name":"_effectiveImmediately","type":"bool"}],"name":"VaultPushed","type":"event"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract IRomeAuthority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"governor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newGovernor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newGuardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newPolicy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"newVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"policy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pullGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pullGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pullPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pullVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newGovernor","type":"address"},{"internalType":"bool","name":"_effectiveImmediately","type":"bool"}],"name":"pushGovernor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newGuardian","type":"address"},{"internalType":"bool","name":"_effectiveImmediately","type":"bool"}],"name":"pushGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newPolicy","type":"address"},{"internalType":"bool","name":"_effectiveImmediately","type":"bool"}],"name":"pushPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newVault","type":"address"},{"internalType":"bool","name":"_effectiveImmediately","type":"bool"}],"name":"pushVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IRomeAuthority","name":"_newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
60c0604052600c60808190526b15539055551213d49256915160a21b60a09081526200002f916000919062000248565b503480156200003d57600080fd5b50604051620012d6380380620012d6833981810160405260808110156200006357600080fd5b5080516020820151604080840151606090940151600180546001600160a01b0319163090811790915591519394929390919081907f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad90600090a250600280546001600160a01b038087166001600160a01b031990921691909117918290556040805160018152905192909116916000917f4f337dcbb2512f18373c1f72d990a2f0a6ee5024b04007c52afd01eb73374a89919081900360200190a3600380546001600160a01b038086166001600160a01b031990921691909117918290556040805160018152905192909116916000917fde655975891e8f09671597b37bd4d663bcc5c21dc6d7641b33cdf85fbe15d08b919081900360200190a3600480546001600160a01b038085166001600160a01b031990921691909117918290556040805160018152905192909116916000917f90a5902a45c24aae553d5aff384ca16d6560f08d74c9784a4fbd2796d9e13f2b919081900360200190a3600580546001600160a01b038084166001600160a01b031990921691909117918290556040805160018152905192909116916000917f05a80f5053574d6a62733e1692e8cbcfaf927dc82df0a7267ea2e489a7cc18ff919081900360200190a350505050620002f4565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002805760008555620002cb565b82601f106200029b57805160ff1916838001178555620002cb565b82800160010185558215620002cb579182015b82811115620002cb578251825591602001919060010190620002ae565b50620002d9929150620002dd565b5090565b5b80821115620002d95760008155600101620002de565b610fd280620003046000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80635beede08116100b25780638fd2057711610081578063bf7e214f11610066578063bf7e214f14610287578063d8a042121461028f578063fbfa77cf1461029757610136565b80638fd2057714610277578063be11f1dd1461027f57610136565b80635beede08146102135780636fe72c141461021b5780637a9e5e4b1461024957806388aaf0c81461026f57610136565b8063215e92bc11610109578063452a9320116100ee578063452a9320146101af57806352759694146101b757806354e3d703146101e557610136565b8063215e92bc1461019f5780633bf90c28146101a757610136565b80630505c8c91461013b5780630c340a241461015f57806319859847146101675780631afe87141461016f575b600080fd5b61014361029f565b604080516001600160a01b039092168252519081900360200190f35b6101436102ae565b6101436102bd565b61019d6004803603604081101561018557600080fd5b506001600160a01b03813516906020013515156102cc565b005b61019d6104c7565b6101436105bb565b6101436105ca565b61019d600480360360408110156101cd57600080fd5b506001600160a01b03813516906020013515156105d9565b61019d600480360360408110156101fb57600080fd5b506001600160a01b038135169060200135151561079a565b61019d61095b565b61019d6004803603604081101561023157600080fd5b506001600160a01b0381351690602001351515610a4f565b61019d6004803603602081101561025f57600080fd5b50356001600160a01b0316610c10565b610143610d78565b610143610d87565b61019d610d96565b610143610e8a565b61019d610e99565b610143610f8d565b6004546001600160a01b031681565b6002546001600160a01b031681565b6007546001600160a01b031681565b600160009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561031a57600080fd5b505afa15801561032e573d6000803e3d6000fd5b505050506040513d602081101561034457600080fd5b50516000906001600160a01b0316331461040b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156103fc5780601f106103d1576101008083540402835291602001916103fc565b820191906000526020600020905b8154815290600101906020018083116103df57829003601f168201915b50509250505060405180910390fd5b50801561044657600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384161790555b600780546001600160a01b038085167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179182905560035460408051851515815290519383169391909216917fde655975891e8f09671597b37bd4d663bcc5c21dc6d7641b33cdf85fbe15d08b919081900360200190a35050565b6009546001600160a01b0316331461054057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f216e65775661756c740000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6009546005546040516001600160a01b0392831692909116907f3d08e01e3b8340be6ca709db7a9321448661a1f490da4d7f3eb03d84fe73095390600090a3600954600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055565b6008546001600160a01b031681565b6003546001600160a01b031681565b600160009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b15801561062757600080fd5b505afa15801561063b573d6000803e3d6000fd5b505050506040513d602081101561065157600080fd5b50516000906001600160a01b031633146106de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156103fc5780601f106103d1576101008083540402835291602001916103fc565b50801561071957600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384161790555b600680546001600160a01b038085167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179182905560025460408051851515815290519383169391909216917f4f337dcbb2512f18373c1f72d990a2f0a6ee5024b04007c52afd01eb73374a89919081900360200190a35050565b600160009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b1580156107e857600080fd5b505afa1580156107fc573d6000803e3d6000fd5b505050506040513d602081101561081257600080fd5b50516000906001600160a01b0316331461089f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156103fc5780601f106103d1576101008083540402835291602001916103fc565b5080156108da57600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384161790555b600880546001600160a01b038085167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179182905560045460408051851515815290519383169391909216917f90a5902a45c24aae553d5aff384ca16d6560f08d74c9784a4fbd2796d9e13f2b919081900360200190a35050565b6008546001600160a01b031633146109d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f216e6577506f6c69637900000000000000000000000000000000000000000000604482015290519081900360640190fd5b6008546004546040516001600160a01b0392831692909116907f64d2fa522b403ca222efff0c7ad07d2ef45472a45e5770918bdfa9a2845d29a890600090a3600854600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055565b600160009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610a9d57600080fd5b505afa158015610ab1573d6000803e3d6000fd5b505050506040513d6020811015610ac757600080fd5b50516000906001600160a01b03163314610b54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156103fc5780601f106103d1576101008083540402835291602001916103fc565b508015610b8f57600580547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0384161790555b600980546001600160a01b038085167fffffffffffffffffffffffff0000000000000000000000000000000000000000909216919091179182905560055460408051851515815290519383169391909216917f05a80f5053574d6a62733e1692e8cbcfaf927dc82df0a7267ea2e489a7cc18ff919081900360200190a35050565b600160009054906101000a90046001600160a01b03166001600160a01b0316630c340a246040518163ffffffff1660e01b815260040160206040518083038186803b158015610c5e57600080fd5b505afa158015610c72573d6000803e3d6000fd5b505050506040513d6020811015610c8857600080fd5b50516000906001600160a01b03163314610d15576040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482019081528254600260001961010060018416150201909116046024830181905290918291604490910190849080156103fc5780601f106103d1576101008083540402835291602001916103fc565b50600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040517f2f658b440c35314f52658ea8a740e05b284cdc84dc9ae01e891f21b8933e7cad90600090a250565b6009546001600160a01b031681565b6006546001600160a01b031681565b6007546001600160a01b03163314610e0f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f216e657747756172640000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6007546003546040516001600160a01b0392831692909116907f0960fb9900fb8096216606c4f7fc2fce5d08cc0c82da55cec8619b66b523848190600090a3600754600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055565b6001546001600160a01b031681565b6006546001600160a01b03163314610f1257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f216e6577476f7665726e6f720000000000000000000000000000000000000000604482015290519081900360640190fd5b6006546002546040516001600160a01b0392831692909116907fffd6fed33fe8ec1016718bdd5d04ae6fecd9aba0da6578807daaaa7fc3d1682690600090a3600654600280547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909216919091179055565b6005546001600160a01b03168156fea2646970667358221220a33e88bd9811578012ad7813bdb3873418713dcd698aa1f936bec475f2a3f14d64736f6c634300070500330000000000000000000000007c21291d033e88bd6a22ba8f3d0716bdd47c9f2e000000000000000000000000d4a7febd52efda82d6f8ace24908ae0aa5b4f95600000000000000000000000037ba0a3a0fd8a190a8d661bb681454e01a937a620000000000000000000000000000000000000000000000000000000000000000
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007c21291d033e88bd6a22ba8f3d0716bdd47c9f2e000000000000000000000000d4a7febd52efda82d6f8ace24908ae0aa5b4f95600000000000000000000000037ba0a3a0fd8a190a8d661bb681454e01a937a620000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _governor (address): 0x7c21291d033e88bd6a22ba8f3d0716bdd47c9f2e
Arg [1] : _guardian (address): 0xd4a7febd52efda82d6f8ace24908ae0aa5b4f956
Arg [2] : _policy (address): 0x37ba0a3a0fd8a190a8d661bb681454e01a937a62
Arg [3] : _vault (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000007c21291d033e88bd6a22ba8f3d0716bdd47c9f2e
Arg [1] : 000000000000000000000000d4a7febd52efda82d6f8ace24908ae0aa5b4f956
Arg [2] : 00000000000000000000000037ba0a3a0fd8a190a8d661bb681454e01a937a62
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Age | Block | Fee Address | BC Fee Address | Voting Power | Jailed | Incoming |
---|
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.