Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
SmartWalletWhitelist
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.7; /// @notice Interface of the `SmartWalletChecker` contracts of the protocol interface SmartWalletChecker { function check(address) external view returns (bool); } /// @title SmartWalletWhitelist /// @author Curve Finance and adapted by Angle Core Team (https://etherscan.io/address/0xca719728ef172d0961768581fdf35cb116e0b7a4#code) /// @notice Provides functions to check whether a wallet has been verified or not to own veANGLE contract SmartWalletWhitelist { /// @notice Mapping between addresses and whether they are whitelisted or not mapping(address => bool) public wallets; /// @notice Admin address of the contract address public admin; /// @notice Future admin address of the contract //solhint-disable-next-line address public future_admin; /// @notice Contract which works as this contract and that can whitelist addresses address public checker; /// @notice Future address to become checker //solhint-disable-next-line address public future_checker; event ApproveWallet(address indexed _wallet); event RevokeWallet(address indexed _wallet); /// @notice Constructor of the contract /// @param _admin Admin address of the contract constructor(address _admin) { require(_admin != address(0), "0"); admin = _admin; } /// @notice Commits to change the admin /// @param _admin New admin of the contract function commitAdmin(address _admin) external { require(msg.sender == admin, "!admin"); future_admin = _admin; } /// @notice Changes the admin to the admin that has been committed function applyAdmin() external { require(msg.sender == admin, "!admin"); require(future_admin != address(0), "admin not set"); admin = future_admin; } /// @notice Commits to change the checker address /// @param _checker New checker address /// @dev This address can be the zero address in which case there will be no checker function commitSetChecker(address _checker) external { require(msg.sender == admin, "!admin"); future_checker = _checker; } /// @notice Applies the checker previously committed function applySetChecker() external { require(msg.sender == admin, "!admin"); checker = future_checker; } /// @notice Approves a wallet /// @param _wallet Wallet to approve function approveWallet(address _wallet) public { require(msg.sender == admin, "!admin"); wallets[_wallet] = true; emit ApproveWallet(_wallet); } /// @notice Revokes a wallet /// @param _wallet Wallet to revoke function revokeWallet(address _wallet) external { require(msg.sender == admin, "!admin"); wallets[_wallet] = false; emit RevokeWallet(_wallet); } /// @notice Checks whether a wallet is whitelisted /// @param _wallet Wallet address to check /// @dev This function can also rely on another SmartWalletChecker (a `checker` to see whether the wallet is whitelisted or not) function check(address _wallet) external view returns (bool) { bool _check = wallets[_wallet]; if (_check) { return _check; } else { if (checker != address(0)) { return SmartWalletChecker(checker).check(_wallet); } } return false; } }
{ "evmVersion": "london", "libraries": {}, "metadata": { "bytecodeHash": "ipfs", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 1000000 }, "remappings": [], "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_wallet","type":"address"}],"name":"ApproveWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_wallet","type":"address"}],"name":"RevokeWallet","type":"event"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applySetChecker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"approveWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"check","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_admin","type":"address"}],"name":"commitAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_checker","type":"address"}],"name":"commitSetChecker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"future_admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"future_checker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"revokeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b50604051610a21380380610a2183398101604081905261002f91610092565b6001600160a01b03811661006d5760405162461bcd60e51b81526020600482015260016024820152600360fc1b604482015260640160405180910390fd5b600180546001600160a01b0319166001600160a01b03929092169190911790556100c2565b6000602082840312156100a457600080fd5b81516001600160a01b03811681146100bb57600080fd5b9392505050565b610950806100d16000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80638fcdecc811610081578063c23697a81161005b578063c23697a8146101d4578063cf5303cf146101e7578063f851a4401461020757600080fd5b80638fcdecc81461018e578063943f35a4146101ae578063b0f3b734146101c157600080fd5b80634e67428d116100b25780634e67428d14610140578063808a9d401461014857806389b08f111461015b57600080fd5b80630fcb0ae5146100d957806317f7182a146100ee57806326b42b1a14610138575b600080fd5b6100ec6100e73660046108c2565b610227565b005b60025461010e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100ec610324565b6100ec6103ee565b6100ec6101563660046108c2565b610537565b61017e6101693660046108c2565b60006020819052908152604090205460ff1681565b604051901515815260200161012f565b60045461010e9073ffffffffffffffffffffffffffffffffffffffff1681565b6100ec6101bc3660046108c2565b61062c565b6100ec6101cf3660046108c2565b6106f4565b61017e6101e23660046108c2565b6107bc565b60035461010e9073ffffffffffffffffffffffffffffffffffffffff1681565b60015461010e9073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2161646d696e000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517fc1e7aae3f3125e58cfc69ab2a872a655dbb9427614aa85b29bb5abeaca4d6a929190a250565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2161646d696e000000000000000000000000000000000000000000000000000060448201526064016102a4565b600454600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff16331461046f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2161646d696e000000000000000000000000000000000000000000000000000060448201526064016102a4565b60025473ffffffffffffffffffffffffffffffffffffffff166104ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f61646d696e206e6f74207365740000000000000000000000000000000000000060448201526064016102a4565b600254600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2161646d696e000000000000000000000000000000000000000000000000000060448201526064016102a4565b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f1b676c3cc753786cb95aff57280fd7406f1da74e2a8b9755fdd395aded3e16dd9190a250565b60015473ffffffffffffffffffffffffffffffffffffffff1633146106ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2161646d696e000000000000000000000000000000000000000000000000000060448201526064016102a4565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff163314610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2161646d696e000000000000000000000000000000000000000000000000000060448201526064016102a4565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604081205460ff1680156107f15792915050565b60035473ffffffffffffffffffffffffffffffffffffffff16156108b9576003546040517fc23697a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529091169063c23697a89060240160206040518083038186803b15801561087a57600080fd5b505afa15801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b291906108f8565b9392505050565b50600092915050565b6000602082840312156108d457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108b257600080fd5b60006020828403121561090a57600080fd5b815180151581146108b257600080fdfea2646970667358221220d4638eaad596fc470622a43f97524bcd915c6465b6e28d89b2ae6e760a15a2dc64736f6c63430008070033000000000000000000000000dc4e6dfe07efca50a197df15d9200883ef4eb1c8
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100d45760003560e01c80638fcdecc811610081578063c23697a81161005b578063c23697a8146101d4578063cf5303cf146101e7578063f851a4401461020757600080fd5b80638fcdecc81461018e578063943f35a4146101ae578063b0f3b734146101c157600080fd5b80634e67428d116100b25780634e67428d14610140578063808a9d401461014857806389b08f111461015b57600080fd5b80630fcb0ae5146100d957806317f7182a146100ee57806326b42b1a14610138575b600080fd5b6100ec6100e73660046108c2565b610227565b005b60025461010e9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100ec610324565b6100ec6103ee565b6100ec6101563660046108c2565b610537565b61017e6101693660046108c2565b60006020819052908152604090205460ff1681565b604051901515815260200161012f565b60045461010e9073ffffffffffffffffffffffffffffffffffffffff1681565b6100ec6101bc3660046108c2565b61062c565b6100ec6101cf3660046108c2565b6106f4565b61017e6101e23660046108c2565b6107bc565b60035461010e9073ffffffffffffffffffffffffffffffffffffffff1681565b60015461010e9073ffffffffffffffffffffffffffffffffffffffff1681565b60015473ffffffffffffffffffffffffffffffffffffffff1633146102ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2161646d696e000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517fc1e7aae3f3125e58cfc69ab2a872a655dbb9427614aa85b29bb5abeaca4d6a929190a250565b60015473ffffffffffffffffffffffffffffffffffffffff1633146103a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2161646d696e000000000000000000000000000000000000000000000000000060448201526064016102a4565b600454600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff16331461046f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2161646d696e000000000000000000000000000000000000000000000000000060448201526064016102a4565b60025473ffffffffffffffffffffffffffffffffffffffff166104ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f61646d696e206e6f74207365740000000000000000000000000000000000000060448201526064016102a4565b600254600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff1633146105b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2161646d696e000000000000000000000000000000000000000000000000000060448201526064016102a4565b73ffffffffffffffffffffffffffffffffffffffff811660008181526020819052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517f1b676c3cc753786cb95aff57280fd7406f1da74e2a8b9755fdd395aded3e16dd9190a250565b60015473ffffffffffffffffffffffffffffffffffffffff1633146106ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2161646d696e000000000000000000000000000000000000000000000000000060448201526064016102a4565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60015473ffffffffffffffffffffffffffffffffffffffff163314610775576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2161646d696e000000000000000000000000000000000000000000000000000060448201526064016102a4565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604081205460ff1680156107f15792915050565b60035473ffffffffffffffffffffffffffffffffffffffff16156108b9576003546040517fc23697a800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529091169063c23697a89060240160206040518083038186803b15801561087a57600080fd5b505afa15801561088e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b291906108f8565b9392505050565b50600092915050565b6000602082840312156108d457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108b257600080fd5b60006020828403121561090a57600080fd5b815180151581146108b257600080fdfea2646970667358221220d4638eaad596fc470622a43f97524bcd915c6465b6e28d89b2ae6e760a15a2dc64736f6c63430008070033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000dc4e6dfe07efca50a197df15d9200883ef4eb1c8
-----Decoded View---------------
Arg [0] : _admin (address): 0xdC4e6DFe07EFCa50a197DF15D9200883eF4Eb1c8
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000dc4e6dfe07efca50a197df15d9200883ef4eb1c8
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.