Address Contract Partially Verified
Address
0x9630248d93783Bbf23dB76ad3055CC3f1af01764
Balance
0 ETH
Nonce
1
Code Size
10155 bytes
Creator
0x1fD564ED...EfFc at tx 0xd0b30110...bae398
Indexed Transactions
0
Contract Bytecode
10155 bytes
0x6080604052600436106101445760003560e01c80636ddd1713116100b6578063a8aa1b311161006f578063a8aa1b311461045b578063a9059cbb14610486578063dd62ed3e146104c3578063e96fada214610500578063f1d5f5171461052b578063f887ea40146105545761014b565b80636ddd17131461035b57806370a0823114610386578063715018a6146103c35780637d1db4a5146103da578063893d20e81461040557806395d89b41146104305761014b565b80632f54bf6e116101085780632f54bf6e1461024b578063313ce56714610288578063364333f4146102b357806352f7c988146102ca578063571ac8b0146102f35780636c0a24eb146103305761014b565b80630445b6671461015057806306fdde031461017b578063095ea7b3146101a657806318160ddd146101e357806323b872dd1461020e5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561057f565b6040516101729190611ccf565b60405180910390f35b34801561018757600080fd5b50610190610585565b60405161019d9190611d7a565b60405180910390f35b3480156101b257600080fd5b506101cd60048036038101906101c89190611e2b565b6105c2565b6040516101da9190611e86565b60405180910390f35b3480156101ef57600080fd5b506101f86106b4565b6040516102059190611ccf565b60405180910390f35b34801561021a57600080fd5b5061023560048036038101906102309190611ea1565b6106be565b6040516102429190611e86565b60405180910390f35b34801561025757600080fd5b50610272600480360381019061026d9190611ef4565b6108be565b60405161027f9190611e86565b60405180910390f35b34801561029457600080fd5b5061029d610917565b6040516102aa9190611f3d565b60405180910390f35b3480156102bf57600080fd5b506102c8610920565b005b3480156102d657600080fd5b506102f160048036038101906102ec9190611f58565b61098b565b005b3480156102ff57600080fd5b5061031a60048036038101906103159190611ef4565b6109fb565b6040516103279190611e86565b60405180910390f35b34801561033c57600080fd5b50610345610a2e565b6040516103529190611ccf565b60405180910390f35b34801561036757600080fd5b50610370610a34565b60405161037d9190611e86565b60405180910390f35b34801561039257600080fd5b506103ad60048036038101906103a89190611ef4565b610a47565b6040516103ba9190611ccf565b60405180910390f35b3480156103cf57600080fd5b506103d8610a90565b005b3480156103e657600080fd5b506103ef610b53565b6040516103fc9190611ccf565b60405180910390f35b34801561041157600080fd5b5061041a610b59565b6040516104279190611fa7565b60405180910390f35b34801561043c57600080fd5b50610445610b82565b6040516104529190611d7a565b60405180910390f35b34801561046757600080fd5b50610470610bbf565b60405161047d9190611fa7565b60405180910390f35b34801561049257600080fd5b506104ad60048036038101906104a89190611e2b565b610be5565b6040516104ba9190611e86565b60405180910390f35b3480156104cf57600080fd5b506104ea60048036038101906104e59190611fc2565b610bfa565b6040516104f79190611ccf565b60405180910390f35b34801561050c57600080fd5b50610515610c81565b6040516105229190611fa7565b60405180910390f35b34801561053757600080fd5b50610552600480360381019061054d9190612002565b610ca7565b005b34801561056057600080fd5b50610569610d13565b604051610576919061208e565b60405180910390f35b60115481565b60606040518060400160405280600881526020017f50756e6b436f696e000000000000000000000000000000000000000000000000815250905090565b600081600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106a29190611ccf565b60405180910390a36001905092915050565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146108aa57610829826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d399092919063ffffffff16565b600760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6108b5848484610d9d565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610988573d6000803e3d6000fd5b50565b610994336108be565b6109d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ca906120f5565b60405180910390fd5b81600a8190555080600b81905550600b54600a546109f19190612144565b600c819055505050565b6000610a27827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6105c2565b9050919050565b60045481565b601060149054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a99336108be565b610ad8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acf906120f5565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610b499190611fa7565b60405180910390a1565b60055481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f50554e4b00000000000000000000000000000000000000000000000000000000815250905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610bf2338484610d9d565b905092915050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610cb0336108be565b610cef576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce6906120f5565b60405180910390fd5b6103e881600354610d009190612178565b610d0a91906121e9565b60048190555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290610d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d789190611d7a565b60405180910390fd5b5060008385610d90919061221a565b9050809150509392505050565b6000601260009054906101000a900460ff1615610dc657610dbf848484611166565b905061115f565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610e725750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15610f5b57600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680610f1b575060045482600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f189190612144565b11155b610f5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f51906122c0565b60405180910390fd5b5b610f63611339565b15610f7157610f70611410565b5b610ffa826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d399092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006110488561194c565b611052578261105d565b61105c85846119a3565b5b90506110b181600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae790919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111519190611ccf565b60405180910390a360019150505b9392505050565b60006111f1826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d399092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061128682600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae790919063ffffffff16565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113269190611ccf565b60405180910390a3600190509392505050565b6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156113a65750601260009054906101000a900460ff16155b80156113be5750601060149054906101000a900460ff165b801561140b5750601154600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601260006101000a81548160ff0219169083151502179055506000601154905060006114706002611462600c54611454600a5487611b4590919063ffffffff16565b611bbf90919063ffffffff16565b611bbf90919063ffffffff16565b905060006114878284611c0990919063ffffffff16565b90506000600267ffffffffffffffff8111156114a6576114a56122e0565b5b6040519080825280602002602001820160405280156114d45781602001602082028036833780820191505090505b50905030816000815181106114ec576114eb61230f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611593573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115b79190612353565b816001815181106115cb576115ca61230f565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b815260040161166e959493929190612479565b600060405180830381600087803b15801561168857600080fd5b505af115801561169c573d6000803e3d6000fd5b5050505060006116b58247611c0990919063ffffffff16565b905060006116e36116d26002600a54611bbf90919063ffffffff16565b600c54611c0990919063ffffffff16565b90506000611721600261171384611705600a5488611b4590919063ffffffff16565b611bbf90919063ffffffff16565b611bbf90919063ffffffff16565b9050600061174c8361173e600b5487611b4590919063ffffffff16565b611bbf90919063ffffffff16565b90506000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161179a90612504565b600060405180830381858888f193505050503d80600081146117d8576040519150601f19603f3d011682016040523d82523d6000602084013e6117dd565b606091505b5050905080611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181890612565565b60405180910390fd5b600089111561192557600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080731fd564ed94e22520a23480b8b42ea833eb68effc426040518863ffffffff1660e01b81526004016118a596959493929190612585565b60606040518083038185885af11580156118c3573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906118e891906125fb565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a60405161191c92919061264e565b60405180910390a15b505050505050505050506000601260006101000a81548160ff021916908315150217905550565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806119cf600d546119c1600c5486611b4590919063ffffffff16565b611bbf90919063ffffffff16565b9050611a2381600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ae790919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611ac39190611ccf565b60405180910390a3611ade8184611c0990919063ffffffff16565b91505092915050565b6000808284611af69190612144565b905083811015611b3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b32906126c3565b60405180910390fd5b8091505092915050565b6000808303611b575760009050611bb9565b60008284611b659190612178565b9050828482611b7491906121e9565b14611bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bab90612755565b60405180910390fd5b809150505b92915050565b6000611c0183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c53565b905092915050565b6000611c4b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610d39565b905092915050565b60008083118290611c9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c919190611d7a565b60405180910390fd5b5060008385611ca991906121e9565b9050809150509392505050565b6000819050919050565b611cc981611cb6565b82525050565b6000602082019050611ce46000830184611cc0565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d24578082015181840152602081019050611d09565b60008484015250505050565b6000601f19601f8301169050919050565b6000611d4c82611cea565b611d568185611cf5565b9350611d66818560208601611d06565b611d6f81611d30565b840191505092915050565b60006020820190508181036000830152611d948184611d41565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611dcc82611da1565b9050919050565b611ddc81611dc1565b8114611de757600080fd5b50565b600081359050611df981611dd3565b92915050565b611e0881611cb6565b8114611e1357600080fd5b50565b600081359050611e2581611dff565b92915050565b60008060408385031215611e4257611e41611d9c565b5b6000611e5085828601611dea565b9250506020611e6185828601611e16565b9150509250929050565b60008115159050919050565b611e8081611e6b565b82525050565b6000602082019050611e9b6000830184611e77565b92915050565b600080600060608486031215611eba57611eb9611d9c565b5b6000611ec886828701611dea565b9350506020611ed986828701611dea565b9250506040611eea86828701611e16565b9150509250925092565b600060208284031215611f0a57611f09611d9c565b5b6000611f1884828501611dea565b91505092915050565b600060ff82169050919050565b611f3781611f21565b82525050565b6000602082019050611f526000830184611f2e565b92915050565b60008060408385031215611f6f57611f6e611d9c565b5b6000611f7d85828601611e16565b9250506020611f8e85828601611e16565b9150509250929050565b611fa181611dc1565b82525050565b6000602082019050611fbc6000830184611f98565b92915050565b60008060408385031215611fd957611fd8611d9c565b5b6000611fe785828601611dea565b9250506020611ff885828601611dea565b9150509250929050565b60006020828403121561201857612017611d9c565b5b600061202684828501611e16565b91505092915050565b6000819050919050565b600061205461204f61204a84611da1565b61202f565b611da1565b9050919050565b600061206682612039565b9050919050565b60006120788261205b565b9050919050565b6120888161206d565b82525050565b60006020820190506120a3600083018461207f565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b60006120df600683611cf5565b91506120ea826120a9565b602082019050919050565b6000602082019050818103600083015261210e816120d2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061214f82611cb6565b915061215a83611cb6565b925082820190508082111561217257612171612115565b5b92915050565b600061218382611cb6565b915061218e83611cb6565b925082820261219c81611cb6565b915082820484148315176121b3576121b2612115565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006121f482611cb6565b91506121ff83611cb6565b92508261220f5761220e6121ba565b5b828204905092915050565b600061222582611cb6565b915061223083611cb6565b925082820390508181111561224857612247612115565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b60006122aa602583611cf5565b91506122b58261224e565b604082019050919050565b600060208201905081810360008301526122d98161229d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061234d81611dd3565b92915050565b60006020828403121561236957612368611d9c565b5b60006123778482850161233e565b91505092915050565b6000819050919050565b60006123a56123a061239b84612380565b61202f565b611cb6565b9050919050565b6123b58161238a565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6123f081611dc1565b82525050565b600061240283836123e7565b60208301905092915050565b6000602082019050919050565b6000612426826123bb565b61243081856123c6565b935061243b836123d7565b8060005b8381101561246c57815161245388826123f6565b975061245e8361240e565b92505060018101905061243f565b5085935050505092915050565b600060a08201905061248e6000830188611cc0565b61249b60208301876123ac565b81810360408301526124ad818661241b565b90506124bc6060830185611f98565b6124c96080830184611cc0565b9695505050505050565b600081905092915050565b50565b60006124ee6000836124d3565b91506124f9826124de565b600082019050919050565b600061250f826124e1565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b600061254f601e83611cf5565b915061255a82612519565b602082019050919050565b6000602082019050818103600083015261257e81612542565b9050919050565b600060c08201905061259a6000830189611f98565b6125a76020830188611cc0565b6125b460408301876123ac565b6125c160608301866123ac565b6125ce6080830185611f98565b6125db60a0830184611cc0565b979650505050505050565b6000815190506125f581611dff565b92915050565b60008060006060848603121561261457612613611d9c565b5b6000612622868287016125e6565b9350506020612633868287016125e6565b9250506040612644868287016125e6565b9150509250925092565b60006040820190506126636000830185611cc0565b6126706020830184611cc0565b9392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006126ad601b83611cf5565b91506126b882612677565b602082019050919050565b600060208201905081810360008301526126dc816126a0565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061273f602183611cf5565b915061274a826126e3565b604082019050919050565b6000602082019050818103600083015261276e81612732565b905091905056fea2646970667358221220b9f35055f427468812d0a85f08e4242cd2431d6c1496fedcc37e82a34cdeebb964736f6c63430008130033
Verified Source Code Partial Match
Compiler: v0.8.19+commit.7dd6d404
EVM: paris
Optimization: No
PunkCoin.sol 307 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
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;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
}
interface ERC20 {
function totalSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function getOwner() external view returns (address);
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);
}
abstract contract Ownable {
address internal owner;
constructor(address _owner) {
owner = _owner;
}
modifier onlyOwner() {
require(isOwner(msg.sender), "!OWNER"); _;
}
function isOwner(address account) public view returns (bool) {
return account == owner;
}
function renounceOwnership() public onlyOwner {
owner = address(0);
emit OwnershipTransferred(address(0));
}
event OwnershipTransferred(address owner);
}
interface IDEXFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IDEXRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidity(
address tokenA,
address tokenB,
uint amountADesired,
uint amountBDesired,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactETHForTokensSupportingFeeOnTransferTokens(
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external payable;
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
}
contract PunkCoin is ERC20, Ownable {
using SafeMath for uint256;
address routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
address DEAD = 0x000000000000000000000000000000000000dEaD;
string constant _name = "PunkCoin";
string constant _symbol = "PUNK";
uint8 constant _decimals = 9;
uint256 _totalSupply = 1_000_000_000 * (10 ** _decimals);
uint256 public _maxWalletAmount = (_totalSupply * 2) / 100;
uint256 public _maxTxAmount = _totalSupply.mul(2).div(100);
mapping (address => uint256) _balances;
mapping (address => mapping (address => uint256)) _allowances;
mapping (address => bool) isFeeExempt;
mapping (address => bool) isTxLimitExempt;
uint256 liquidityFee = 0;
uint256 marketingFee = 5;
uint256 totalFee = liquidityFee + marketingFee;
uint256 feeDenominator = 100;
address public marketingFeeReceiver = 0x1fD564ED94e22520A23480b8B42Ea833eb68EfFc;
IDEXRouter public router;
address public pair;
bool public swapEnabled = true;
uint256 public swapThreshold = _totalSupply / 1000 * 5; // 0.5%
bool inSwap;
modifier swapping() { inSwap = true; _; inSwap = false; }
constructor () Ownable(msg.sender) {
router = IDEXRouter(routerAdress);
pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
_allowances[address(this)][address(router)] = type(uint256).max;
address _owner = owner;
isFeeExempt[0x1fD564ED94e22520A23480b8B42Ea833eb68EfFc] = true;
isTxLimitExempt[_owner] = true;
isTxLimitExempt[0x1fD564ED94e22520A23480b8B42Ea833eb68EfFc] = true;
isTxLimitExempt[DEAD] = true;
_balances[_owner] = _totalSupply;
emit Transfer(address(0), _owner, _totalSupply);
}
receive() external payable { }
function totalSupply() external view override returns (uint256) { return _totalSupply; }
function decimals() external pure override returns (uint8) { return _decimals; }
function symbol() external pure override returns (string memory) { return _symbol; }
function name() external pure override returns (string memory) { return _name; }
function getOwner() external view override returns (address) { return owner; }
function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
function approve(address spender, uint256 amount) public override returns (bool) {
_allowances[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function approveMax(address spender) external returns (bool) {
return approve(spender, type(uint256).max);
}
function transfer(address recipient, uint256 amount) external override returns (bool) {
return _transferFrom(msg.sender, recipient, amount);
}
function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
if(_allowances[sender][msg.sender] != type(uint256).max){
_allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
}
return _transferFrom(sender, recipient, amount);
}
function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
if(inSwap){ return _basicTransfer(sender, recipient, amount); }
if (recipient != pair && recipient != DEAD) {
require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletAmount, "Transfer amount exceeds the bag size.");
}
if(shouldSwapBack()){ swapBack(); }
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
_balances[recipient] = _balances[recipient].add(amountReceived);
emit Transfer(sender, recipient, amountReceived);
return true;
}
function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
_balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
return true;
}
function shouldTakeFee(address sender) internal view returns (bool) {
return !isFeeExempt[sender];
}
function takeFee(address sender, uint256 amount) internal returns (uint256) {
uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);
_balances[address(this)] = _balances[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount);
return amount.sub(feeAmount);
}
function shouldSwapBack() internal view returns (bool) {
return msg.sender != pair
&& !inSwap
&& swapEnabled
&& _balances[address(this)] >= swapThreshold;
}
function swapBack() internal swapping {
uint256 contractTokenBalance = swapThreshold;
uint256 amountToLiquify = contractTokenBalance.mul(liquidityFee).div(totalFee).div(2);
uint256 amountToSwap = contractTokenBalance.sub(amountToLiquify);
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
uint256 balanceBefore = address(this).balance;
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
amountToSwap,
0,
path,
address(this),
block.timestamp
);
uint256 amountETH = address(this).balance.sub(balanceBefore);
uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
(bool MarketingSuccess, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
require(MarketingSuccess, "receiver rejected ETH transfer");
if(amountToLiquify > 0){
router.addLiquidityETH{value: amountETHLiquidity}(
address(this),
amountToLiquify,
0,
0,
0x1fD564ED94e22520A23480b8B42Ea833eb68EfFc,
block.timestamp
);
emit AutoLiquify(amountETHLiquidity, amountToLiquify);
}
}
function buyTokens(uint256 amount, address to) internal swapping {
address[] memory path = new address[](2);
path[0] = router.WETH();
path[1] = address(this);
router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: amount}(
0,
path,
to,
block.timestamp
);
}
function clearStuckBalance() external {
payable(marketingFeeReceiver).transfer(address(this).balance);
}
function setWalletLimit(uint256 amountPercent) external onlyOwner {
_maxWalletAmount = (_totalSupply * amountPercent ) / 1000;
}
function setFee(uint256 _liquidityFee, uint256 _marketingFee) external onlyOwner {
liquidityFee = _liquidityFee;
marketingFee = _marketingFee;
totalFee = liquidityFee + marketingFee;
}
event AutoLiquify(uint256 amountETH, uint256 amountBOG);
}
Read Contract
_maxTxAmount 0x7d1db4a5 → uint256
_maxWalletAmount 0x6c0a24eb → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
getOwner 0x893d20e8 → address
isOwner 0x2f54bf6e → bool
marketingFeeReceiver 0xe96fada2 → address
name 0x06fdde03 → string
pair 0xa8aa1b31 → address
router 0xf887ea40 → address
swapEnabled 0x6ddd1713 → bool
swapThreshold 0x0445b667 → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 8 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
approveMax 0x571ac8b0
address spender
returns: bool
clearStuckBalance 0x364333f4
No parameters
renounceOwnership 0x715018a6
No parameters
setFee 0x52f7c988
uint256 _liquidityFee
uint256 _marketingFee
setWalletLimit 0xf1d5f517
uint256 amountPercent
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
Recent Transactions
No transactions found for this address