Overview
ETH Balance
ETH Value
$0.00Multichain Info
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Nominate New Own... | 2902637 | 117 days ago | IN | 0 ETH | 0.00000006 |
View more zero value Internal Transactions in Advanced View mode
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0x07FF8471...d91bc85df The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: GPL-3.0 // Docgen-SOLC: 0.8.25 pragma solidity ^0.8.24; import {Owned} from "./Owned.sol"; import {IWhitelist} from "../Interfaces/IWhitelist.sol"; contract Whitelist is IWhitelist, Owned { // calling contract -> user -> whitelisted mapping(address => mapping(address => bool)) whitelist; event Whitelisted(address callingContract, address user); event WhitelistRemoved(address callingContract, address user); constructor(address owner) Owned(owner) {} function addToWhitelist(address callingContract, address user) external override onlyOwner { whitelist[callingContract][user] = true; emit Whitelisted(callingContract, user); } function removeFromWhitelist(address callingContract, address user) external override onlyOwner { whitelist[callingContract][user] = false; emit WhitelistRemoved(callingContract, user); } function isWhitelisted(address callingContract, address user) external view override returns (bool) { return whitelist[callingContract][user]; } }
// SPDX-License-Identifier: GPL-3.0 // Docgen-SOLC: 0.8.25 pragma solidity 0.8.24; import "../Interfaces/IOwned.sol"; // https://docs.synthetix.io/contracts/source/contracts/owned contract Owned is IOwned { address public override owner; address public override nominatedOwner; event OwnerNominated(address newOwner); event OwnerChanged(address oldOwner, address newOwner); constructor(address _owner) { require(_owner != address(0), "Owned/owner-zero"); owner = _owner; emit OwnerChanged(address(0), _owner); } function nominateNewOwner(address _owner) external virtual override onlyOwner { nominatedOwner = _owner; emit OwnerNominated(_owner); } function acceptOwnership() external virtual override { require(msg.sender == nominatedOwner, "Owned/not-nominated"); emit OwnerChanged(owner, nominatedOwner); owner = nominatedOwner; nominatedOwner = address(0); } modifier onlyOwner() { _onlyOwner(); _; } function _onlyOwner() private view { require(msg.sender == owner, "Owned/not-owner"); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IOwned { function owner() external view returns (address); function nominatedOwner() external view returns (address); function nominateNewOwner(address owner) external; function acceptOwnership() external; }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IWhitelist { function addToWhitelist(address callingContract, address user) external; function removeFromWhitelist(address callingContract, address user) external; function isWhitelisted(address callingContract, address user) external view returns (bool); }
{ "evmVersion": "cancun", "libraries": {}, "metadata": { "appendCBOR": true, "bytecodeHash": "ipfs", "useLiteralContent": false }, "optimizer": { "enabled": true, "runs": 1 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "remappings": [ "openzeppelin/=lib/V2-gov/lib/openzeppelin-contracts/", "@chimera/=lib/V2-gov/lib/chimera/src/", "@openzeppelin/contracts/=lib/V2-gov/lib/openzeppelin-contracts/contracts/", "Solady/=lib/Solady/src/", "V2-gov/=lib/V2-gov/", "chimera/=lib/V2-gov/lib/chimera/src/", "ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "v4-core/=lib/V2-gov/lib/v4-core/" ], "viaIR": false }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"callingContract","type":"address"},{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"WhitelistRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"callingContract","type":"address"},{"indexed":false,"internalType":"address","name":"user","type":"address"}],"name":"Whitelisted","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"callingContract","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"callingContract","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"callingContract","type":"address"},{"internalType":"address","name":"user","type":"address"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
0x608060405234801561000f575f80fd5b5060405161056638038061056683398101604081905261002e916100d9565b806001600160a01b03811661007c5760405162461bcd60e51b815260206004820152601060248201526f4f776e65642f6f776e65722d7a65726f60801b604482015260640160405180910390fd5b5f80546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a15050610106565b5f602082840312156100e9575f80fd5b81516001600160a01b03811681146100ff575f80fd5b9392505050565b610453806101135f395ff3fe608060405234801561000f575f80fd5b506004361061006b575f3560e01c80631627540c1461006f57806353a47bb71461008457806357518243146100ad57806379ba5097146100c05780638da5cb5b146100c8578063b6b35272146100da578063f8d3277d14610125575b5f80fd5b61008261007d36600461039e565b610138565b005b600154610097906001600160a01b031681565b6040516100a491906103be565b60405180910390f35b6100826100bb3660046103d2565b610196565b61008261020b565b5f54610097906001600160a01b031681565b6101156100e83660046103d2565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205460ff1690565b60405190151581526020016100a4565b6100826101333660046103d2565b6102d0565b610140610336565b600180546001600160a01b0319166001600160a01b0383161790556040517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229061018b9083906103be565b60405180910390a150565b61019e610336565b6001600160a01b038083165f9081526002602090815260408083209385168352929052819020805460ff19166001179055517f6661a7108aecd07864384529117d96c319c1163e3010c01390f6b704726e07de906101ff9084908490610403565b60405180910390a15050565b6001546001600160a01b031633146102605760405162461bcd60e51b815260206004820152601360248201527213dddb99590bdb9bdd0b5b9bdb5a5b985d1959606a1b60448201526064015b60405180910390fd5b5f546001546040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c926102a2926001600160a01b0391821692911690610403565b60405180910390a1600180545f80546001600160a01b03199081166001600160a01b03841617909155169055565b6102d8610336565b6001600160a01b038083165f9081526002602090815260408083209385168352929052819020805460ff19169055517fe0fcf303ba3014f7bddb92283585b57ae29a68f05ceb43d0a0c1b92ad80c613c906101ff9084908490610403565b5f546001600160a01b031633146103815760405162461bcd60e51b815260206004820152600f60248201526e27bbb732b217b737ba16b7bbb732b960891b6044820152606401610257565b565b80356001600160a01b0381168114610399575f80fd5b919050565b5f602082840312156103ae575f80fd5b6103b782610383565b9392505050565b6001600160a01b0391909116815260200190565b5f80604083850312156103e3575f80fd5b6103ec83610383565b91506103fa60208401610383565b90509250929050565b6001600160a01b039283168152911660208201526040019056fea2646970667358221220d435861b40525c5f81abaa21a04df31f5da579ddd54ec987d488c7bae10ede4d64736f6c63430008180033000000000000000000000000919d5a6f2cbc0731380c26b4ac4f6183dd3a40c8
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061006b575f3560e01c80631627540c1461006f57806353a47bb71461008457806357518243146100ad57806379ba5097146100c05780638da5cb5b146100c8578063b6b35272146100da578063f8d3277d14610125575b5f80fd5b61008261007d36600461039e565b610138565b005b600154610097906001600160a01b031681565b6040516100a491906103be565b60405180910390f35b6100826100bb3660046103d2565b610196565b61008261020b565b5f54610097906001600160a01b031681565b6101156100e83660046103d2565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205460ff1690565b60405190151581526020016100a4565b6100826101333660046103d2565b6102d0565b610140610336565b600180546001600160a01b0319166001600160a01b0383161790556040517f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229061018b9083906103be565b60405180910390a150565b61019e610336565b6001600160a01b038083165f9081526002602090815260408083209385168352929052819020805460ff19166001179055517f6661a7108aecd07864384529117d96c319c1163e3010c01390f6b704726e07de906101ff9084908490610403565b60405180910390a15050565b6001546001600160a01b031633146102605760405162461bcd60e51b815260206004820152601360248201527213dddb99590bdb9bdd0b5b9bdb5a5b985d1959606a1b60448201526064015b60405180910390fd5b5f546001546040517fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c926102a2926001600160a01b0391821692911690610403565b60405180910390a1600180545f80546001600160a01b03199081166001600160a01b03841617909155169055565b6102d8610336565b6001600160a01b038083165f9081526002602090815260408083209385168352929052819020805460ff19169055517fe0fcf303ba3014f7bddb92283585b57ae29a68f05ceb43d0a0c1b92ad80c613c906101ff9084908490610403565b5f546001600160a01b031633146103815760405162461bcd60e51b815260206004820152600f60248201526e27bbb732b217b737ba16b7bbb732b960891b6044820152606401610257565b565b80356001600160a01b0381168114610399575f80fd5b919050565b5f602082840312156103ae575f80fd5b6103b782610383565b9392505050565b6001600160a01b0391909116815260200190565b5f80604083850312156103e3575f80fd5b6103ec83610383565b91506103fa60208401610383565b90509250929050565b6001600160a01b039283168152911660208201526040019056fea2646970667358221220d435861b40525c5f81abaa21a04df31f5da579ddd54ec987d488c7bae10ede4d64736f6c63430008180033

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.