Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00Multichain Info
N/A
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
2236881 | 127 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
InitGov
Compiler Version
v0.8.18+commit.87f61d96
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at KatanaScan.com on 2025-07-11 */ // SPDX-License-Identifier: AGPL-3.0 pragma solidity >=0.8.18 ^0.8.18; // src/utils/Governance.sol contract Governance { /// @notice Emitted when the governance address is updated. event GovernanceTransferred( address indexed previousGovernance, address indexed newGovernance ); modifier onlyGovernance() { _checkGovernance(); _; } /// @notice Checks if the msg sender is the governance. function _checkGovernance() internal view virtual { require(governance == msg.sender, "!governance"); } /// @notice Address that can set the default base fee and provider address public governance; constructor(address _governance) { governance = _governance; emit GovernanceTransferred(address(0), _governance); } /** * @notice Sets a new address as the governance of the contract. * @dev Throws if the caller is not current governance. * @param _newGovernance The new governance address. */ function transferGovernance( address _newGovernance ) external virtual onlyGovernance { require(_newGovernance != address(0), "ZERO ADDRESS"); address oldGovernance = governance; governance = _newGovernance; emit GovernanceTransferred(oldGovernance, _newGovernance); } } // src/utils/InitGov.sol /// @notice Multi chain contract to be the initial governance for contracts on deployment. contract InitGov { address public constant SAFE = 0x33333333D5eFb92f19a5F94a43456b3cec2797AE; address public constant SIGNER_ONE = 0x6d2b80BA79871281Be7F70b079996a052B8D62F4; address public constant SIGNER_TWO = 0x305af52AC31d3F9Daa1EC6231bA7b36Bb40f42f4; address public constant SIGNER_THREE = 0xa05c4256ff0dd38697e63D48dF146e6e2FE7fe4A; address public constant SIGNER_FOUR = 0x623d4A04e19328244924D1dee48252987C02fC0a; address public constant SIGNER_FIVE = 0x5C166A5919cC07d785837d8Cc1261c67229d271D; address public constant SIGNER_SIX = 0x80f751EdcB3012d5AF5530AFE97d5dC6EE176Bc0; uint256 public constant THRESHOLD = 3; mapping(address => bool) public isSigner; mapping(bytes32 => uint256) public numberSigned; mapping(address => mapping(bytes32 => bool)) public signed; constructor() { isSigner[SIGNER_ONE] = true; isSigner[SIGNER_TWO] = true; isSigner[SIGNER_THREE] = true; isSigner[SIGNER_FOUR] = true; isSigner[SIGNER_FIVE] = true; isSigner[SIGNER_SIX] = true; } /// @notice To sign a txn from an eoa. function signTxn(address _contract, address _newGovernance) external { require(isSigner[msg.sender], "!signer"); bytes32 id = getTxnId(_contract, _newGovernance); require(!signed[msg.sender][id], "already signed"); signed[msg.sender][id] = true; numberSigned[id] += 1; // Execute if we have reached the threshold. if (numberSigned[id] == THRESHOLD) _transferGovernance(_contract, _newGovernance); } /// @notice Can only be called by safe function transferGovernance( address _contract, address _newGovernance ) external { require(msg.sender == SAFE, "!safe"); _transferGovernance(_contract, _newGovernance); } function _transferGovernance( address _contract, address _newGovernance ) internal { Governance(_contract).transferGovernance(_newGovernance); } function getTxnId( address _contract, address _newGovernance ) public pure returns (bytes32) { return keccak256(abi.encodePacked(_contract, _newGovernance)); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"SAFE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_FIVE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_FOUR","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_ONE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_SIX","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_THREE","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SIGNER_TWO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"address","name":"_newGovernance","type":"address"}],"name":"getTxnId","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isSigner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"numberSigned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"address","name":"_newGovernance","type":"address"}],"name":"signTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"signed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_contract","type":"address"},{"internalType":"address","name":"_newGovernance","type":"address"}],"name":"transferGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50600060208190527f94e6b1a9af635ff10f59c99e2f78fdeddf547e5a57ea5ffaddc83818598b61f9805460ff1990811660019081179092557f09b7965b32af889074b52d6f027c8415b9b5e1b03a02e45a11bdb065b7609b1180548216831790557fe48633bec7b9921df9a69155d3d9dfb315dba500ea1a1dd26e4014ba3afdcb2680548216831790557f83b80d6cb6be1713a5761561a2d8477c3a7270f51c8ac79b541cafa2319ef5bf80548216831790557f813e88487525924c9e019f7660c84d9bc5df282c7c646274b63002bad3ac746080548216831790557380f751edcb3012d5af5530afe97d5dc6ee176bc09092527fdd12a6afe756ccc5956fc5ec60a5a3db5d2a062f75d60189cb5f0e758508a6f280549092161790556105cc8061013d6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063807d41d41161008c578063aa5bfd6b11610066578063aa5bfd6b14610237578063d62bda0914610252578063eb7caede1461026d578063fd813da11461028857600080fd5b8063807d41d4146101ce578063885a1ffa146101ee57806389c40e951461020957600080fd5b80636fb1d52f116100c85780636fb1d52f1461014f578063785ffb371461016a5780637b1c5569146101805780637df73e271461019b57600080fd5b80630219108a146100ef5780632058f181146101045780635a116aae14610117575b600080fd5b6101026100fd3660046104dd565b61029b565b005b6101026101123660046104dd565b6102f9565b6101327380f751edcb3012d5af5530afe97d5dc6ee176bc081565b6040516001600160a01b0390911681526020015b60405180910390f35b610132736d2b80ba79871281be7f70b079996a052b8d62f481565b610172600381565b604051908152602001610146565b61013273623d4a04e19328244924d1dee48252987c02fc0a81565b6101be6101a9366004610510565b60006020819052908152604090205460ff1681565b6040519015158152602001610146565b6101726101dc366004610532565b60016020526000908152604090205481565b6101327333333333d5efb92f19a5f94a43456b3cec2797ae81565b6101be61021736600461054b565b600260209081526000928352604080842090915290825290205460ff1681565b610132735c166a5919cc07d785837d8cc1261c67229d271d81565b61013273305af52ac31d3f9daa1ec6231ba7b36bb40f42f481565b61013273a05c4256ff0dd38697e63d48df146e6e2fe7fe4a81565b6101726102963660046104dd565b610417565b337333333333d5efb92f19a5f94a43456b3cec2797ae146102eb5760405162461bcd60e51b8152602060048201526005602482015264217361666560d81b60448201526064015b60405180910390fd5b6102f58282610462565b5050565b3360009081526020819052604090205460ff166103425760405162461bcd60e51b815260206004820152600760248201526610b9b4b3b732b960c91b60448201526064016102e2565b600061034e8383610417565b33600090815260026020908152604080832084845290915290205490915060ff16156103ad5760405162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481cda59db995960921b60448201526064016102e2565b3360009081526002602090815260408083208484528252808320805460ff191660019081179091559182905282208054919290916103ec908490610575565b909155505060008181526001602052604090205460021901610412576104128383610462565b505050565b6040516bffffffffffffffffffffffff19606084811b8216602084015283901b1660348201526000906048016040516020818303038152906040528051906020012090505b92915050565b6040516334e2fffd60e21b81526001600160a01b03828116600483015283169063d38bfff490602401600060405180830381600087803b1580156104a557600080fd5b505af11580156104b9573d6000803e3d6000fd5b505050505050565b80356001600160a01b03811681146104d857600080fd5b919050565b600080604083850312156104f057600080fd5b6104f9836104c1565b9150610507602084016104c1565b90509250929050565b60006020828403121561052257600080fd5b61052b826104c1565b9392505050565b60006020828403121561054457600080fd5b5035919050565b6000806040838503121561055e57600080fd5b610567836104c1565b946020939093013593505050565b8082018082111561045c57634e487b7160e01b600052601160045260246000fdfea264697066735822122065ad5ddd0a09f6e3b64901a632698a2f6ebfbbf95f99a263fb64a5939ae4d51f64736f6c63430008120033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063807d41d41161008c578063aa5bfd6b11610066578063aa5bfd6b14610237578063d62bda0914610252578063eb7caede1461026d578063fd813da11461028857600080fd5b8063807d41d4146101ce578063885a1ffa146101ee57806389c40e951461020957600080fd5b80636fb1d52f116100c85780636fb1d52f1461014f578063785ffb371461016a5780637b1c5569146101805780637df73e271461019b57600080fd5b80630219108a146100ef5780632058f181146101045780635a116aae14610117575b600080fd5b6101026100fd3660046104dd565b61029b565b005b6101026101123660046104dd565b6102f9565b6101327380f751edcb3012d5af5530afe97d5dc6ee176bc081565b6040516001600160a01b0390911681526020015b60405180910390f35b610132736d2b80ba79871281be7f70b079996a052b8d62f481565b610172600381565b604051908152602001610146565b61013273623d4a04e19328244924d1dee48252987c02fc0a81565b6101be6101a9366004610510565b60006020819052908152604090205460ff1681565b6040519015158152602001610146565b6101726101dc366004610532565b60016020526000908152604090205481565b6101327333333333d5efb92f19a5f94a43456b3cec2797ae81565b6101be61021736600461054b565b600260209081526000928352604080842090915290825290205460ff1681565b610132735c166a5919cc07d785837d8cc1261c67229d271d81565b61013273305af52ac31d3f9daa1ec6231ba7b36bb40f42f481565b61013273a05c4256ff0dd38697e63d48df146e6e2fe7fe4a81565b6101726102963660046104dd565b610417565b337333333333d5efb92f19a5f94a43456b3cec2797ae146102eb5760405162461bcd60e51b8152602060048201526005602482015264217361666560d81b60448201526064015b60405180910390fd5b6102f58282610462565b5050565b3360009081526020819052604090205460ff166103425760405162461bcd60e51b815260206004820152600760248201526610b9b4b3b732b960c91b60448201526064016102e2565b600061034e8383610417565b33600090815260026020908152604080832084845290915290205490915060ff16156103ad5760405162461bcd60e51b815260206004820152600e60248201526d185b1c9958591e481cda59db995960921b60448201526064016102e2565b3360009081526002602090815260408083208484528252808320805460ff191660019081179091559182905282208054919290916103ec908490610575565b909155505060008181526001602052604090205460021901610412576104128383610462565b505050565b6040516bffffffffffffffffffffffff19606084811b8216602084015283901b1660348201526000906048016040516020818303038152906040528051906020012090505b92915050565b6040516334e2fffd60e21b81526001600160a01b03828116600483015283169063d38bfff490602401600060405180830381600087803b1580156104a557600080fd5b505af11580156104b9573d6000803e3d6000fd5b505050505050565b80356001600160a01b03811681146104d857600080fd5b919050565b600080604083850312156104f057600080fd5b6104f9836104c1565b9150610507602084016104c1565b90509250929050565b60006020828403121561052257600080fd5b61052b826104c1565b9392505050565b60006020828403121561054457600080fd5b5035919050565b6000806040838503121561055e57600080fd5b610567836104c1565b946020939093013593505050565b8082018082111561045c57634e487b7160e01b600052601160045260246000fdfea264697066735822122065ad5ddd0a09f6e3b64901a632698a2f6ebfbbf95f99a263fb64a5939ae4d51f64736f6c63430008120033
Loading...
Loading
Loading...
Loading

Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
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.