ERC-20
Overview
Max Total Supply
100,000,000 DARK
Holders
1,132
Market
Price
$0.00 @ 0.000000 S
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
2,628,728,006,243,287.116327589077029086 DARKValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
DARK
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
No with 200 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
/* DARKHOLE - $DARK Website: https://darkhole.online/ Twitter: https://x.com/DarkHoleSonic Telegram: https://t.me/DarkHoleSonic @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*+*%@@@@@@@%@@@@@@@@@@@@%%+--+%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+#%@@@@@@@@@@@%@@@@@%%%#@@@%%@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@%%@@@*@%=#@@@@@@@%@@%*==**=:==+##+*###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@%+%@@@%@@#@@@%#=#%%-:-......:...:--.=++==***##@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@%@@@@+:@@@@@@#@@@*=-:@@+....::---:-::-+*#%-:..:....:-+####%%%@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@%@@@@%#@@@@*#:+*#-+#%#:..-=+*****#%@@@@@#+--::..-=::...::=+%%%#%@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@=-..==*#@@*::-=+#%%%%@@@@@@@@%%%%%%%##%%%#*=-:..:-=*%%%@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@%@@%@+-:.-=@@@@#++*#%%%%@@@@@@@@@@@%@@@@@@@@@#=:..:=--::::=*#%%@@##@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@##+-:*@@@@%#####%@@@@@@@@@@@@@@@@%%#%#%@%@%%%%=::.......+%%%@@@%*@@@@@@@@@@@@@@@ @@@@@@@@@@@%@@@@@#@%-+=:*@@@%#####%@@@@@@@@@@@@@@@@%@@@@@%###%%%@@@@%%#-.....:=%%@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@%#@@@@%@*--+:#@@@%##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%*+:...-==#@@@@@@@@@@@@@@@@@@ @@@@@@@@@@*@@@@@%+=:+*%@@@%#%%@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###*=::...-*##%%@@@@@@@@@@@@@@@ @@@@@@@@@@#@@@@@=*+:+#%@@@%%@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@%%#**+:..:--.:%%%%%@@@@@@@@@@@@@@ @@@@@@@@@@#%@%@@=*-*%#@@@@%%@@@@@@@@@@@@@@@@@@@@@@%%%%#%%%@@@@@@@@@@%%=-----...:-=+###*%@@@@@@@@@@@@ @@@@@@@%@@@*@@@@:*+%@@@@@@%@@@@@@@@@@@@@@@%%%%%%%%%%%%%#%##%@@@@@@@@@%*+*===+......-*%%-+@@@@@@@@@@@ @@@@@@@@@@@+%%@%=*#@@@@@@%@@@@@@@@@@@@%%%%%%#****+++=+****##%@@@@@@@@@@@##%@%#=:.....=%@*-@@@@@@@@@@ @@@@@@@@@@@+-*@=+*%@@@@@%%%@@@@@@@@@@%@%%#**+++=+-:-:.:=+++*#%@@@@@@@@@@@@@@@@#=:....:+%@@*@@@@@@@@@ @@@@@@%@@@*+=*-.++%@@@@%%%%@@@@@@@@@@%%%*+====---::.....:-=+*#%%%@@@@@@@@@%@@@@%*-...:=#@@@%@@@@@@@@ @@@@@@*@@%@-:+::=+%@@@%%%%%%%@@@@@@%%%#++=+=--=-::::::....:-=+*%%%%@@@@@@@@@@@@@#-:...:+#%%%@@@@@@@@ @@@@@@*@@#%--#=:*%@@@@@@@@%%%%%%%@@%%%#+==----:.............:-=+#%#@%@@@@@@@@@@@#-.:...=#%==%@%@@@@@ @@@@@@@@%@#:*%*:#%%@@@@@@@@%%%%%@@@%%#+-=:=:...............::==-+###%@@@@@@@@@@@%==:....##+..@@@@@@@ @@@@@@#@@@%-=+#+*%@@@@@%@@@@@@@@@@@%#*----..................:::--*#%%%@@@@@@@@@@@##:.....##.=@@@@@@@ @@@@@@@@@%#+--=%#%@@@@@@@@@@@@@@@@%##-:::...................::-::=+#%%@@@@@@@@@@@%+:.....:*-%@@@@@@@ @@@@@@@@@@*@*-=##%@@@@@@@@@@@@@@@@#%#=:......................::::-**#%@@@@@@@@@@@@#+:.....:+@@@@@@@@ @@@@@@@@@@@%*=-**#%@@@@@@@@@@@@@@@%#*+:.................:...:..:--+*#%@@@@@@@@@@@%%+:...::-+@@@@@@@@ @@@@@@@@@@@@***+**#@@@@@@@@@@@@@@%%#+=:.......................:::=+*%@@@@@@@@@@@@%#:.....=##@@@@@@@@ @@@@@@@@@@@@#@%+*=*%@@@@@@@@@@@@@%%#+=::......................::==#%@@@@@@@@@%#%@%*-:.:.++%@%@@@@@@@ @@@@@@#=@@@%@%%%@**#@@@@@@@@@@@@@@%##+-::.....:...............:==+%%@@@@@@@@@%#%%##+..:-*+%@@@@@@@@@ @@@@@@@**@@@+=@%@@%#%@@@@@@@@@@@@@%##*=--:::...........-:.:+::-=+**#%@@@@@@@%%%%%**-...::%@@@@%@@@@@ @@@@@@@@%@@#*-=%@@@@#@@@@@@@@@%@@@@%%#+==---:::::.::---:..::-==+=-*##%@@@%@@@%%%#*+:...*:%@@@%%@@@@@ @@@@@@@@@@@%++:+%%%@@@@@@@@@@@@%%@@@@%%#*=--=----=+=-::::-===+==:=*##%%@@@@@%%%#*=:...-%+%@@@=@@@@@@ @@@@@@@@@@@@@@+=+%%%@@@@@@@@@@@@@%%%@%%%%#***+===--========-==:=+*#%%%%%%@@@%%%*=::.-.%@*@@@@%@@@@@@ @@@@@@@@@@*@@@@@%%@@@@@@@@@@@@@@@@@@@@@@%%%###**+===-:=++++++******##%%%%%%%***-...###@@#@@@@@@@@@@@ @@@@@@@@@@@%@@@@@@%+%@@@@@@@@@@@@@@@@@@@@@%%%######***##%%%%%%%%%##########***=-:.*%@@@##@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@%%%@%%@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@%%%%@@@@@@@%%#*****++-==-:+*#%@@#%@@@%%@@@@@@ @@@@@@@@@@@@@@@@@@%@@@###%%%@@@@@@@@@@@@@@@@@@@@@@%@@%%%@@@@@@@@@@@%+###*++===:.-+#%@@@#@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@#+=****%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%#**===.=-*%@@@%#%@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@#***#%*%@@@@@@@@@@%%%%%@@@@@@@@@#%%%@%%%%%%%***+..-.=%@@@@+:@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@%%#++*##%%%%%%%@@%%%%#*##%@@@%#*#%*%##%%%%*==+#:.....#@@@@%#%@@@@@@@@@@@@@ @@@@@@@@@@@@%@@@@@@@@@@%@@@@@@@%@%####%%#*****+**+***+**##*+###%%%#---.::=*:=*%@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%*++=--:::......:::.:=+%%%%#+--=*=..:+#+=%@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@#*%%@@@%%*+=+=-:..........:--++***+=--..:+=:+*%%#@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%*++=::=-......--=+-*--:..-*=*=+#-*%%*@@@@@@@@@%@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@#=#@@@@@@@@@@@@@@@#*-:..............+*@@@%*##%*+@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@%#%##*=*++-::..:-:..:.-=+##+=*%%@@@%*%*-:*@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#*#%##@@@%%@@%@@@@@@@%###%%@@@@%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#%@@%%@@@#@@#++#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#*#%@@@@@@@@@%*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.13; import "@openzeppelin/[email protected]/token/ERC20/ERC20.sol"; import "@transmissions11/solmate/src/auth/Owned.sol"; contract DARK is ERC20, Owned { mapping(address => bool) public isExempt; uint256 public maxTransaction; bool public limitsRemoved = false; constructor(address deployer, uint256 supply) ERC20("DARKHOLE", "DARK") Owned(deployer) { isExempt[deployer] = true; isExempt[address(this)] = true; isExempt[msg.sender] = true; maxTransaction = supply * 2 / 100; _mint(deployer, supply); } function _transfer(address from, address to, uint256 amount) internal virtual override { if (!limitsRemoved) { if (!isExempt[from] && !isExempt[to]) { require(amount <= maxTransaction, "Exceeds MaxTx Limit"); } } super._transfer(from, to, amount); } function removeAllLimits() external onlyOwner { maxTransaction = totalSupply(); limitsRemoved = true; } function renounceOwnership() external onlyOwner { transferOwnership(address(0)); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.2.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.20; import {IERC20} from "./IERC20.sol"; import {IERC20Metadata} from "./extensions/IERC20Metadata.sol"; import {Context} from "../../utils/Context.sol"; import {IERC20Errors} from "../../interfaces/draft-IERC6093.sol"; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC-20 * applications. */ abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors { mapping(address account => uint256) private _balances; mapping(address account => mapping(address spender => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `value`. */ function transfer(address to, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _transfer(owner, to, value); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, value); return true; } /** * @dev See {IERC20-transferFrom}. * * Skips emitting an {Approval} event indicating an allowance update. This is not * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `value`. * - the caller must have allowance for ``from``'s tokens of at least * `value`. */ function transferFrom(address from, address to, uint256 value) public virtual returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, value); _transfer(from, to, value); return true; } /** * @dev Moves a `value` amount of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _transfer(address from, address to, uint256 value) internal virtual { if (from == address(0)) { revert ERC20InvalidSender(address(0)); } if (to == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(from, to, value); } /** * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from` * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding * this function. * * Emits a {Transfer} event. */ function _update(address from, address to, uint256 value) internal virtual { if (from == address(0)) { // Overflow check required: The rest of the code assumes that totalSupply never overflows _totalSupply += value; } else { uint256 fromBalance = _balances[from]; if (fromBalance < value) { revert ERC20InsufficientBalance(from, fromBalance, value); } unchecked { // Overflow not possible: value <= fromBalance <= totalSupply. _balances[from] = fromBalance - value; } } if (to == address(0)) { unchecked { // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply. _totalSupply -= value; } } else { unchecked { // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256. _balances[to] += value; } } emit Transfer(from, to, value); } /** * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0). * Relies on the `_update` mechanism * * Emits a {Transfer} event with `from` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead. */ function _mint(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(address(0), account, value); } /** * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply. * Relies on the `_update` mechanism. * * Emits a {Transfer} event with `to` set to the zero address. * * NOTE: This function is not virtual, {_update} should be overridden instead */ function _burn(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidSender(address(0)); } _update(account, address(0), value); } /** * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. * * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument. */ function _approve(address owner, address spender, uint256 value) internal { _approve(owner, spender, value, true); } /** * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event. * * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any * `Approval` event during `transferFrom` operations. * * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to * true using the following override: * * ```solidity * function _approve(address owner, address spender, uint256 value, bool) internal virtual override { * super._approve(owner, spender, value, true); * } * ``` * * Requirements are the same as {_approve}. */ function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual { if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); } if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); } _allowances[owner][spender] = value; if (emitEvent) { emit Approval(owner, spender, value); } } /** * @dev Updates `owner` s allowance for `spender` based on spent `value`. * * Does not update the allowance value in case of infinite allowance. * Revert if not enough allowance is available. * * Does not emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 value) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance < type(uint256).max) { if (currentAllowance < value) { revert ERC20InsufficientAllowance(spender, currentAllowance, value); } unchecked { _approve(owner, spender, currentAllowance - value, false); } } } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Simple single owner authorization mixin. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol) abstract contract Owned { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event OwnershipTransferred(address indexed user, address indexed newOwner); /*////////////////////////////////////////////////////////////// OWNERSHIP STORAGE //////////////////////////////////////////////////////////////*/ address public owner; bytes32 private constant _OWNERSHIP_SLOT = 0xa58a6b793a0b6e42c88ec3ffe5a29303d384cd8e453ec07f936a59cef0bd80ef; modifier onlyOwner() virtual { require(msg.sender == owner, "UNAUTHORIZED"); _; } /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(address _owner) { owner = _owner; assembly {sstore(_OWNERSHIP_SLOT, _owner)} emit OwnershipTransferred(address(0), _owner); } /*////////////////////////////////////////////////////////////// OWNERSHIP LOGIC //////////////////////////////////////////////////////////////*/ function transferOwnership(address newOwner) public virtual onlyOwner { owner = newOwner; emit OwnershipTransferred(msg.sender, newOwner); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.20; /** * @dev Interface of the ERC-20 standard as defined in the ERC. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the value of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the value of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves a `value` amount of tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 value) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets a `value` amount of tokens as the allowance of `spender` over the * caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 value) external returns (bool); /** * @dev Moves a `value` amount of tokens from `from` to `to` using the * allowance mechanism. `value` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 value) external returns (bool); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.20; import {IERC20} from "../IERC20.sol"; /** * @dev Interface for the optional metadata functions from the ERC-20 standard. */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol) pragma solidity ^0.8.20; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } function _contextSuffixLength() internal view virtual returns (uint256) { return 0; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol) pragma solidity ^0.8.20; /** * @dev Standard ERC-20 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens. */ interface IERC20Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC20InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC20InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers. * @param spender Address that may be allowed to operate on tokens without being their owner. * @param allowance Amount of tokens a `spender` is allowed to operate with. * @param needed Minimum amount required to perform a transfer. */ error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC20InvalidApprover(address approver); /** * @dev Indicates a failure with the `spender` to be approved. Used in approvals. * @param spender Address that may be allowed to operate on tokens without being their owner. */ error ERC20InvalidSpender(address spender); } /** * @dev Standard ERC-721 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens. */ interface IERC721Errors { /** * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. * Used in balance queries. * @param owner Address of the current owner of a token. */ error ERC721InvalidOwner(address owner); /** * @dev Indicates a `tokenId` whose `owner` is the zero address. * @param tokenId Identifier number of a token. */ error ERC721NonexistentToken(uint256 tokenId); /** * @dev Indicates an error related to the ownership over a particular token. Used in transfers. * @param sender Address whose tokens are being transferred. * @param tokenId Identifier number of a token. * @param owner Address of the current owner of a token. */ error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC721InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC721InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param tokenId Identifier number of a token. */ error ERC721InsufficientApproval(address operator, uint256 tokenId); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC721InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC721InvalidOperator(address operator); } /** * @dev Standard ERC-1155 Errors * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens. */ interface IERC1155Errors { /** * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. * @param balance Current balance for the interacting account. * @param needed Minimum amount required to perform a transfer. * @param tokenId Identifier number of a token. */ error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId); /** * @dev Indicates a failure with the token `sender`. Used in transfers. * @param sender Address whose tokens are being transferred. */ error ERC1155InvalidSender(address sender); /** * @dev Indicates a failure with the token `receiver`. Used in transfers. * @param receiver Address to which tokens are being transferred. */ error ERC1155InvalidReceiver(address receiver); /** * @dev Indicates a failure with the `operator`’s approval. Used in transfers. * @param operator Address that may be allowed to operate on tokens without being their owner. * @param owner Address of the current owner of a token. */ error ERC1155MissingApprovalForAll(address operator, address owner); /** * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals. * @param approver Address initiating an approval operation. */ error ERC1155InvalidApprover(address approver); /** * @dev Indicates a failure with the `operator` to be approved. Used in approvals. * @param operator Address that may be allowed to operate on tokens without being their owner. */ error ERC1155InvalidOperator(address operator); /** * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. * Used in batch transfers. * @param idsLength Length of the array of token identifiers * @param valuesLength Length of the array of token amounts */ error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength); }
{ "remappings": [ "solmate/=lib/solmate/src/", "ds-test/=lib/solmate/lib/ds-test/src/", "forge-std/=lib/forge-std/src/", "v3-core/=lib/v3-core/", "@uniswap/v3-core/=lib/v3-core/", "@uniswap/v3-periphery/=lib/v3-periphery/", "@openzeppelin/[email protected]/=lib/openzeppelin-contracts/contracts/", "@transmissions11/solmate/src/=lib/solmate/src/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "v3-periphery/=lib/v3-periphery/contracts/" ], "optimizer": { "enabled": false, "runs": 200 }, "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "evmVersion": "cancun", "viaIR": true, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"deployer","type":"address"},{"internalType":"uint256","name":"supply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"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":"user","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":"value","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":"","type":"address"}],"name":"isExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsRemoved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"removeAllLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"value","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":"value","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
6080604052346100305761001a61001461012a565b906103d4565b610022610035565b611357610a89823961135790f35b61003b565b60405190565b5f80fd5b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906100679061003f565b810190811060018060401b0382111761007f57604052565b610049565b90610097610090610035565b928361005d565b565b5f80fd5b60018060a01b031690565b6100b19061009d565b90565b6100bd816100a8565b036100c457565b5f80fd5b905051906100d5826100b4565b565b90565b6100e3816100d7565b036100ea57565b5f80fd5b905051906100fb826100da565b565b91906040838203126101255780610119610122925f86016100c8565b936020016100ee565b90565b610099565b610148611de08038038061013d81610084565b9283398101906100fd565b9091565b60018060401b0381116101685761016460209161003f565b0190565b610049565b9061017f61017a8361014c565b610084565b918252565b5f7f4441524b484f4c45000000000000000000000000000000000000000000000000910152565b6101b5600861016d565b906101c260208301610184565b565b6101cc6101ab565b90565b5f7f4441524b00000000000000000000000000000000000000000000000000000000910152565b610200600461016d565b9061020d602083016101cf565b565b6102176101f6565b90565b5f1b90565b9061022b60ff9161021a565b9181191691161790565b151590565b61024390610235565b90565b90565b9061025e6102596102659261023a565b610246565b825461021f565b9055565b90565b61028061027b6102859261009d565b610269565b61009d565b90565b6102919061026c565b90565b61029d90610288565b90565b906102aa90610294565b5f5260205260405f2090565b6102bf90610288565b90565b90565b6102d96102d46102de926102c2565b610269565b6100d7565b90565b634e487b7160e01b5f52601160045260245ffd5b61030461030a919392936100d7565b926100d7565b916103168382026100d7565b92818404149015171561032557565b6102e1565b90565b61034161033c6103469261032a565b610269565b6100d7565b90565b634e487b7160e01b5f52601260045260245ffd5b61036961036f916100d7565b916100d7565b90811561037a570490565b610349565b9061038b5f199161021a565b9181191691161790565b6103a96103a46103ae926100d7565b610269565b6100d7565b90565b90565b906103c96103c46103d092610395565b6103b1565b825461037f565b9055565b9061047e916103f3816103e56101c4565b6103ed61020f565b916104ee565b6103fe5f6008610249565b610414600161040f600684906102a0565b610249565b610432600161042d6006610427306102b6565b906102a0565b610249565b6104486001610443600633906102a0565b610249565b6104796104726104628461045c60026102c5565b906102f5565b61046c606461032d565b9061035d565b60076103b4565b6107e7565b565b9061049160018060a01b039161021a565b9181191691161790565b90565b906104b36104ae6104ba92610294565b61049b565b8254610480565b9055565b90565b6104d56104d06104da926104be565b610269565b61009d565b90565b6104e6906104c1565b90565b5f0190565b916104f8916107ad565b61050381600561049e565b807fa58a6b793a0b6e42c88ec3ffe5a29303d384cd8e453ec07f936a59cef0bd80ef5561052f5f6104dd565b9061056361055d7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610294565b91610294565b9161056c610035565b80610576816104e9565b0390a3565b5190565b634e487b7160e01b5f52602260045260245ffd5b90600160028304921680156105b3575b60208310146105ae57565b61057f565b91607f16916105a3565b5f5260205f2090565b601f602091010490565b1b90565b919060086105ef9102916105e95f19846105d0565b926105d0565b9181191691161790565b919061060f61060a61061793610395565b6103b1565b9083546105d4565b9055565b5f90565b6106319161062b61061b565b916105f9565b565b5b81811061063f575050565b8061064c5f60019361061f565b01610634565b9190601f8111610662575b505050565b61066e610693936105bd565b90602061067a846105c6565b8301931061069b575b61068c906105c6565b0190610633565b5f808061065d565b915061068c81929050610683565b1c90565b906106bd905f19906008026106a9565b191690565b816106cc916106ad565b906002021790565b906106de8161057b565b9060018060401b03821161079c57610700826106fa8554610593565b85610652565b602090601f831160011461073457918091610723935f92610728575b50506106c2565b90555b565b90915001515f8061071c565b601f19831691610743856105bd565b925f5b8181106107845750916002939185600196941061076a575b50505002019055610726565b61077a910151601f8416906106ad565b90555f808061075e565b91936020600181928787015181550195019201610746565b610049565b906107ab916106d4565b565b906107bc6107c39260036107a1565b60046107a1565b565b6107ce906100a8565b9052565b91906107e5905f602085019401906107c5565b565b806108026107fc6107f75f6104dd565b6100a8565b916100a8565b1461081e5761081c916108145f6104dd565b919091610919565b565b61084161082a5f6104dd565b5f91829163ec442f0560e01b8352600483016107d2565b0390fd5b9061084f90610294565b5f5260205260405f2090565b5f1c90565b90565b61086f6108749161085b565b610860565b90565b6108819054610863565b90565b61088d906100d7565b9052565b6040906108ba6108c194969593966108b060608401985f8501906107c5565b6020830190610884565b0190610884565b565b906108ce91036100d7565b90565b6108e06108e6919392936100d7565b926100d7565b82018092116108f157565b6102e1565b9061090191016100d7565b90565b9190610917905f60208501940190610884565b565b9190918061093761093161092c5f6104dd565b6100a8565b916100a8565b145f14610a185761095b6109548361094f6002610877565b6108d1565b60026103b4565b5b8261097761097161096c5f6104dd565b6100a8565b916100a8565b145f146109ec5761099b6109948361098f6002610877565b6108c3565b60026103b4565b5b9190916109e76109d56109cf7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93610294565b93610294565b936109de610035565b91829182610904565b0390a3565b610a1382610a0d6109fe5f8790610845565b91610a0883610877565b6108f6565b906103b4565b61099c565b610a2b610a265f8390610845565b610877565b80610a3e610a38856100d7565b916100d7565b10610a6657610a51610a619184906108c3565b610a5c5f8490610845565b6103b4565b61095c565b90610a849091925f93849363391434e360e21b855260048501610891565b0390fdfe60806040526004361015610013575b6107bf565b61001d5f3561011c565b806306fdde0314610117578063095ea7b31461011257806318160ddd1461010d5780631d6f96551461010857806323b872dd14610103578063313ce567146100fe57806370a08231146100f9578063715018a6146100f45780638da5cb5b146100ef57806395d89b41146100ea578063a9059cbb146100e5578063ad5dff73146100e0578063c3f70b52146100db578063db05e5cb146100d6578063dd62ed3e146100d15763f2fde38b0361000e5761078c565b610756565b6106f6565b6106c1565b610654565b6105b8565b610583565b61054e565b6104b9565b61047f565b61042c565b6103ce565b61035f565b6102eb565b610293565b6101aa565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261013a57565b61012c565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b61018061018960209361018e936101778161013f565b93848093610143565b9586910161014c565b610157565b0190565b6101a79160208201915f818403910152610161565b90565b346101da576101ba366004610130565b6101d66101c561091c565b6101cd610122565b91829182610192565b0390f35b610128565b60018060a01b031690565b6101f3906101df565b90565b6101ff816101ea565b0361020657565b5f80fd5b90503590610217826101f6565b565b90565b61022581610219565b0361022c57565b5f80fd5b9050359061023d8261021c565b565b9190604083820312610267578061025b610264925f860161020a565b93602001610230565b90565b61012c565b151590565b61027a9061026c565b9052565b9190610291905f60208501940190610271565b565b346102c4576102c06102af6102a936600461023f565b90610936565b6102b7610122565b9182918261027e565b0390f35b610128565b6102d290610219565b9052565b91906102e9905f602085019401906102c9565b565b3461031b576102fb366004610130565b610317610306610982565b61030e610122565b918291826102d6565b0390f35b610128565b1c90565b60ff1690565b61033a90600861033f9302610320565b610324565b90565b9061034d915461032a565b90565b61035c60085f90610342565b90565b3461038f5761036f366004610130565b61038b61037a610350565b610382610122565b9182918261027e565b0390f35b610128565b90916060828403126103c9576103c66103af845f850161020a565b936103bd816020860161020a565b93604001610230565b90565b61012c565b346103ff576103fb6103ea6103e4366004610394565b91610998565b6103f2610122565b9182918261027e565b0390f35b610128565b60ff1690565b61041390610404565b9052565b919061042a905f6020850194019061040a565b565b3461045c5761043c366004610130565b6104586104476109ea565b61044f610122565b91829182610417565b0390f35b610128565b9060208282031261047a57610477915f0161020a565b90565b61012c565b346104af576104ab61049a610495366004610461565b610a16565b6104a2610122565b918291826102d6565b0390f35b610128565b5f0190565b346104e7576104c9366004610130565b6104d1610b44565b6104d9610122565b806104e3816104b4565b0390f35b610128565b60018060a01b031690565b61050790600861050c9302610320565b6104ec565b90565b9061051a91546104f7565b90565b61052960055f9061050f565b90565b610535906101ea565b9052565b919061054c905f6020850194019061052c565b565b3461057e5761055e366004610130565b61057a61056961051d565b610571610122565b91829182610539565b0390f35b610128565b346105b357610593366004610130565b6105af61059e610b4e565b6105a6610122565b91829182610192565b0390f35b610128565b346105e9576105e56105d46105ce36600461023f565b90610b64565b6105dc610122565b9182918261027e565b0390f35b610128565b90565b61060561060061060a926101df565b6105ee565b6101df565b90565b610616906105f1565b90565b6106229061060d565b90565b9061062f90610619565b5f5260205260405f2090565b6106519061064c6006915f92610625565b610342565b90565b346106845761068061066f61066a366004610461565b61063b565b610677610122565b9182918261027e565b0390f35b610128565b90565b61069c9060086106a19302610320565b610689565b90565b906106af915461068c565b90565b6106be60075f906106a4565b90565b346106f1576106d1366004610130565b6106ed6106dc6106b2565b6106e4610122565b918291826102d6565b0390f35b610128565b3461072457610706366004610130565b61070e610c74565b610716610122565b80610720816104b4565b0390f35b610128565b9190604083820312610751578061074561074e925f860161020a565b9360200161020a565b90565b61012c565b346107875761078361077261076c366004610729565b90610c94565b61077a610122565b918291826102d6565b0390f35b610128565b346107ba576107a461079f366004610461565b610d82565b6107ac610122565b806107b6816104b4565b0390f35b610128565b5f80fd5b606090565b634e487b7160e01b5f52602260045260245ffd5b90600160028304921680156107fc575b60208310146107f757565b6107c8565b91607f16916107ec565b60209181520190565b5f5260205f2090565b905f929180549061083261082b836107dc565b8094610806565b916001811690815f14610889575060011461084d575b505050565b61085a919293945061080f565b915f925b81841061087157505001905f8080610848565b6001816020929593955484860152019101929061085e565b92949550505060ff19168252151560200201905f8080610848565b906108ae91610818565b90565b634e487b7160e01b5f52604160045260245ffd5b906108cf90610157565b810190811067ffffffffffffffff8211176108e957604052565b6108b1565b9061090e610907926108fe610122565b938480926108a4565b03836108c5565b565b610919906108ee565b90565b6109246107c3565b5061092f6003610910565b90565b5f90565b61095391610942610932565b5061094b610d91565b919091610d9e565b600190565b5f90565b5f1c90565b61096d6109729161095c565b610689565b90565b61097f9054610961565b90565b61098a610958565b506109956002610975565b90565b916109c2926109a5610932565b506109ba6109b1610d91565b82908491610dee565b919091610f1d565b600190565b5f90565b90565b6109e26109dd6109e7926109cb565b6105ee565b610404565b90565b6109f26109c7565b506109fd60126109ce565b90565b90610a0a90610619565b5f5260205260405f2090565b610a2c610a3191610a25610958565b505f610a00565b610975565b90565b610a40610a459161095c565b6104ec565b90565b610a529054610a34565b90565b5f7f554e415554484f52495a45440000000000000000000000000000000000000000910152565b610a89600c602092610143565b610a9281610a55565b0190565b610aab9060208101905f818303910152610a7c565b90565b15610ab557565b610abd610122565b62461bcd60e51b815280610ad360048201610a96565b0390fd5b610afc33610af6610af0610aeb6005610a48565b6101ea565b916101ea565b14610aae565b610b04610b31565b565b90565b610b1d610b18610b2292610b06565b6105ee565b6101df565b90565b610b2e90610b09565b90565b610b42610b3d5f610b25565b610d82565b565b610b4c610ad7565b565b610b566107c3565b50610b616004610910565b90565b610b8191610b70610932565b50610b79610d91565b919091610f1d565b600190565b610bab33610ba5610b9f610b9a6005610a48565b6101ea565b916101ea565b14610aae565b610bb3610c54565b565b5f1b90565b90610bc65f1991610bb5565b9181191691161790565b610be4610bdf610be992610219565b6105ee565b610219565b90565b90565b90610c04610bff610c0b92610bd0565b610bec565b8254610bba565b9055565b90610c1b60ff91610bb5565b9181191691161790565b610c2e9061026c565b90565b90565b90610c49610c44610c5092610c25565b610c31565b8254610c0f565b9055565b610c66610c5f610982565b6007610bef565b610c7260016008610c34565b565b610c7c610b86565b565b90610c8890610619565b5f5260205260405f2090565b610cb991610caf610cb492610ca7610958565b506001610c7e565b610a00565b610975565b90565b610cea90610ce533610cdf610cd9610cd46005610a48565b6101ea565b916101ea565b14610aae565b610d2a565b565b90610cfd60018060a01b0391610bb5565b9181191691161790565b90565b90610d1f610d1a610d2692610619565b610d07565b8254610cec565b9055565b610d35816005610d0a565b3390610d6a610d647f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610619565b91610619565b91610d73610122565b80610d7d816104b4565b0390a3565b610d8b90610cbc565b565b5f90565b610d99610d8d565b503390565b91610dac9291600192610fbf565b565b604090610dd7610dde9496959396610dcd60608401985f85019061052c565b60208301906102c9565b01906102c9565b565b90610deb9103610219565b90565b929192610dfc818390610c94565b9081610e11610e0b5f19610219565b91610219565b10610e1e575b5050509050565b81610e31610e2b87610219565b91610219565b10610e5757610e4e9394610e46919392610de0565b905f92610fbf565b805f8080610e17565b50610e76849291925f938493637dc7a0d960e11b855260048501610dae565b0390fd5b610e86610e8b9161095c565b610324565b90565b610e989054610e7a565b90565b5f7f45786365656473204d61785478204c696d697400000000000000000000000000910152565b610ecf6013602092610143565b610ed881610e9b565b0190565b610ef19060208101905f818303910152610ec2565b90565b15610efb57565b610f03610122565b62461bcd60e51b815280610f1960048201610edc565b0390fd5b91610f4292610f35610f2f6008610e8e565b1561026c565b610f44575b9190916110ce565b565b610f61610f5b610f5660068490610625565b610e8e565b1561026c565b80610f9c575b610f71575b610f3a565b610f9782610f90610f8a610f856007610975565b610219565b91610219565b1115610ef4565b610f6c565b50610fba610fb4610faf60068690610625565b610e8e565b1561026c565b610f67565b909281610fdc610fd6610fd15f610b25565b6101ea565b916101ea565b146110a75783610ffc610ff6610ff15f610b25565b6101ea565b916101ea565b14611080576110208361101b61101460018690610c7e565b8790610a00565b610bef565b61102a575b505050565b91909161107561106361105d7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593610619565b93610619565b9361106c610122565b918291826102d6565b0390a35f8080611025565b6110a361108c5f610b25565b5f918291634a1406b160e11b835260048301610539565b0390fd5b6110ca6110b35f610b25565b5f91829163e602df0560e01b835260048301610539565b0390fd5b91826110ea6110e46110df5f610b25565b6101ea565b916101ea565b14611144578161110a6111046110ff5f610b25565b6101ea565b916101ea565b1461111d5761111b929190916111b2565b565b6111406111295f610b25565b5f91829163ec442f0560e01b835260048301610539565b0390fd5b6111676111505f610b25565b5f918291634b637e8f60e11b835260048301610539565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61118e61119491939293610219565b92610219565b820180921161119f57565b61116b565b906111af9101610219565b90565b919091806111d06111ca6111c55f610b25565b6101ea565b916101ea565b145f146112b1576111f46111ed836111e86002610975565b61117f565b6002610bef565b5b8261121061120a6112055f610b25565b6101ea565b916101ea565b145f146112855761123461122d836112286002610975565b610de0565b6002610bef565b5b91909161128061126e6112687fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93610619565b93610619565b93611277610122565b918291826102d6565b0390a3565b6112ac826112a66112975f8790610a00565b916112a183610975565b6111a4565b90610bef565b611235565b6112c46112bf5f8390610a00565b610975565b806112d76112d185610219565b91610219565b106112ff576112ea6112fa918490610de0565b6112f55f8490610a00565b610bef565b6111f5565b9061131d9091925f93849363391434e360e21b855260048501610dae565b0390fdfea264697066735822122046621bf5c07670b04cc763a202cae609fd5d40003eb18c6f402fedb37c3490fa64736f6c634300081a0033000000000000000000000000e3a16592bde7cdb643f74dde7b5f5522215f423700000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
Deployed Bytecode
0x60806040526004361015610013575b6107bf565b61001d5f3561011c565b806306fdde0314610117578063095ea7b31461011257806318160ddd1461010d5780631d6f96551461010857806323b872dd14610103578063313ce567146100fe57806370a08231146100f9578063715018a6146100f45780638da5cb5b146100ef57806395d89b41146100ea578063a9059cbb146100e5578063ad5dff73146100e0578063c3f70b52146100db578063db05e5cb146100d6578063dd62ed3e146100d15763f2fde38b0361000e5761078c565b610756565b6106f6565b6106c1565b610654565b6105b8565b610583565b61054e565b6104b9565b61047f565b61042c565b6103ce565b61035f565b6102eb565b610293565b6101aa565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f91031261013a57565b61012c565b5190565b60209181520190565b90825f9392825e0152565b601f801991011690565b61018061018960209361018e936101778161013f565b93848093610143565b9586910161014c565b610157565b0190565b6101a79160208201915f818403910152610161565b90565b346101da576101ba366004610130565b6101d66101c561091c565b6101cd610122565b91829182610192565b0390f35b610128565b60018060a01b031690565b6101f3906101df565b90565b6101ff816101ea565b0361020657565b5f80fd5b90503590610217826101f6565b565b90565b61022581610219565b0361022c57565b5f80fd5b9050359061023d8261021c565b565b9190604083820312610267578061025b610264925f860161020a565b93602001610230565b90565b61012c565b151590565b61027a9061026c565b9052565b9190610291905f60208501940190610271565b565b346102c4576102c06102af6102a936600461023f565b90610936565b6102b7610122565b9182918261027e565b0390f35b610128565b6102d290610219565b9052565b91906102e9905f602085019401906102c9565b565b3461031b576102fb366004610130565b610317610306610982565b61030e610122565b918291826102d6565b0390f35b610128565b1c90565b60ff1690565b61033a90600861033f9302610320565b610324565b90565b9061034d915461032a565b90565b61035c60085f90610342565b90565b3461038f5761036f366004610130565b61038b61037a610350565b610382610122565b9182918261027e565b0390f35b610128565b90916060828403126103c9576103c66103af845f850161020a565b936103bd816020860161020a565b93604001610230565b90565b61012c565b346103ff576103fb6103ea6103e4366004610394565b91610998565b6103f2610122565b9182918261027e565b0390f35b610128565b60ff1690565b61041390610404565b9052565b919061042a905f6020850194019061040a565b565b3461045c5761043c366004610130565b6104586104476109ea565b61044f610122565b91829182610417565b0390f35b610128565b9060208282031261047a57610477915f0161020a565b90565b61012c565b346104af576104ab61049a610495366004610461565b610a16565b6104a2610122565b918291826102d6565b0390f35b610128565b5f0190565b346104e7576104c9366004610130565b6104d1610b44565b6104d9610122565b806104e3816104b4565b0390f35b610128565b60018060a01b031690565b61050790600861050c9302610320565b6104ec565b90565b9061051a91546104f7565b90565b61052960055f9061050f565b90565b610535906101ea565b9052565b919061054c905f6020850194019061052c565b565b3461057e5761055e366004610130565b61057a61056961051d565b610571610122565b91829182610539565b0390f35b610128565b346105b357610593366004610130565b6105af61059e610b4e565b6105a6610122565b91829182610192565b0390f35b610128565b346105e9576105e56105d46105ce36600461023f565b90610b64565b6105dc610122565b9182918261027e565b0390f35b610128565b90565b61060561060061060a926101df565b6105ee565b6101df565b90565b610616906105f1565b90565b6106229061060d565b90565b9061062f90610619565b5f5260205260405f2090565b6106519061064c6006915f92610625565b610342565b90565b346106845761068061066f61066a366004610461565b61063b565b610677610122565b9182918261027e565b0390f35b610128565b90565b61069c9060086106a19302610320565b610689565b90565b906106af915461068c565b90565b6106be60075f906106a4565b90565b346106f1576106d1366004610130565b6106ed6106dc6106b2565b6106e4610122565b918291826102d6565b0390f35b610128565b3461072457610706366004610130565b61070e610c74565b610716610122565b80610720816104b4565b0390f35b610128565b9190604083820312610751578061074561074e925f860161020a565b9360200161020a565b90565b61012c565b346107875761078361077261076c366004610729565b90610c94565b61077a610122565b918291826102d6565b0390f35b610128565b346107ba576107a461079f366004610461565b610d82565b6107ac610122565b806107b6816104b4565b0390f35b610128565b5f80fd5b606090565b634e487b7160e01b5f52602260045260245ffd5b90600160028304921680156107fc575b60208310146107f757565b6107c8565b91607f16916107ec565b60209181520190565b5f5260205f2090565b905f929180549061083261082b836107dc565b8094610806565b916001811690815f14610889575060011461084d575b505050565b61085a919293945061080f565b915f925b81841061087157505001905f8080610848565b6001816020929593955484860152019101929061085e565b92949550505060ff19168252151560200201905f8080610848565b906108ae91610818565b90565b634e487b7160e01b5f52604160045260245ffd5b906108cf90610157565b810190811067ffffffffffffffff8211176108e957604052565b6108b1565b9061090e610907926108fe610122565b938480926108a4565b03836108c5565b565b610919906108ee565b90565b6109246107c3565b5061092f6003610910565b90565b5f90565b61095391610942610932565b5061094b610d91565b919091610d9e565b600190565b5f90565b5f1c90565b61096d6109729161095c565b610689565b90565b61097f9054610961565b90565b61098a610958565b506109956002610975565b90565b916109c2926109a5610932565b506109ba6109b1610d91565b82908491610dee565b919091610f1d565b600190565b5f90565b90565b6109e26109dd6109e7926109cb565b6105ee565b610404565b90565b6109f26109c7565b506109fd60126109ce565b90565b90610a0a90610619565b5f5260205260405f2090565b610a2c610a3191610a25610958565b505f610a00565b610975565b90565b610a40610a459161095c565b6104ec565b90565b610a529054610a34565b90565b5f7f554e415554484f52495a45440000000000000000000000000000000000000000910152565b610a89600c602092610143565b610a9281610a55565b0190565b610aab9060208101905f818303910152610a7c565b90565b15610ab557565b610abd610122565b62461bcd60e51b815280610ad360048201610a96565b0390fd5b610afc33610af6610af0610aeb6005610a48565b6101ea565b916101ea565b14610aae565b610b04610b31565b565b90565b610b1d610b18610b2292610b06565b6105ee565b6101df565b90565b610b2e90610b09565b90565b610b42610b3d5f610b25565b610d82565b565b610b4c610ad7565b565b610b566107c3565b50610b616004610910565b90565b610b8191610b70610932565b50610b79610d91565b919091610f1d565b600190565b610bab33610ba5610b9f610b9a6005610a48565b6101ea565b916101ea565b14610aae565b610bb3610c54565b565b5f1b90565b90610bc65f1991610bb5565b9181191691161790565b610be4610bdf610be992610219565b6105ee565b610219565b90565b90565b90610c04610bff610c0b92610bd0565b610bec565b8254610bba565b9055565b90610c1b60ff91610bb5565b9181191691161790565b610c2e9061026c565b90565b90565b90610c49610c44610c5092610c25565b610c31565b8254610c0f565b9055565b610c66610c5f610982565b6007610bef565b610c7260016008610c34565b565b610c7c610b86565b565b90610c8890610619565b5f5260205260405f2090565b610cb991610caf610cb492610ca7610958565b506001610c7e565b610a00565b610975565b90565b610cea90610ce533610cdf610cd9610cd46005610a48565b6101ea565b916101ea565b14610aae565b610d2a565b565b90610cfd60018060a01b0391610bb5565b9181191691161790565b90565b90610d1f610d1a610d2692610619565b610d07565b8254610cec565b9055565b610d35816005610d0a565b3390610d6a610d647f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e093610619565b91610619565b91610d73610122565b80610d7d816104b4565b0390a3565b610d8b90610cbc565b565b5f90565b610d99610d8d565b503390565b91610dac9291600192610fbf565b565b604090610dd7610dde9496959396610dcd60608401985f85019061052c565b60208301906102c9565b01906102c9565b565b90610deb9103610219565b90565b929192610dfc818390610c94565b9081610e11610e0b5f19610219565b91610219565b10610e1e575b5050509050565b81610e31610e2b87610219565b91610219565b10610e5757610e4e9394610e46919392610de0565b905f92610fbf565b805f8080610e17565b50610e76849291925f938493637dc7a0d960e11b855260048501610dae565b0390fd5b610e86610e8b9161095c565b610324565b90565b610e989054610e7a565b90565b5f7f45786365656473204d61785478204c696d697400000000000000000000000000910152565b610ecf6013602092610143565b610ed881610e9b565b0190565b610ef19060208101905f818303910152610ec2565b90565b15610efb57565b610f03610122565b62461bcd60e51b815280610f1960048201610edc565b0390fd5b91610f4292610f35610f2f6008610e8e565b1561026c565b610f44575b9190916110ce565b565b610f61610f5b610f5660068490610625565b610e8e565b1561026c565b80610f9c575b610f71575b610f3a565b610f9782610f90610f8a610f856007610975565b610219565b91610219565b1115610ef4565b610f6c565b50610fba610fb4610faf60068690610625565b610e8e565b1561026c565b610f67565b909281610fdc610fd6610fd15f610b25565b6101ea565b916101ea565b146110a75783610ffc610ff6610ff15f610b25565b6101ea565b916101ea565b14611080576110208361101b61101460018690610c7e565b8790610a00565b610bef565b61102a575b505050565b91909161107561106361105d7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92593610619565b93610619565b9361106c610122565b918291826102d6565b0390a35f8080611025565b6110a361108c5f610b25565b5f918291634a1406b160e11b835260048301610539565b0390fd5b6110ca6110b35f610b25565b5f91829163e602df0560e01b835260048301610539565b0390fd5b91826110ea6110e46110df5f610b25565b6101ea565b916101ea565b14611144578161110a6111046110ff5f610b25565b6101ea565b916101ea565b1461111d5761111b929190916111b2565b565b6111406111295f610b25565b5f91829163ec442f0560e01b835260048301610539565b0390fd5b6111676111505f610b25565b5f918291634b637e8f60e11b835260048301610539565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b61118e61119491939293610219565b92610219565b820180921161119f57565b61116b565b906111af9101610219565b90565b919091806111d06111ca6111c55f610b25565b6101ea565b916101ea565b145f146112b1576111f46111ed836111e86002610975565b61117f565b6002610bef565b5b8261121061120a6112055f610b25565b6101ea565b916101ea565b145f146112855761123461122d836112286002610975565b610de0565b6002610bef565b5b91909161128061126e6112687fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef93610619565b93610619565b93611277610122565b918291826102d6565b0390a3565b6112ac826112a66112975f8790610a00565b916112a183610975565b6111a4565b90610bef565b611235565b6112c46112bf5f8390610a00565b610975565b806112d76112d185610219565b91610219565b106112ff576112ea6112fa918490610de0565b6112f55f8490610a00565b610bef565b6111f5565b9061131d9091925f93849363391434e360e21b855260048501610dae565b0390fdfea264697066735822122046621bf5c07670b04cc763a202cae609fd5d40003eb18c6f402fedb37c3490fa64736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000e3a16592bde7cdb643f74dde7b5f5522215f423700000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
-----Decoded View---------------
Arg [0] : deployer (address): 0xE3a16592bDe7CDb643F74dDE7b5F5522215F4237
Arg [1] : supply (uint256): 100000000000000000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000e3a16592bde7cdb643f74dde7b5f5522215f4237
Arg [1] : 00000000000000000000000000000000000000000052b7d2dcc80cd2e4000000
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.