Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 1 internal transaction
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
17586201 | 431 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Contract Name:
ERC20
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 amount) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address from, address to, uint256 amount ) external returns (bool); } interface IERC721 { function transferFrom( address from, address to, uint256 tokenId ) external; } interface INonfungiblePositionManager is IERC721 { struct CollectParams { uint256 tokenId; address recipient; uint128 amount0Max; uint128 amount1Max; } function collect(CollectParams calldata params) external payable returns (uint256 amount0, uint256 amount1); } interface IHumanVerifier { function humanVerified(address account) external view returns (bool); } contract ERC20 is Context, IERC20, Ownable { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; bool private humanVerificationRequired = true; address private UNISWAP_UNIVERSAL_ROUTER = 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD; address private UNISWAP_UNIVERSAL_ROUTER_OLD = 0xEf1c6E67703c7BD7107eed8303Fbe6EC2554BF6B; address private UNISWAP_V3_ROUTER_2 = 0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45; IHumanVerifier private humanVerifier; constructor( string memory name_, string memory symbol_, uint256 supply, address owner, address humanVerifier_ ) { _name = name_; _symbol = symbol_; humanVerifier = IHumanVerifier(humanVerifier_); _mint(owner, supply); } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _verify(from, to); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require( fromBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require( currentAllowance >= amount, "ERC20: insufficient allowance" ); unchecked { _approve(owner, spender, currentAllowance - amount); } } } function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} function _verify(address from, address to) internal virtual { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) ) { if ( to != UNISWAP_UNIVERSAL_ROUTER && to != UNISWAP_UNIVERSAL_ROUTER_OLD && to != UNISWAP_V3_ROUTER_2 ) { if (humanVerificationRequired) { require( humanVerifier.humanVerified(to) == true, "Human not verified." ); } } } } function humanVerified(address account) external view returns (bool) { return humanVerifier.humanVerified(account); } function setHumanVerifier(address account) public onlyOwner { require(account != address(0), "ERC20: account is zero address"); humanVerifier = IHumanVerifier(account); } function setHumanVerificationRequired(bool onOff) public onlyOwner { humanVerificationRequired = onOff; } } contract HumanVerifier is Ownable { bool private verifyAllowed = false; mapping(address => bool) private _humanVerified; address private _signerAddress; address private _uniswapV3Quoter; string private _salt; event HumanVerified(address signer); constructor() { _salt = "MFER"; _signerAddress = 0x361335Bbf5dC98363119d8a2bCdAeD05335cb8db; _uniswapV3Quoter = 0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6; _humanVerified[owner()] = true; _humanVerified[_uniswapV3Quoter] = true; } function verifyHuman( uint8 _v, bytes32 _r, bytes32 _s ) external returns (bool) { require(verifyAllowed, "Verify is not allowed yet"); bytes memory prefix = "\x19Ethereum Signed Message:\n32"; bytes32 hash = keccak256( abi.encodePacked(address(this), _msgSender(), _salt) ); bytes32 prefixedHash = keccak256(abi.encodePacked(prefix, hash)); address recovered = ecrecover(prefixedHash, _v, _r, _s); if (recovered == _signerAddress) { _humanVerified[_msgSender()] = true; emit HumanVerified(_msgSender()); } else { revert("Human not verified."); } return true; } function humanVerified(address account) external view returns (bool) { return _humanVerified[account]; } function allowVerify(bool allow) public onlyOwner { verifyAllowed = allow; } function verify(address account, bool verified) public onlyOwner { require(account != address(0), "account cannot be 0"); _humanVerified[account] = verified; } function setSignerAddress(address signerAddress) public onlyOwner { require(signerAddress != address(0), "_signerAddress cannot be 0"); _signerAddress = signerAddress; } function setUniswapV3Quoter(address uniswapV3Quoter) public onlyOwner { require(uniswapV3Quoter != address(0), "_uniswapV3Quoter cannot be 0"); _uniswapV3Quoter = uniswapV3Quoter; } function setSalt(string memory salt) public onlyOwner { _salt = salt; } } contract MFERLPLocker { address NONFUNGIBLE_POSITION_MANAGER = 0xC36442b4a4522E871399CD717aBDD847Ab11FE88; INonfungiblePositionManager _positionManager; address public feeCollector; uint256 public lockUpDeadline; bool public lpNFTLocked = false; bool public withdrawTriggered = false; modifier onlyFeeCollector() { require(msg.sender == feeCollector); _; } constructor(address owner) { _positionManager = INonfungiblePositionManager( NONFUNGIBLE_POSITION_MANAGER ); feeCollector = owner; } function lockNFT(uint256 _tokenId) external onlyFeeCollector { require(!lpNFTLocked, "NFT is already locked"); IERC721(NONFUNGIBLE_POSITION_MANAGER).transferFrom( msg.sender, address(this), _tokenId ); lpNFTLocked = true; } function triggerNFTWithdrawal() external onlyFeeCollector { require(lpNFTLocked, "NFT is not locked"); require(lockUpDeadline == 0, "Withdrawal has been already triggered"); lockUpDeadline = block.timestamp + (90 days); withdrawTriggered = true; } function cancelNFTWithdrawal() external onlyFeeCollector { require(lpNFTLocked, "NFT is not locked"); require(lockUpDeadline != 0, "Withdrawal has not been triggered"); lockUpDeadline = 0; withdrawTriggered = false; } function withdrawNFT(uint256 _tokenId) external onlyFeeCollector { require(lpNFTLocked, "NFT is not locked"); require(lockUpDeadline != 0, "Withdrawal has not been triggered"); require( block.timestamp >= lockUpDeadline, "Lock-up period has not ended yet" ); IERC721(NONFUNGIBLE_POSITION_MANAGER).transferFrom( address(this), msg.sender, _tokenId ); lpNFTLocked = false; lockUpDeadline = 0; withdrawTriggered = false; } function collectLPFees(uint256 _tokenId) external onlyFeeCollector { _positionManager.collect( INonfungiblePositionManager.CollectParams({ tokenId: _tokenId, recipient: feeCollector, amount0Max: type(uint128).max, amount1Max: type(uint128).max }) ); } function changeFeeCollector(address account) external onlyFeeCollector { require(account != address(0), "Address 0"); feeCollector = account; } function changeNFTPositionManager(address account) external onlyFeeCollector { require(account != address(0), "Address 0"); NONFUNGIBLE_POSITION_MANAGER = account; _positionManager = INonfungiblePositionManager(account); } } contract Create2Deployer is Ownable { event Deployed(address addr); function deployToken( uint256 _salt, string memory name, string memory symbol, uint256 supply, address owner, address humanVerifier ) public onlyOwner { bytes32 salt = keccak256(abi.encodePacked(_salt, owner)); ERC20 _contract = new ERC20{salt: salt}( name, symbol, supply, owner, humanVerifier ); _contract.transferOwnership(owner); emit Deployed(address(_contract)); } function deployVerifier(uint256 _salt) public onlyOwner { bytes32 salt = keccak256(abi.encodePacked(_salt, owner())); HumanVerifier _contract = new HumanVerifier{salt: salt}(); _contract.transferOwnership(owner()); emit Deployed(address(_contract)); } function deployLPLocker(uint256 _salt, address owner) public onlyOwner { bytes32 salt = keccak256(abi.encodePacked(_salt, owner)); MFERLPLocker _contract = new MFERLPLocker{salt: salt}(owner); emit Deployed(address(_contract)); } function withdraw(address tkn) public onlyOwner { bool success; if (tkn == address(0)) (success, ) = address(msg.sender).call{ value: address(this).balance }(""); else { require(IERC20(tkn).balanceOf(address(this)) > 0, "No tokens"); uint256 amount = IERC20(tkn).balanceOf(address(this)); IERC20(tkn).transfer(msg.sender, amount); } } }
{ "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","type":"string"},{"internalType":"uint256","name":"supply","type":"uint256"},{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"humanVerifier_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"humanVerified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"onOff","type":"bool"}],"name":"setHumanVerificationRequired","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setHumanVerifier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405260068054743fc91a3afd70395cd496c647d5a6cc9d4b2b7fad016001600160a81b0319909116179055600780546001600160a01b031990811673ef1c6e67703c7bd7107eed8303fbe6ec2554bf6b17909155600880549091167368b3465833fb72a70ecdf485e0e4c7bd8665fc4517905534801562000081575f80fd5b506040516200120738038062001207833981016040819052620000a491620002f3565b620000af33620000ff565b6004620000bd868262000411565b506005620000cc858262000411565b50600980546001600160a01b0319166001600160a01b038316179055620000f482846200014e565b5050505050620004ff565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620001a95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060035f828254620001bc9190620004d9565b90915550506001600160a01b0382165f818152600160209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126200023d575f80fd5b81516001600160401b03808211156200025a576200025a62000219565b604051601f8301601f19908116603f0116810190828211818310171562000285576200028562000219565b81604052838152602092508683858801011115620002a1575f80fd5b5f91505b83821015620002c45785820183015181830184015290820190620002a5565b5f93810190920192909252949350505050565b80516001600160a01b0381168114620002ee575f80fd5b919050565b5f805f805f60a0868803121562000308575f80fd5b85516001600160401b03808211156200031f575f80fd5b6200032d89838a016200022d565b9650602088015191508082111562000343575f80fd5b5062000352888289016200022d565b945050604086015192506200036a60608701620002d7565b91506200037a60808701620002d7565b90509295509295909350565b600181811c908216806200039b57607f821691505b602082108103620003ba57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000214575f81815260208120601f850160051c81016020861015620003e85750805b601f850160051c820191505b818110156200040957828155600101620003f4565b505050505050565b81516001600160401b038111156200042d576200042d62000219565b62000445816200043e845462000386565b84620003c0565b602080601f8311600181146200047b575f8415620004635750858301515b5f19600386901b1c1916600185901b17855562000409565b5f85815260208120601f198616915b82811015620004ab578886015182559484019460019091019084016200048a565b5085821015620004c957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620004f957634e487b7160e01b5f52601160045260245ffd5b92915050565b610cfa806200050d5f395ff3fe608060405234801561000f575f80fd5b5060043610610106575f3560e01c8063715018a61161009e578063a9059cbb1161006e578063a9059cbb1461020c578063b974a30c1461021f578063cec9945914610232578063dd62ed3e14610245578063f2fde38b14610258575f80fd5b8063715018a6146101cd5780638da5cb5b146101d757806395d89b41146101f1578063a457c2d7146101f9575f80fd5b806323b872dd116100d957806323b872dd14610170578063313ce56714610183578063395093511461019257806370a08231146101a5575f80fd5b806306fdde031461010a578063095ea7b3146101285780630988df751461014b57806318160ddd1461015e575b5f80fd5b61011261026b565b60405161011f9190610b12565b60405180910390f35b61013b610136366004610b78565b6102fb565b604051901515815260200161011f565b61013b610159366004610ba0565b610314565b6003545b60405190815260200161011f565b61013b61017e366004610bc0565b610380565b6040516012815260200161011f565b61013b6101a0366004610b78565b6103a3565b6101626101b3366004610ba0565b6001600160a01b03165f9081526001602052604090205490565b6101d56103c4565b005b5f546040516001600160a01b03909116815260200161011f565b6101126103d7565b61013b610207366004610b78565b6103e6565b61013b61021a366004610b78565b610465565b6101d561022d366004610ba0565b610472565b6101d5610240366004610c06565b6104f2565b610162610253366004610c21565b61050d565b6101d5610266366004610ba0565b610537565b60606004805461027a90610c52565b80601f01602080910402602001604051908101604052809291908181526020018280546102a690610c52565b80156102f15780601f106102c8576101008083540402835291602001916102f1565b820191905f5260205f20905b8154815290600101906020018083116102d457829003601f168201915b5050505050905090565b5f336103088185856105b0565b60019150505b92915050565b600954604051630988df7560e01b81526001600160a01b0383811660048301525f921690630988df7590602401602060405180830381865afa15801561035c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030e9190610c8a565b5f3361038d8582856106d3565b61039885858561074b565b506001949350505050565b5f336103088185856103b5838361050d565b6103bf9190610ca5565b6105b0565b6103cc6108fe565b6103d55f610957565b565b60606005805461027a90610c52565b5f33816103f3828661050d565b9050838110156104585760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61039882868684036105b0565b5f3361030881858561074b565b61047a6108fe565b6001600160a01b0381166104d05760405162461bcd60e51b815260206004820152601e60248201527f45524332303a206163636f756e74206973207a65726f20616464726573730000604482015260640161044f565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6104fa6108fe565b6006805460ff1916911515919091179055565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b61053f6108fe565b6001600160a01b0381166105a45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161044f565b6105ad81610957565b50565b6001600160a01b0383166106125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161044f565b6001600160a01b0382166106735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161044f565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6106de848461050d565b90505f19811461074557818110156107385760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161044f565b61074584848484036105b0565b50505050565b6001600160a01b0383166107af5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161044f565b6001600160a01b0382166108115760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161044f565b61081b83836109a6565b6001600160a01b0383165f90815260016020526040902054818110156108925760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161044f565b6001600160a01b038085165f8181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108f19086815260200190565b60405180910390a3610745565b5f546001600160a01b031633146103d55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161044f565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f546001600160a01b038381169116148015906109d057505f546001600160a01b03828116911614155b80156109e457506001600160a01b03811615155b80156109fb57506001600160a01b03811661dead14155b15610b0e576006546001600160a01b038281166101009092041614801590610a3157506007546001600160a01b03828116911614155b8015610a4b57506008546001600160a01b03828116911614155b15610b0e5760065460ff1615610b0e57600954604051630988df7560e01b81526001600160a01b03838116600483015290911690630988df7590602401602060405180830381865afa158015610aa3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac79190610c8a565b1515600114610b0e5760405162461bcd60e51b8152602060048201526013602482015272243ab6b0b7103737ba103b32b934b334b2b21760691b604482015260640161044f565b5050565b5f6020808352835180828501525f5b81811015610b3d57858101830151858201604001528201610b21565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610b73575f80fd5b919050565b5f8060408385031215610b89575f80fd5b610b9283610b5d565b946020939093013593505050565b5f60208284031215610bb0575f80fd5b610bb982610b5d565b9392505050565b5f805f60608486031215610bd2575f80fd5b610bdb84610b5d565b9250610be960208501610b5d565b9150604084013590509250925092565b80151581146105ad575f80fd5b5f60208284031215610c16575f80fd5b8135610bb981610bf9565b5f8060408385031215610c32575f80fd5b610c3b83610b5d565b9150610c4960208401610b5d565b90509250929050565b600181811c90821680610c6657607f821691505b602082108103610c8457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215610c9a575f80fd5b8151610bb981610bf9565b8082018082111561030e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220469005ede69029a04e151f1184b663fae2d726e59a7862406fbaff10ab7e4b7364736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000009ce9f56010fd538dc28000000000000000000000000000000f982a0dbca322d301eb36feee769d8fb46503dee000000000000000000000000111bc4d9ca7f18bd90466bd97902e8add097abea000000000000000000000000000000000000000000000000000000000000000d5445535420444f4e542042555900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b54455354444f4e54425559000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610106575f3560e01c8063715018a61161009e578063a9059cbb1161006e578063a9059cbb1461020c578063b974a30c1461021f578063cec9945914610232578063dd62ed3e14610245578063f2fde38b14610258575f80fd5b8063715018a6146101cd5780638da5cb5b146101d757806395d89b41146101f1578063a457c2d7146101f9575f80fd5b806323b872dd116100d957806323b872dd14610170578063313ce56714610183578063395093511461019257806370a08231146101a5575f80fd5b806306fdde031461010a578063095ea7b3146101285780630988df751461014b57806318160ddd1461015e575b5f80fd5b61011261026b565b60405161011f9190610b12565b60405180910390f35b61013b610136366004610b78565b6102fb565b604051901515815260200161011f565b61013b610159366004610ba0565b610314565b6003545b60405190815260200161011f565b61013b61017e366004610bc0565b610380565b6040516012815260200161011f565b61013b6101a0366004610b78565b6103a3565b6101626101b3366004610ba0565b6001600160a01b03165f9081526001602052604090205490565b6101d56103c4565b005b5f546040516001600160a01b03909116815260200161011f565b6101126103d7565b61013b610207366004610b78565b6103e6565b61013b61021a366004610b78565b610465565b6101d561022d366004610ba0565b610472565b6101d5610240366004610c06565b6104f2565b610162610253366004610c21565b61050d565b6101d5610266366004610ba0565b610537565b60606004805461027a90610c52565b80601f01602080910402602001604051908101604052809291908181526020018280546102a690610c52565b80156102f15780601f106102c8576101008083540402835291602001916102f1565b820191905f5260205f20905b8154815290600101906020018083116102d457829003601f168201915b5050505050905090565b5f336103088185856105b0565b60019150505b92915050565b600954604051630988df7560e01b81526001600160a01b0383811660048301525f921690630988df7590602401602060405180830381865afa15801561035c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061030e9190610c8a565b5f3361038d8582856106d3565b61039885858561074b565b506001949350505050565b5f336103088185856103b5838361050d565b6103bf9190610ca5565b6105b0565b6103cc6108fe565b6103d55f610957565b565b60606005805461027a90610c52565b5f33816103f3828661050d565b9050838110156104585760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61039882868684036105b0565b5f3361030881858561074b565b61047a6108fe565b6001600160a01b0381166104d05760405162461bcd60e51b815260206004820152601e60248201527f45524332303a206163636f756e74206973207a65726f20616464726573730000604482015260640161044f565b600980546001600160a01b0319166001600160a01b0392909216919091179055565b6104fa6108fe565b6006805460ff1916911515919091179055565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b61053f6108fe565b6001600160a01b0381166105a45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161044f565b6105ad81610957565b50565b6001600160a01b0383166106125760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161044f565b6001600160a01b0382166106735760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161044f565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6106de848461050d565b90505f19811461074557818110156107385760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161044f565b61074584848484036105b0565b50505050565b6001600160a01b0383166107af5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161044f565b6001600160a01b0382166108115760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161044f565b61081b83836109a6565b6001600160a01b0383165f90815260016020526040902054818110156108925760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161044f565b6001600160a01b038085165f8181526001602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906108f19086815260200190565b60405180910390a3610745565b5f546001600160a01b031633146103d55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161044f565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f546001600160a01b038381169116148015906109d057505f546001600160a01b03828116911614155b80156109e457506001600160a01b03811615155b80156109fb57506001600160a01b03811661dead14155b15610b0e576006546001600160a01b038281166101009092041614801590610a3157506007546001600160a01b03828116911614155b8015610a4b57506008546001600160a01b03828116911614155b15610b0e5760065460ff1615610b0e57600954604051630988df7560e01b81526001600160a01b03838116600483015290911690630988df7590602401602060405180830381865afa158015610aa3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac79190610c8a565b1515600114610b0e5760405162461bcd60e51b8152602060048201526013602482015272243ab6b0b7103737ba103b32b934b334b2b21760691b604482015260640161044f565b5050565b5f6020808352835180828501525f5b81811015610b3d57858101830151858201604001528201610b21565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610b73575f80fd5b919050565b5f8060408385031215610b89575f80fd5b610b9283610b5d565b946020939093013593505050565b5f60208284031215610bb0575f80fd5b610bb982610b5d565b9392505050565b5f805f60608486031215610bd2575f80fd5b610bdb84610b5d565b9250610be960208501610b5d565b9150604084013590509250925092565b80151581146105ad575f80fd5b5f60208284031215610c16575f80fd5b8135610bb981610bf9565b5f8060408385031215610c32575f80fd5b610c3b83610b5d565b9150610c4960208401610b5d565b90509250929050565b600181811c90821680610c6657607f821691505b602082108103610c8457634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60208284031215610c9a575f80fd5b8151610bb981610bf9565b8082018082111561030e57634e487b7160e01b5f52601160045260245ffdfea2646970667358221220469005ede69029a04e151f1184b663fae2d726e59a7862406fbaff10ab7e4b7364736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000009ce9f56010fd538dc28000000000000000000000000000000f982a0dbca322d301eb36feee769d8fb46503dee000000000000000000000000111bc4d9ca7f18bd90466bd97902e8add097abea000000000000000000000000000000000000000000000000000000000000000d5445535420444f4e542042555900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b54455354444f4e54425559000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : name_ (string): TEST DONT BUY
Arg [1] : symbol_ (string): TESTDONTBUY
Arg [2] : supply (uint256): 777000000000000000000000000000
Arg [3] : owner (address): 0xF982A0dbCa322d301EB36FEee769d8fB46503deE
Arg [4] : humanVerifier_ (address): 0x111Bc4D9Ca7F18bD90466Bd97902E8ADd097aBEa
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000009ce9f56010fd538dc28000000
Arg [3] : 000000000000000000000000f982a0dbca322d301eb36feee769d8fb46503dee
Arg [4] : 000000000000000000000000111bc4d9ca7f18bd90466bd97902e8add097abea
Arg [5] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [6] : 5445535420444f4e542042555900000000000000000000000000000000000000
Arg [7] : 000000000000000000000000000000000000000000000000000000000000000b
Arg [8] : 54455354444f4e54425559000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.