Overview
ETH Balance
ETH Value
$0.00Multichain Info
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Set Admin | 5297925 | 79 days ago | IN | 0 ETH | 0 |
View more zero value Internal Transactions in Advanced View mode
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; import { Admin } from "contracts/base/Admin.sol"; import { TimelockAdmin } from "contracts/base/TimelockAdmin.sol"; error ConnectorNotRegistered(address target); error CustomRegistryAlreadyRegistered(); interface ICustomConnectorRegistry { function connectorOf( address target ) external view returns (address); } contract ConnectorRegistry is Admin, TimelockAdmin { event ConnectorChanged(address target, address connector); event CustomRegistryAdded(address registry); event CustomRegistryRemoved(address registry); error ConnectorAlreadySet(address target); error ConnectorNotSet(address target); error ArrayLengthMismatch(); ICustomConnectorRegistry[] public customRegistries; mapping(address target => address connector) private connectors_; constructor( address admin_, address timelockAdmin_ ) Admin(admin_) TimelockAdmin(timelockAdmin_) { } /// Admin functions /// @notice Update connector addresses for a batch of targets. /// @dev Controls which connector contracts are used for the specified /// targets. /// @custom:access Restricted to protocol admin. function setConnectors( address[] calldata targets, address[] calldata connectors ) external onlyAdmin { if (targets.length != connectors.length) { revert ArrayLengthMismatch(); } for (uint256 i; i != targets.length;) { if (connectors_[targets[i]] != address(0)) { revert ConnectorAlreadySet(targets[i]); } connectors_[targets[i]] = connectors[i]; emit ConnectorChanged(targets[i], connectors[i]); unchecked { ++i; } } } function updateConnectors( address[] calldata targets, address[] calldata connectors ) external onlyTimelockAdmin { if (targets.length != connectors.length) { revert ArrayLengthMismatch(); } for (uint256 i; i != targets.length;) { if (connectors_[targets[i]] == address(0)) { revert ConnectorNotSet(targets[i]); } connectors_[targets[i]] = connectors[i]; emit ConnectorChanged(targets[i], connectors[i]); unchecked { ++i; } } } /// @notice Append an address to the custom registries list. /// @custom:access Restricted to protocol admin. function addCustomRegistry( ICustomConnectorRegistry registry ) external onlyAdmin { if (isCustomRegistry(registry)) { revert CustomRegistryAlreadyRegistered(); } customRegistries.push(registry); emit CustomRegistryAdded(address(registry)); } /// @notice Replace an address in the custom registries list. /// @custom:access Restricted to protocol admin. function updateCustomRegistry( uint256 index, ICustomConnectorRegistry newRegistry ) external onlyTimelockAdmin { ICustomConnectorRegistry oldRegistry = customRegistries[index]; emit CustomRegistryRemoved(address(oldRegistry)); customRegistries[index] = newRegistry; if (address(newRegistry) != address(0)) { emit CustomRegistryAdded(address(newRegistry)); } } /// Public functions function connectorOf( address target ) external view returns (address) { address connector = _getConnector(target); if (connector != address(0)) { return connector; } revert ConnectorNotRegistered(target); } function hasConnector( address target ) external view returns (bool) { return _getConnector(target) != address(0); } function isCustomRegistry( ICustomConnectorRegistry registry ) public view returns (bool) { for (uint256 i; i != customRegistries.length;) { if (address(customRegistries[i]) == address(registry)) { return true; } unchecked { ++i; } } return false; } /// Internal functions function _getConnector( address target ) internal view returns (address) { address connector = connectors_[target]; if (connector != address(0)) { return connector; } uint256 length = customRegistries.length; for (uint256 i; i != length;) { if (address(customRegistries[i]) != address(0)) { (bool success, bytes memory data) = address(customRegistries[i]) .staticcall( abi.encodeWithSelector( ICustomConnectorRegistry.connectorOf.selector, target ) ); if (success && data.length == 32) { address _connector = abi.decode(data, (address)); if (_connector != address(0)) { return _connector; } } } unchecked { ++i; } } return address(0); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; /// @title Admin contract /// @author vfat.tools /// @notice Provides an administration mechanism allowing restricted functions abstract contract Admin { /// ERRORS /// /// @notice Thrown when the caller is not the admin error NotAdminError(); //0xb5c42b3b /// EVENTS /// /// @notice Emitted when a new admin is set /// @param oldAdmin Address of the old admin /// @param newAdmin Address of the new admin event AdminSet(address oldAdmin, address newAdmin); /// STORAGE /// /// @notice Address of the current admin address public admin; /// MODIFIERS /// /// @dev Restricts a function to the admin modifier onlyAdmin() { if (msg.sender != admin) revert NotAdminError(); _; } /// WRITE FUNCTIONS /// /// @param admin_ Address of the admin constructor( address admin_ ) { emit AdminSet(address(0), admin_); admin = admin_; } /// @notice Sets a new admin /// @param newAdmin Address of the new admin /// @custom:access Restricted to protocol admin. function setAdmin( address newAdmin ) external onlyAdmin { emit AdminSet(admin, newAdmin); admin = newAdmin; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.17; /// @title TimelockAdmin contract /// @author vfat.tools /// @notice Provides an timelockAdministration mechanism allowing restricted /// functions abstract contract TimelockAdmin { /// ERRORS /// /// @notice Thrown when the caller is not the timelockAdmin error NotTimelockAdminError(); /// EVENTS /// /// @notice Emitted when a new timelockAdmin is set /// @param oldTimelockAdmin Address of the old timelockAdmin /// @param newTimelockAdmin Address of the new timelockAdmin event TimelockAdminSet(address oldTimelockAdmin, address newTimelockAdmin); /// STORAGE /// /// @notice Address of the current timelockAdmin address public timelockAdmin; /// MODIFIERS /// /// @dev Restricts a function to the timelockAdmin modifier onlyTimelockAdmin() { if (msg.sender != timelockAdmin) revert NotTimelockAdminError(); _; } /// WRITE FUNCTIONS /// /// @param timelockAdmin_ Address of the timelockAdmin constructor( address timelockAdmin_ ) { emit TimelockAdminSet(timelockAdmin, timelockAdmin_); timelockAdmin = timelockAdmin_; } /// @notice Sets a new timelockAdmin /// @dev Can only be called by the current timelockAdmin /// @param newTimelockAdmin Address of the new timelockAdmin function setTimelockAdmin( address newTimelockAdmin ) external onlyTimelockAdmin { emit TimelockAdminSet(timelockAdmin, newTimelockAdmin); timelockAdmin = newTimelockAdmin; } }
{ "remappings": [ "solmate/=lib/solmate/src/", "@openzeppelin/=lib/openzeppelin-contracts/", "@morpho-blue/=lib/morpho-blue/src/", "ds-test/=lib/solmate/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "morpho-blue/=lib/morpho-blue/", "openzeppelin-contracts/=lib/openzeppelin-contracts/" ], "optimizer": { "enabled": true, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "paris", "viaIR": false }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"admin_","type":"address"},{"internalType":"address","name":"timelockAdmin_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ArrayLengthMismatch","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"ConnectorAlreadySet","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"ConnectorNotRegistered","type":"error"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"ConnectorNotSet","type":"error"},{"inputs":[],"name":"CustomRegistryAlreadyRegistered","type":"error"},{"inputs":[],"name":"NotAdminError","type":"error"},{"inputs":[],"name":"NotTimelockAdminError","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"address","name":"connector","type":"address"}],"name":"ConnectorChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"registry","type":"address"}],"name":"CustomRegistryAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"registry","type":"address"}],"name":"CustomRegistryRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTimelockAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newTimelockAdmin","type":"address"}],"name":"TimelockAdminSet","type":"event"},{"inputs":[{"internalType":"contract ICustomConnectorRegistry","name":"registry","type":"address"}],"name":"addCustomRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"connectorOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"customRegistries","outputs":[{"internalType":"contract ICustomConnectorRegistry","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"hasConnector","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract ICustomConnectorRegistry","name":"registry","type":"address"}],"name":"isCustomRegistry","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"address[]","name":"connectors","type":"address[]"}],"name":"setConnectors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTimelockAdmin","type":"address"}],"name":"setTimelockAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"timelockAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets","type":"address[]"},{"internalType":"address[]","name":"connectors","type":"address[]"}],"name":"updateConnectors","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"},{"internalType":"contract ICustomConnectorRegistry","name":"newRegistry","type":"address"}],"name":"updateCustomRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051610e98380380610e9883398101604081905261002f91610114565b60408051600081526001600160a01b0384166020820152829184917fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97910160405180910390a1600080546001600160a01b0319166001600160a01b0392831617905560015460408051918316825291831660208201527f6502ca129870a6ac685369c8428164757ede26f9a492bf9ae7eac4abc0c49fcf910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055506101479050565b80516001600160a01b038116811461010f57600080fd5b919050565b6000806040838503121561012757600080fd5b610130836100f8565b915061013e602084016100f8565b90509250929050565b610d42806101566000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063b10e0b6e11610071578063b10e0b6e1461015a578063b7c546631461016d578063bd7844d214610180578063c79aeaae14610193578063e506b6f3146101a6578063f851a440146101b957600080fd5b80633b44358d146100b95780633f7506bd146100e157806364ceb97a146100f6578063704b6c021461012157806375c38965146101345780637ac5f2d814610147575b600080fd5b6100cc6100c7366004610b85565b6101cc565b60405190151581526020015b60405180910390f35b6100f46100ef366004610bf5565b61022a565b005b600154610109906001600160a01b031681565b6040516001600160a01b0390911681526020016100d8565b6100f461012f366004610b85565b610442565b6100cc610142366004610b85565b6104d6565b6100f4610155366004610b85565b6104f3565b6100f4610168366004610bf5565b610587565b6100f461017b366004610b85565b610793565b61010961018e366004610c61565b610869565b6101096101a1366004610b85565b610893565b6100f46101b4366004610c7a565b6108da565b600054610109906001600160a01b031681565b6000805b600254811461022157826001600160a01b0316600282815481106101f6576101f6610caa565b6000918252602090912001546001600160a01b0316036102195750600192915050565b6001016101d0565b50600092915050565b6000546001600160a01b031633146102555760405163b5c42b3b60e01b815260040160405180910390fd5b8281146102755760405163512509d360e11b815260040160405180910390fd5b60005b80841461043b57600060038187878581811061029657610296610caa565b90506020020160208101906102ab9190610b85565b6001600160a01b039081168252602082019290925260400160002054161461031e578484828181106102df576102df610caa565b90506020020160208101906102f49190610b85565b60405163165c1bb160e21b81526001600160a01b0390911660048201526024015b60405180910390fd5b82828281811061033057610330610caa565b90506020020160208101906103459190610b85565b6003600087878581811061035b5761035b610caa565b90506020020160208101906103709190610b85565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b031916929091169190911790557f6095620bdb8c81d4448883574e9358ec2721dfad0188c1c9aaf070f77627fb5b8585838181106103d4576103d4610caa565b90506020020160208101906103e99190610b85565b8484848181106103fb576103fb610caa565b90506020020160208101906104109190610b85565b604080516001600160a01b0393841681529290911660208301520160405180910390a1600101610278565b5050505050565b6000546001600160a01b0316331461046d5760405163b5c42b3b60e01b815260040160405180910390fd5b600054604080516001600160a01b03928316815291831660208301527fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97910160405180910390a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806104e2836109e7565b6001600160a01b0316141592915050565b6001546001600160a01b0316331461051e576040516347323cef60e01b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f6502ca129870a6ac685369c8428164757ede26f9a492bf9ae7eac4abc0c49fcf910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146105b2576040516347323cef60e01b815260040160405180910390fd5b8281146105d25760405163512509d360e11b815260040160405180910390fd5b60005b80841461043b5760006003818787858181106105f3576105f3610caa565b90506020020160208101906106089190610b85565b6001600160a01b03908116825260208201929092526040016000205416036106765784848281811061063c5761063c610caa565b90506020020160208101906106519190610b85565b6040516384c50c6960e01b81526001600160a01b039091166004820152602401610315565b82828281811061068857610688610caa565b905060200201602081019061069d9190610b85565b600360008787858181106106b3576106b3610caa565b90506020020160208101906106c89190610b85565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b031916929091169190911790557f6095620bdb8c81d4448883574e9358ec2721dfad0188c1c9aaf070f77627fb5b85858381811061072c5761072c610caa565b90506020020160208101906107419190610b85565b84848481811061075357610753610caa565b90506020020160208101906107689190610b85565b604080516001600160a01b0393841681529290911660208301520160405180910390a16001016105d5565b6000546001600160a01b031633146107be5760405163b5c42b3b60e01b815260040160405180910390fd5b6107c7816101cc565b156107e557604051632a0a2c9760e11b815260040160405180910390fd5b600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0383169081179091556040519081527fdce494c285a961925a3383a1537a3d4f5021b88990caf94183bf98774fe715469060200160405180910390a150565b6002818154811061087957600080fd5b6000918252602090912001546001600160a01b0316905081565b60008061089f836109e7565b90506001600160a01b038116156108b65792915050565b60405163bcbeddcf60e01b81526001600160a01b0384166004820152602401610315565b6001546001600160a01b03163314610905576040516347323cef60e01b815260040160405180910390fd5b60006002838154811061091a5761091a610caa565b600091825260209182902001546040516001600160a01b0390911680825292507f3447d7d9db742d5651f6eff78896c5c974f8dde1b486cfd6145b1c67d8363665910160405180910390a1816002848154811061097957610979610caa565b600091825260209091200180546001600160a01b0319166001600160a01b039283161790558216156109e2576040516001600160a01b03831681527fdce494c285a961925a3383a1537a3d4f5021b88990caf94183bf98774fe715469060200160405180910390a15b505050565b6001600160a01b038082166000908152600360205260408120549091168015610a105792915050565b60025460005b818114610b625760006001600160a01b031660028281548110610a3b57610a3b610caa565b6000918252602090912001546001600160a01b031614610b5a5760008060028381548110610a6b57610a6b610caa565b60009182526020918290200154604080516001600160a01b038b8116602480840191909152835180840390910181526044909201835293810180516001600160e01b03166363cd755760e11b17905290519290911691610acb9190610cc0565b600060405180830381855afa9150503d8060008114610b06576040519150601f19603f3d011682016040523d82523d6000602084013e610b0b565b606091505b5091509150818015610b1e575080516020145b15610b5757600081806020019051810190610b399190610cef565b90506001600160a01b03811615610b5557979650505050505050565b505b50505b600101610a16565b506000949350505050565b6001600160a01b0381168114610b8257600080fd5b50565b600060208284031215610b9757600080fd5b8135610ba281610b6d565b9392505050565b60008083601f840112610bbb57600080fd5b50813567ffffffffffffffff811115610bd357600080fd5b6020830191508360208260051b8501011115610bee57600080fd5b9250929050565b60008060008060408587031215610c0b57600080fd5b843567ffffffffffffffff80821115610c2357600080fd5b610c2f88838901610ba9565b90965094506020870135915080821115610c4857600080fd5b50610c5587828801610ba9565b95989497509550505050565b600060208284031215610c7357600080fd5b5035919050565b60008060408385031215610c8d57600080fd5b823591506020830135610c9f81610b6d565b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000825160005b81811015610ce15760208186018101518583015201610cc7565b506000920191825250919050565b600060208284031215610d0157600080fd5b8151610ba281610b6d56fea2646970667358221220369ff6f34b66a6cae9f75355d11b30159065306f0c7f4dad115c97659d7c375d64736f6c63430008130033000000000000000000000000bde48624f9e1dd4107df324d1ba3c070046402060000000000000000000000007f4b6f10c34470ebddf5e7ab049d8dffb01f8a6f
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063b10e0b6e11610071578063b10e0b6e1461015a578063b7c546631461016d578063bd7844d214610180578063c79aeaae14610193578063e506b6f3146101a6578063f851a440146101b957600080fd5b80633b44358d146100b95780633f7506bd146100e157806364ceb97a146100f6578063704b6c021461012157806375c38965146101345780637ac5f2d814610147575b600080fd5b6100cc6100c7366004610b85565b6101cc565b60405190151581526020015b60405180910390f35b6100f46100ef366004610bf5565b61022a565b005b600154610109906001600160a01b031681565b6040516001600160a01b0390911681526020016100d8565b6100f461012f366004610b85565b610442565b6100cc610142366004610b85565b6104d6565b6100f4610155366004610b85565b6104f3565b6100f4610168366004610bf5565b610587565b6100f461017b366004610b85565b610793565b61010961018e366004610c61565b610869565b6101096101a1366004610b85565b610893565b6100f46101b4366004610c7a565b6108da565b600054610109906001600160a01b031681565b6000805b600254811461022157826001600160a01b0316600282815481106101f6576101f6610caa565b6000918252602090912001546001600160a01b0316036102195750600192915050565b6001016101d0565b50600092915050565b6000546001600160a01b031633146102555760405163b5c42b3b60e01b815260040160405180910390fd5b8281146102755760405163512509d360e11b815260040160405180910390fd5b60005b80841461043b57600060038187878581811061029657610296610caa565b90506020020160208101906102ab9190610b85565b6001600160a01b039081168252602082019290925260400160002054161461031e578484828181106102df576102df610caa565b90506020020160208101906102f49190610b85565b60405163165c1bb160e21b81526001600160a01b0390911660048201526024015b60405180910390fd5b82828281811061033057610330610caa565b90506020020160208101906103459190610b85565b6003600087878581811061035b5761035b610caa565b90506020020160208101906103709190610b85565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b031916929091169190911790557f6095620bdb8c81d4448883574e9358ec2721dfad0188c1c9aaf070f77627fb5b8585838181106103d4576103d4610caa565b90506020020160208101906103e99190610b85565b8484848181106103fb576103fb610caa565b90506020020160208101906104109190610b85565b604080516001600160a01b0393841681529290911660208301520160405180910390a1600101610278565b5050505050565b6000546001600160a01b0316331461046d5760405163b5c42b3b60e01b815260040160405180910390fd5b600054604080516001600160a01b03928316815291831660208301527fbf265e8326285a2747e33e54d5945f7111f2b5edb826eb8c08d4677779b3ff97910160405180910390a1600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806104e2836109e7565b6001600160a01b0316141592915050565b6001546001600160a01b0316331461051e576040516347323cef60e01b815260040160405180910390fd5b600154604080516001600160a01b03928316815291831660208301527f6502ca129870a6ac685369c8428164757ede26f9a492bf9ae7eac4abc0c49fcf910160405180910390a1600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001546001600160a01b031633146105b2576040516347323cef60e01b815260040160405180910390fd5b8281146105d25760405163512509d360e11b815260040160405180910390fd5b60005b80841461043b5760006003818787858181106105f3576105f3610caa565b90506020020160208101906106089190610b85565b6001600160a01b03908116825260208201929092526040016000205416036106765784848281811061063c5761063c610caa565b90506020020160208101906106519190610b85565b6040516384c50c6960e01b81526001600160a01b039091166004820152602401610315565b82828281811061068857610688610caa565b905060200201602081019061069d9190610b85565b600360008787858181106106b3576106b3610caa565b90506020020160208101906106c89190610b85565b6001600160a01b039081168252602082019290925260400160002080546001600160a01b031916929091169190911790557f6095620bdb8c81d4448883574e9358ec2721dfad0188c1c9aaf070f77627fb5b85858381811061072c5761072c610caa565b90506020020160208101906107419190610b85565b84848481811061075357610753610caa565b90506020020160208101906107689190610b85565b604080516001600160a01b0393841681529290911660208301520160405180910390a16001016105d5565b6000546001600160a01b031633146107be5760405163b5c42b3b60e01b815260040160405180910390fd5b6107c7816101cc565b156107e557604051632a0a2c9760e11b815260040160405180910390fd5b600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0383169081179091556040519081527fdce494c285a961925a3383a1537a3d4f5021b88990caf94183bf98774fe715469060200160405180910390a150565b6002818154811061087957600080fd5b6000918252602090912001546001600160a01b0316905081565b60008061089f836109e7565b90506001600160a01b038116156108b65792915050565b60405163bcbeddcf60e01b81526001600160a01b0384166004820152602401610315565b6001546001600160a01b03163314610905576040516347323cef60e01b815260040160405180910390fd5b60006002838154811061091a5761091a610caa565b600091825260209182902001546040516001600160a01b0390911680825292507f3447d7d9db742d5651f6eff78896c5c974f8dde1b486cfd6145b1c67d8363665910160405180910390a1816002848154811061097957610979610caa565b600091825260209091200180546001600160a01b0319166001600160a01b039283161790558216156109e2576040516001600160a01b03831681527fdce494c285a961925a3383a1537a3d4f5021b88990caf94183bf98774fe715469060200160405180910390a15b505050565b6001600160a01b038082166000908152600360205260408120549091168015610a105792915050565b60025460005b818114610b625760006001600160a01b031660028281548110610a3b57610a3b610caa565b6000918252602090912001546001600160a01b031614610b5a5760008060028381548110610a6b57610a6b610caa565b60009182526020918290200154604080516001600160a01b038b8116602480840191909152835180840390910181526044909201835293810180516001600160e01b03166363cd755760e11b17905290519290911691610acb9190610cc0565b600060405180830381855afa9150503d8060008114610b06576040519150601f19603f3d011682016040523d82523d6000602084013e610b0b565b606091505b5091509150818015610b1e575080516020145b15610b5757600081806020019051810190610b399190610cef565b90506001600160a01b03811615610b5557979650505050505050565b505b50505b600101610a16565b506000949350505050565b6001600160a01b0381168114610b8257600080fd5b50565b600060208284031215610b9757600080fd5b8135610ba281610b6d565b9392505050565b60008083601f840112610bbb57600080fd5b50813567ffffffffffffffff811115610bd357600080fd5b6020830191508360208260051b8501011115610bee57600080fd5b9250929050565b60008060008060408587031215610c0b57600080fd5b843567ffffffffffffffff80821115610c2357600080fd5b610c2f88838901610ba9565b90965094506020870135915080821115610c4857600080fd5b50610c5587828801610ba9565b95989497509550505050565b600060208284031215610c7357600080fd5b5035919050565b60008060408385031215610c8d57600080fd5b823591506020830135610c9f81610b6d565b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b6000825160005b81811015610ce15760208186018101518583015201610cc7565b506000920191825250919050565b600060208284031215610d0157600080fd5b8151610ba281610b6d56fea2646970667358221220369ff6f34b66a6cae9f75355d11b30159065306f0c7f4dad115c97659d7c375d64736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000bde48624f9e1dd4107df324d1ba3c070046402060000000000000000000000007f4b6f10c34470ebddf5e7ab049d8dffb01f8a6f
-----Decoded View---------------
Arg [0] : admin_ (address): 0xBDE48624F9E1dd4107df324D1BA3C07004640206
Arg [1] : timelockAdmin_ (address): 0x7f4b6f10C34470ebDdF5E7ab049d8DFFb01F8A6f
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000bde48624f9e1dd4107df324d1ba3c07004640206
Arg [1] : 0000000000000000000000007f4b6f10c34470ebddf5e7ab049d8dffb01f8a6f
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.