More Info
Private Name Tags
ContractCreator:
TokenTracker
Latest 25 from a total of 1,032 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Approve | 54616114 | 14 days ago | IN | 0 MATIC | 0.00978813 | ||||
Transfer | 53378024 | 46 days ago | IN | 0 MATIC | 0.00317694 | ||||
Approve | 51585546 | 92 days ago | IN | 0 MATIC | 0.00891887 | ||||
Approve | 51585023 | 92 days ago | IN | 0 MATIC | 0.01403184 | ||||
Approve | 41255312 | 355 days ago | IN | 0 MATIC | 0.00949229 | ||||
Transfer | 40231919 | 382 days ago | IN | 0 MATIC | 0.00918421 | ||||
Approve | 37225647 | 459 days ago | IN | 0 MATIC | 0.00350063 | ||||
Transfer | 30447558 | 629 days ago | IN | 0 MATIC | 0.00186141 | ||||
Approve | 29139795 | 663 days ago | IN | 0 MATIC | 0.00205049 | ||||
Transfer | 29136106 | 663 days ago | IN | 0 MATIC | 0.00186069 | ||||
Transfer | 29136098 | 663 days ago | IN | 0 MATIC | 0.00185997 | ||||
Transfer | 29136089 | 663 days ago | IN | 0 MATIC | 0.00186069 | ||||
Transfer | 29136082 | 663 days ago | IN | 0 MATIC | 0.00186069 | ||||
Transfer | 29136074 | 663 days ago | IN | 0 MATIC | 0.00186069 | ||||
Transfer | 29136066 | 663 days ago | IN | 0 MATIC | 0.00186069 | ||||
Transfer | 29136060 | 663 days ago | IN | 0 MATIC | 0.00186069 | ||||
Transfer | 29136052 | 663 days ago | IN | 0 MATIC | 0.00186105 | ||||
Transfer | 29136045 | 663 days ago | IN | 0 MATIC | 0.00186069 | ||||
Transfer | 29136024 | 663 days ago | IN | 0 MATIC | 0.00186105 | ||||
Transfer | 29136015 | 663 days ago | IN | 0 MATIC | 0.00186069 | ||||
Transfer | 29136007 | 663 days ago | IN | 0 MATIC | 0.00186069 | ||||
Transfer | 29135997 | 663 days ago | IN | 0 MATIC | 0.00186069 | ||||
Approve | 26316364 | 734 days ago | IN | 0 MATIC | 0.00154377 | ||||
Approve | 26315580 | 734 days ago | IN | 0 MATIC | 0.0024606 | ||||
Transfer | 25555165 | 755 days ago | IN | 0 MATIC | 0.00204966 |
Latest 1 internal transaction
Parent Txn Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
18173944 | 951 days ago | Contract Creation | 0 MATIC |
Loading...
Loading
Minimal Proxy Contract for 0x471e1a083d76c4fc9e088fd259f64eff0a37dabd
Contract Name:
CustomERC20
Compiler Version
v0.6.9+commit.3e3065ac
Contract Source Code (Solidity)
/** *Submitted for verification at polygonscan.com on 2021-07-07 */ // File: contracts/lib/SafeMath.sol /* Copyright 2020 DODO ZOO. SPDX-License-Identifier: Apache-2.0 */ pragma solidity 0.6.9; pragma experimental ABIEncoderV2; /** * @title SafeMath * @author DODO Breeder * * @notice Math operations with safety checks that revert on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "MUL_ERROR"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "DIVIDING_ERROR"); return a / b; } function divCeil(uint256 a, uint256 b) internal pure returns (uint256) { uint256 quotient = div(a, b); uint256 remainder = a - quotient * b; if (remainder > 0) { return quotient + 1; } else { return quotient; } } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SUB_ERROR"); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "ADD_ERROR"); return c; } function sqrt(uint256 x) internal pure returns (uint256 y) { uint256 z = x / 2 + 1; y = x; while (z < y) { y = z; z = (x / z + z) / 2; } } } // File: contracts/lib/InitializableOwnable.sol /** * @title Ownable * @author DODO Breeder * * @notice Ownership related functions */ contract InitializableOwnable { address public _OWNER_; address public _NEW_OWNER_; bool internal _INITIALIZED_; // ============ Events ============ event OwnershipTransferPrepared(address indexed previousOwner, address indexed newOwner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); // ============ Modifiers ============ modifier notInitialized() { require(!_INITIALIZED_, "DODO_INITIALIZED"); _; } modifier onlyOwner() { require(msg.sender == _OWNER_, "NOT_OWNER"); _; } // ============ Functions ============ function initOwner(address newOwner) public notInitialized { _INITIALIZED_ = true; _OWNER_ = newOwner; } function transferOwnership(address newOwner) public onlyOwner { emit OwnershipTransferPrepared(_OWNER_, newOwner); _NEW_OWNER_ = newOwner; } function claimOwnership() public { require(msg.sender == _NEW_OWNER_, "INVALID_CLAIM"); emit OwnershipTransferred(_OWNER_, _NEW_OWNER_); _OWNER_ = _NEW_OWNER_; _NEW_OWNER_ = address(0); } } // File: contracts/external/ERC20/CustomERC20.sol contract CustomERC20 is InitializableOwnable { using SafeMath for uint256; string public name; uint8 public decimals; string public symbol; uint256 public totalSupply; uint256 public tradeBurnRatio; uint256 public tradeFeeRatio; address public team; bool public isMintable; mapping(address => uint256) balances; mapping(address => mapping(address => uint256)) internal allowed; event Transfer(address indexed from, address indexed to, uint256 amount); event Approval(address indexed owner, address indexed spender, uint256 amount); event Mint(address indexed user, uint256 value); event Burn(address indexed user, uint256 value); event ChangeTeam(address oldTeam, address newTeam); function init( address _creator, uint256 _initSupply, string memory _name, string memory _symbol, uint8 _decimals, uint256 _tradeBurnRatio, uint256 _tradeFeeRatio, address _team, bool _isMintable ) public { initOwner(_creator); name = _name; symbol = _symbol; decimals = _decimals; totalSupply = _initSupply; balances[_creator] = _initSupply; require(_tradeBurnRatio >= 0 && _tradeBurnRatio <= 5000, "TRADE_BURN_RATIO_INVALID"); require(_tradeFeeRatio >= 0 && _tradeFeeRatio <= 5000, "TRADE_FEE_RATIO_INVALID"); tradeBurnRatio = _tradeBurnRatio; tradeFeeRatio = _tradeFeeRatio; team = _team; isMintable = _isMintable; emit Transfer(address(0), _creator, _initSupply); } function transfer(address to, uint256 amount) public returns (bool) { _transfer(msg.sender,to,amount); return true; } function balanceOf(address owner) public view returns (uint256 balance) { return balances[owner]; } function transferFrom( address from, address to, uint256 amount ) public returns (bool) { require(amount <= allowed[from][msg.sender], "ALLOWANCE_NOT_ENOUGH"); _transfer(from,to,amount); allowed[from][msg.sender] = allowed[from][msg.sender].sub(amount); return true; } function approve(address spender, uint256 amount) public returns (bool) { allowed[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function allowance(address owner, address spender) public view returns (uint256) { return allowed[owner][spender]; } 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"); require(balances[sender] >= amount, "ERC20: transfer amount exceeds balance"); balances[sender] = balances[sender].sub(amount); uint256 burnAmount; uint256 feeAmount; if(tradeBurnRatio > 0) { burnAmount = amount.mul(tradeBurnRatio).div(10000); balances[address(0)] = balances[address(0)].add(burnAmount); } if(tradeFeeRatio > 0) { feeAmount = amount.mul(tradeFeeRatio).div(10000); balances[team] = balances[team].add(feeAmount); } balances[recipient] = balances[recipient].add(amount.sub(burnAmount).sub(feeAmount)); emit Transfer(sender, recipient, amount); } function burn(uint256 value) external { require(isMintable, "NOT_MINTABEL_TOKEN"); require(balances[msg.sender] >= value, "VALUE_NOT_ENOUGH"); balances[msg.sender] = balances[msg.sender].sub(value); totalSupply = totalSupply.sub(value); emit Burn(msg.sender, value); emit Transfer(msg.sender, address(0), value); } //=================== Ownable ====================== function mint(address user, uint256 value) external onlyOwner { require(isMintable, "NOT_MINTABEL_TOKEN"); require(user == _OWNER_, "NOT_OWNER"); balances[user] = balances[user].add(value); totalSupply = totalSupply.add(value); emit Mint(user, value); emit Transfer(address(0), user, value); } function changeTeamAccount(address newTeam) external onlyOwner { require(tradeFeeRatio > 0, "NOT_TRADE_FEE_TOKEN"); emit ChangeTeam(team,newTeam); team = newTeam; } }
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldTeam","type":"address"},{"indexed":false,"internalType":"address","name":"newTeam","type":"address"}],"name":"ChangeTeam","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferPrepared","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_NEW_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_OWNER_","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTeam","type":"address"}],"name":"changeTeamAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_creator","type":"address"},{"internalType":"uint256","name":"_initSupply","type":"uint256"},{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"uint256","name":"_tradeBurnRatio","type":"uint256"},{"internalType":"uint256","name":"_tradeFeeRatio","type":"uint256"},{"internalType":"address","name":"_team","type":"address"},{"internalType":"bool","name":"_isMintable","type":"bool"}],"name":"init","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"initOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isMintable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":"team","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeBurnRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeFeeRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Loading...
Loading
Loading...
Loading
OVERVIEW
Polymetric was born with the goal of making transfers as fast as lightning, with a truly intelligent and efficient payment solution, with low cost and high efficiency, adding to it a new NFT art scenario dedicated exclusively to 2D games.Multichain Portfolio | 24 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
MATIC | 100.00% | $1 | 1 | $1 |
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.