$0.05 | XDEFI (XDEFI) Token Tracker | Etherscan
Check your 2024 Onchain highlights with Blockscan Wrapped ETH Price: $3,304.75 (-1.68%) Gas: 6.043 Gwei New alerts Understanding the Token Page What are Token Approvals? How to Update Token Information Why Are Some Tokens' Names and Symbols Masked? Common Issues with Non-Standard Tokens Explore the Token Balance Checker How to Validate Data on Etherscan All Knowledge Base articles Light Dim Dark Site Settings Ethereum Mainnet Ethereum Mainnet CN Beaconscan ETH2 Sepolia Testnet Holesky Testnet Sign In Home Blockchain Transactions Pending Transactions Contract Internal Transactions Beacon Deposits Beacon Withdrawals View Blobs View Blocks Forked Blocks (Reorgs) Uncles Top Accounts Verified Contracts Tokens Top Tokens (ERC-20) Token Transfers (ERC-20) NFTs Top NFTs Top Mints Latest Trades Latest Transfers Latest Mints Resources Charts And Stats Top Statistics Leaderboard Directory Newsletter Knowledge Base Developers API Plans API Documentation Code Reader Beta Verify Contract Similar Contract Search Smart Contract Search Contract Diff Checker Vyper Online Compiler Bytecode to Opcode Broadcast Transaction More
Tools & Services
Discover more of Etherscan's tools and services in one place.
Sponsored
Tools
Input Data Decoder Beta Unit Converter CSV Export Account Balance CheckerExplore
Gas Tracker DEX Tracker Node Tracker Label Cloud Domain Name Lookup AA Transactions Beta AA Bundle Transactions BetaServices
Token Approvals Beta Verified Signature Input Data Messages (IDM) Beta Advanced Filter Beta Blockscan Chat Beta Explorers Ethereum Mainnet Ethereum Mainnet CN Beaconscan ETH2 Goerli Testnet Sepolia Testnet Holesky Testnet Appearance & Settings Light Dim Dark Site Settings | Sign InToken
XDEFI (XDEFI) Buy Sponsored MoonPay Buy, sell and swap Ethereum with MoonPay. Buy Now!Spend less on fees, more on crypto. Buy crypto easily with MoonPay Balance. 20M+ users trust MoonPay worldwide.
MetaMask Manage your web3 everything with MetaMask Portfolio. Try Now!Ready to onboard to Ethereum? With MetaMask Portfolio, you're in control.
eToro One-stop crypto shop: trusted, simple & safe.Don’t invest unless you’re prepared to lose all the money you invest.
Exchange Sponsored MetaMask Meet MetaMask Portfolio - your key to getting more out of web3. Try NowReady to simplify your web3 experience? Try the all-in-one web3 app trusted by millions worldwide.
MetaMask Swap thousands of tokens in one place Try NowThousands of tokens and competitive prices from multiple aggregators, in one place.
Play Sponsored Сoins.game 100 free spins for registration. Spin now!Everyday giveaways up to 100 ETH, Lucky Spins. Deposit BONUS 300% and Cashbacks!
BC.GAME - The Best ETH Casino Claim Now!5000+ Slots & Live Casino Games, 50+cryptos. Register with Etherscan and get 760% deposit bonus. Win Big$, withdraw it fast.
Stake 200% Bonus, 100K Daily Giveaways, Instant Withdrawals Play Now!Slots, Roulette, Poker & more - Proud sponsors of UFC, Everton & StakeF1 team!
ERC-20 Wallet App xdefi.io https://www.xdefi.io/ CoinMarketCap CoinGecko Blog Reddit X (Twitter) Github Telegram LinkedIn Discord Whitepaper Check previous token supply Add Token to MetaMask (Web3) Update Token Info Update Name Tag or Label Submit Burn Details Report/Flag AddressOverview
Max Total Supply
240,000,000 XDEFIHolders
4,401 (0.00%)Total Transfers
-Market
Price
$0.05 @ 0.000015 ETH (+12.93%)Onchain Market Cap
$12,134,400.00Circulating Supply Market Cap
$6,576,379.00Other Info
Token Contract (WITH 18 Decimals)
0x72b886d09c117654ab7da13a14d603001de0b777 Transfers Holders Info DEX Trades Contract Analytics Cards New Loading Loading Loading Loading Loading LoadingOVERVIEW
XDEFI Wallet is a multi-chain web browser extension currently available on Chrome & Brave (soon on Firefox) built for DeFi users and NFT lovers. It is a wallet with native integrations on THORChain, Ethereum + several EVM networks and Terra.Market
Volume (24H) : $495.43 Market Capitalization : $6,576,379.00 Circulating Supply : 130,069,827.00 XDEFI Market Data Source: CoinmarketcapExchange Data Source: Coingecko # Exchange Pair Price 24H Volume % Volume Code Read Contract as Proxy Write Contract as Proxy
Minimal Proxy Contract for 0xaa1a02671440be41545d83bddff2bf2488628c10
Contract Name: FixedToken Compiler Version v0.6.12+commit.27d51765 Optimization Enabled: Yes with 200 runs Other Settings: default evmVersionContract Source Code (Solidity Standard Json-Input format)
Decompile Bytecode Similar Contracts File 1 of 7 : FixedToken.sol pragma solidity 0.6.12; import ./ERC20.sol ; import ../interfaces/IMisoToken.sol ; // --------------------------------------------------------------------- // // From the MISO Token Factory // // Made for Sushi.com // // Enjoy. (c) Chef Gonpachi 2021 // https://github.com/chefgonpachi/MISO/ // // --------------------------------------------------------------------- // SPDX-License-Identifier: GPL-3.0 // --------------------------------------------------------------------- contract FixedToken is ERC20, IMisoToken { /// @notice Miso template id for the token factory. /// @dev For different token types, this must be incremented. uint256 public constant override tokenTemplate = 1; /// @dev First set the token variables. This can only be done once function initToken(string memory _name, string memory _symbol, address _owner, uint256 _initialSupply) public { _initERC20(_name, _symbol); _mint(msg.sender, _initialSupply); } function init(bytes calldata _data) external override payable {} function initToken( bytes calldata _data ) public override { (string memory _name, string memory _symbol, address _owner, uint256 _initialSupply) = abi.decode(_data, (string, string, address, uint256)); initToken(_name,_symbol,_owner,_initialSupply); } /** * @dev Generates init data for Farm Factory * @param _name - Token name * @param _symbol - Token symbol * @param _owner - Contract owner * @param _initialSupply Amount of tokens minted on creation */ function getInitData( string calldata _name, string calldata _symbol, address _owner, uint256 _initialSupply ) external pure returns (bytes memory _data) { return abi.encode(_name, _symbol, _owner, _initialSupply); } }File 2 of 7 : ERC20.sol pragma solidity 0.6.12; import ../OpenZeppelin/GSN/Context.sol ; import ../OpenZeppelin/math/SafeMath.sol ; import ../interfaces/IERC20.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}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn t required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is IERC20, Context { using SafeMath for uint256; bytes32 public DOMAIN_SEPARATOR; mapping (address = uint256) private _balances; mapping(address = uint256) public nonces; mapping (address = mapping (address = uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; uint8 private _decimals; bool private _initialized; /** * @dev Sets the values for {name} and {symbol}, initializes {decimals} with * a default value of 18. * * To select a different value for {decimals}, use {_setupDecimals}. * * All three of these values are immutable: they can only be set once during * construction. */ function _initERC20(string memory name_, string memory symbol_) internal { require(!_initialized, ERC20: token has already been initialized! ); _name = name_; _symbol = symbol_; _decimals = 18; uint256 chainId; assembly { chainId := chainid() } DOMAIN_SEPARATOR = keccak256(abi.encode(keccak256( EIP712Domain(uint256 chainId,address verifyingContract) ), chainId, address(this))); _initialized = true; } /** * @dev Returns the name of the token. */ function name() public view override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view override 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 value {ERC20} uses, unless {_setupDecimals} is * called. * * 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 override returns (uint8) { return _decimals; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public virtual returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } // See https://eips.ethereum.org/EIPS/eip-191 string private constant EIP191_PREFIX_FOR_EIP712_STRUCTURED_DATA = \x19\x01 ; // keccak256( Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline) ); bytes32 private constant PERMIT_SIGNATURE_HASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; /// @notice Approves `value` from `owner_` to be spend by `spender`. /// @param owner_ Address of the owner. /// @param spender The address of the spender that gets approved to draw from `owner_`. /// @param value The maximum collective amount that `spender` can draw. /// @param deadline This permit must be redeemed before this deadline (UTC timestamp in seconds). function permit( address owner_, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external override { require(owner_ != address(0), ERC20: Owner cannot be 0 ); require(block.timestamp deadline, ERC20: Expired ); bytes32 digest = keccak256( abi.encodePacked( EIP191_PREFIX_FOR_EIP712_STRUCTURED_DATA, DOMAIN_SEPARATOR, keccak256(abi.encode(PERMIT_SIGNATURE_HASH, owner_, spender, value, nonces[owner_]++, deadline)) ) ); address recoveredAddress = ecrecover(digest, v, r, s); require(recoveredAddress == owner_, ERC20: Invalid Signature ); _approve(owner_, spender, value); } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have allowance for ``sender`` s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public virtual returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, ERC20: transfer amount exceeds allowance )); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, ERC20: decreased allowance below zero )); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal virtual { require(sender != address(0), ERC20: transfer from the zero address ); require(recipient != address(0), ERC20: transfer to the zero address ); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, ERC20: transfer amount exceeds balance ); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), ERC20: mint to the zero address ); _beforeTokenTransfer(address(0), account, amount); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), ERC20: burn from the zero address ); _beforeTokenTransfer(account, address(0), amount); _balances[account] = _balances[account].sub(amount, ERC20: burn amount exceeds balance ); _totalSupply = _totalSupply.sub(amount); emit Transfer(account, address(0), amount); } /** * @dev Sets `amount` 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. */ 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); } /** * @dev Sets {decimals} to a value other than the default one of 18. * * WARNING: This function should only be called from the constructor. Most * applications that interact with token contracts will not expect * {decimals} to ever change, and may work incorrectly if it does. */ function _setupDecimals(uint8 decimals_) internal { _decimals = decimals_; } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from`` s tokens * will be to transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from`` s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { } }
File 3 of 7 : IMisoToken.sol pragma solidity 0.6.12; interface IMisoToken { function init(bytes calldata data) external payable; function initToken( bytes calldata data ) external; function tokenTemplate() external view returns (uint256); }
File 4 of 7 : Context.sol pragma solidity 0.6.12; import ../utils/Context.sol ;
File 5 of 7 : SafeMath.sol pragma solidity 0.6.12; /** * @dev Wrappers over Solidity s arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it s recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { uint256 c = a + b; if (c a) return (false, 0); return (true, c); } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b a) return (false, 0); return (true, a - b); } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { // Gas optimization: this is cheaper than requiring a not being zero, but the // benefit is lost if b is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a / b); } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { if (b == 0) return (false, 0); return (true, a % b); } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity s `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c = a, SafeMath: addition overflow ); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity s `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b = a, SafeMath: subtraction overflow ); return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity s `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) return 0; uint256 c = a * b; require(c / a == b, SafeMath: multiplication overflow ); return c; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity s `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b 0, SafeMath: division by zero ); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity s `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b 0, SafeMath: modulo by zero ); return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity s `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b = a, errorMessage); return a - b; } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryDiv}. * * Counterpart to Solidity s `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b 0, errorMessage); return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity s `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b 0, errorMessage); return a % b; } }
File 6 of 7 : IERC20.sol pragma solidity 0.6.12; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; }
File 7 of 7 : Context.sol pragma solidity 0.6.12; /* * @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 GSN 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 payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } }
Settings { optimizer : { enabled : true, runs : 200 }, outputSelection : { * : { * : [ evm.bytecode , evm.deployedBytecode , devdoc , userdoc , metadata , abi ] } }, metadata : { useLiteralContent : true }, libraries : {} }
Contract ABI
Export ABI JSON Format RAW/Text Format [{"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"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":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_initialSupply","type":"uint256"}],"name":"getInitData","outputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"stateMutability":"pure","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":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"init","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"initToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_initialSupply","type":"uint256"}],"name":"initToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenTemplate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]Loading Loading Loading Loading
Loading Loading
Loading Loading Loading Loading Loading Loading [ 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 .
Connect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node. MetaMask Popular WalletConnect Coinbase WalletConnect a Wallet
Connecting wallet for read function is optional, useful if you want to call certain functions or simply use your wallet's node. MetaMask Popular WalletConnect Coinbase WalletCompiler specific version warnings:
The compiled contract might be susceptible to FullInlinerNonExpressionSplitArgumentEvaluationOrder (low-severity) , MissingSideEffectsOnSelectorAccess (low-severity) , AbiReencodingHeadOverflowWithStaticArrayCleanup (medium-severity) , DirtyBytesArrayToStorage (low-severity) , DataLocationChangeInInternalOverride (very low-severity) , NestedCalldataArrayAbiReencodingSizeValidation (very low-severity) , SignedImmutables (very low-severity) , ABIDecodeTwoDimensionalArrayMemory (very low-severity) , KeccakCaching (medium-severity) , EmptyByteArrayCopy (medium-severity) , DynamicArrayCleanup (medium-severity) Solidity Compiler Bugs.
Address Cards
To use this feature, please login to your Etherscan account and return to this page. ×Before You Copy
Don't show this for 30 days Understand, Copy Address
Transaction Private Note
Cancel Save changes Back to Top Powered by EthereumEtherscan is a Block Explorer and Analytics Platform for Ethereum, a decentralized smart contracts platform.
Company
About Us Brand Assets Contact Us Careers We're Hiring! Terms & Privacy Bug BountyCommunity
API Documentation Knowledge Base Network Status NewslettersProducts & Services
Advertise Explorer as a Service (EaaS) API Plans Priority Support Blockscan Blockscan ChatEtherscan © 2025 (F1)
Donations: 0x71c765 d8976f
This website uses cookies to improve your experience . By continuing to use this website, you agree to its Terms and Privacy Policy .
Got it!