Address Contract Partially Verified
Address
0xBcCD27062ae1A2BeA5731c904b96EDfb163Aba21
Balance
0.012458 ETH
Nonce
1
Code Size
9059 bytes
Creator
0x9F2f0f30...a8AE at tx 0xeb85652d...186439
Indexed Transactions
0
Contract Bytecode
9059 bytes
0x6080604052600436106102555760003560e01c80638da5cb5b11610139578063b2ca2f06116100b6578063e2f456051161007a578063e2f4560514610789578063ea2f0b371461079f578063f2fde38b146107bf578063f66895a3146107df578063f887ea4014610804578063f90dfee51461082a57600080fd5b8063b2ca2f06146106d9578063cd4c7d90146106ee578063d257b34f14610703578063d54adc8414610723578063dd62ed3e1461074357600080fd5b8063a457c2d7116100fd578063a457c2d714610639578063a5ece94114610659578063a8aa1b3114610679578063a9059cbb14610699578063aacebbe3146106b957600080fd5b80638da5cb5b14610584578063924de9b7146105a257806395d89b41146105c25780639ba5e4d5146105ef5780639dbcb1d61461061f57600080fd5b8063441b1d30116101d2578063538ba4f911610196578063538ba4f9146104ad5780636ddd1713146104da578063706f6937146104f457806370a0823114610514578063715018a61461054a578063864701a51461055f57600080fd5b8063441b1d30146103d457806347c23092146103f45780634ac92b27146104145780635331803c146104345780635342acb41461047457600080fd5b8063313ce56711610219578063313ce56714610338578063394207311461035a578063395093511461037457806340b28c2f14610394578063437823ec146103b457600080fd5b80630444a3731461026157806306fdde0314610283578063095ea7b3146102c557806318160ddd146102f557806323b872dd1461031857600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b5061028161027c366004611d04565b61083f565b005b34801561028f57600080fd5b506040805180820190915260078152662237b3b1b7b4b760c91b60208201525b6040516102bc9190611d2e565b60405180910390f35b3480156102d157600080fd5b506102e56102e0366004611d91565b6108b0565b60405190151581526020016102bc565b34801561030157600080fd5b5061030a6108c7565b6040519081526020016102bc565b34801561032457600080fd5b506102e5610333366004611dbd565b6108eb565b34801561034457600080fd5b5060095b60405160ff90911681526020016102bc565b34801561036657600080fd5b50600b546103489060ff1681565b34801561038057600080fd5b506102e561038f366004611d91565b6109a5565b3480156103a057600080fd5b506102816103af366004611dfe565b6109dc565b3480156103c057600080fd5b506102816103cf366004611e37565b610a40565b3480156103e057600080fd5b506102816103ef366004611e54565b610a8e565b34801561040057600080fd5b5061028161040f366004611dbd565b610b39565b34801561042057600080fd5b5061028161042f366004611d04565b610c34565b34801561044057600080fd5b506008546104599061ffff808216916201000090041682565b6040805161ffff9384168152929091166020830152016102bc565b34801561048057600080fd5b506102e561048f366004611e37565b6001600160a01b031660009081526003602052604090205460ff1690565b3480156104b957600080fd5b506104c2600081565b6040516001600160a01b0390911681526020016102bc565b3480156104e657600080fd5b506004546102e59060ff1681565b34801561050057600080fd5b5061028161050f366004611f43565b610ca8565b34801561052057600080fd5b5061030a61052f366004611e37565b6001600160a01b031660009081526001602052604090205490565b34801561055657600080fd5b50610281610d9b565b34801561056b57600080fd5b50600a546104599061ffff808216916201000090041682565b34801561059057600080fd5b506000546001600160a01b03166104c2565b3480156105ae57600080fd5b506102816105bd366004612013565b610dd1565b3480156105ce57600080fd5b50604080518082019091526004815263444f475360e01b60208201526102af565b3480156105fb57600080fd5b50600d54600e5461060a919082565b604080519283526020830191909152016102bc565b34801561062b57600080fd5b506009546103489060ff1681565b34801561064557600080fd5b506102e5610654366004611d91565b610e0e565b34801561066557600080fd5b506007546104c2906001600160a01b031681565b34801561068557600080fd5b506005546104c2906001600160a01b031681565b3480156106a557600080fd5b506102e56106b4366004611d91565b610ea9565b3480156106c557600080fd5b506102816106d4366004611e37565b610eb6565b3480156106e557600080fd5b50610281610f76565b3480156106fa57600080fd5b50610281610fc1565b34801561070f57600080fd5b5061028161071e366004611e54565b611001565b34801561072f57600080fd5b5061028161073e366004611d04565b611047565b34801561074f57600080fd5b5061030a61075e366004611dfe565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561079557600080fd5b5061030a60065481565b3480156107ab57600080fd5b506102816107ba366004611e37565b6110ac565b3480156107cb57600080fd5b506102816107da366004611e37565b6110f7565b3480156107eb57600080fd5b50600c546104599061ffff808216916201000090041682565b34801561081057600080fd5b506004546104c2906201000090046001600160a01b031681565b34801561083657600080fd5b5061028161118f565b6000546001600160a01b031633146108725760405162461bcd60e51b815260040161086990612030565b60405180910390fd5b60008160ff16118015610889575060028160ff1611155b61089257600080fd5b6009805460ff191660ff83161790556108ad600160006111cb565b50565b60006108bd33848461127a565b5060015b92915050565b60006108d56009600a61215f565b6108e69066038d7ea4c6800061216e565b905090565b60006108f884848461139f565b6001600160a01b0384166000908152600260209081526040808320338452909152902054600019811461099a57828110156109865760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610869565b61099a85336109958685612185565b61127a565b506001949350505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916108bd918590610995908690612198565b6000546001600160a01b03163314610a065760405162461bcd60e51b815260040161086990612030565b6004805462010000600160b01b031916620100006001600160a01b0394851602179055600580546001600160a01b03191691909216179055565b6000546001600160a01b03163314610a6a5760405162461bcd60e51b815260040161086990612030565b6001600160a01b03166000908152600360205260409020805460ff19166001179055565b6000546001600160a01b03163314610ab85760405162461bcd60e51b815260040161086990612030565b80471015610b085760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e7420424e422062616c616e636500000000000000006044820152606401610869565b604051339082156108fc029083906000818181858888f19350505050158015610b35573d6000803e3d6000fd5b5050565b6000546001600160a01b03163314610b635760405162461bcd60e51b815260040161086990612030565b306001600160a01b03841603610bbb5760405162461bcd60e51b815260206004820152601960248201527f43616e6e6f74207472616e73666572206f75742073656c6621000000000000006044820152606401610869565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610c0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2e91906121ab565b50505050565b6000546001600160a01b03163314610c5e5760405162461bcd60e51b815260040161086990612030565b60008160ff16118015610c75575060028160ff1611155b610c7e57600080fd5b6009805460ff831660ff199182168117909255600b805490911690911790556108ad6001806111cb565b6000546001600160a01b03163314610cd25760405162461bcd60e51b815260040161086990612030565b8051825114610d235760405162461bcd60e51b815260206004820152601e60248201527f417272617973206d7573742068617665207468652073616d652073697a6500006044820152606401610869565b60005b8251811015610d9657610d8433848381518110610d4557610d456121c8565b60200260200101516009600a610d5b919061215f565b858581518110610d6d57610d6d6121c8565b6020026020010151610d7f919061216e565b611751565b80610d8e816121de565b915050610d26565b505050565b6000546001600160a01b03163314610dc55760405162461bcd60e51b815260040161086990612030565b610dcf6000611798565b565b6000546001600160a01b03163314610dfb5760405162461bcd60e51b815260040161086990612030565b6004805460ff1916911515919091179055565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015610e905760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610869565b610e9f33856109958685612185565b5060019392505050565b60006108bd33848461139f565b6000546001600160a01b03163314610ee05760405162461bcd60e51b815260040161086990612030565b6007546001600160a01b03808316911603610f325760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610869565b600780546001600160a01b0319166001600160a01b0383169081179091556000908152600360205260409020805460ff191660019081179091556108ad90806111cb565b6000546001600160a01b03163314610fa05760405162461bcd60e51b815260040161086990612030565b6009805460ff19908116909155600b80549091169055610dcf6001806111cb565b6000546001600160a01b03163314610feb5760405162461bcd60e51b815260040161086990612030565b600b805460ff19169055610dcf600060016111cb565b6000546001600160a01b0316331461102b5760405162461bcd60e51b815260040161086990612030565b6110376009600a61215f565b611041908261216e565b60065550565b6000546001600160a01b031633146110715760405162461bcd60e51b815260040161086990612030565b60008160ff16118015611088575060028160ff1611155b61109157600080fd5b600b805460ff191660ff83161790556108ad600060016111cb565b6000546001600160a01b031633146110d65760405162461bcd60e51b815260040161086990612030565b6001600160a01b03166000908152600360205260409020805460ff19169055565b6000546001600160a01b031633146111215760405162461bcd60e51b815260040161086990612030565b6001600160a01b0381166111865760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610869565b6108ad81611798565b6000546001600160a01b031633146111b95760405162461bcd60e51b815260040161086990612030565b6009805460ff19169055610dcf600160005b81156112215760095460009081906111e59060ff166117e8565b6040805180820190915261ffff928316808252929091166020909101819052600a80546201000090920263ffffffff1990921690921717905550505b8015610b3557600b54600090819061123b9060ff166117e8565b6040805180820190915261ffff928316808252929091166020909101819052600c80546201000090920263ffffffff1990921690921717905550505050565b6001600160a01b0383166112dc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610869565b6001600160a01b03821661133d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610869565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166114035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610869565b6001600160a01b0382166114655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610869565b600081116114c75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610869565b6001600160a01b0383166000908152600160205260409020548111156115495760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610869565b6040805180820190915260085461ffff80821683526201000090910416602082015260055460029160009182906001600160a01b03908116908716036115d7575050604080518082018252600c5461ffff808216835262010000909104166020808301919091526001600160a01b03881660009081526003909152918220549193508692509060ff16611638565b6005546001600160a01b0390811690881603611638575050604080518082018252600a5461ffff808216835262010000909104166020808301919091526001600160a01b0387166000908152600390915291909120546001935085925060ff165b600654306000908152600160205260408120549091111590506001856002811115611665576116656121f7565b1415801561167b5750600454610100900460ff16155b8015611689575060045460ff165b80156116925750805b80156116b757506001600160a01b03881660009081526003602052604090205460ff16155b80156116dc57506001600160a01b03871660009081526003602052604090205460ff16155b156116ec576116ec60065461185d565b6002856002811115611700576117006121f7565b14806117095750815b80611726575060208301518351611720919061220d565b61ffff16155b1561173b57611736888888611751565b611747565b611747888888866118b1565b5050505050505050565b61175b8382611a51565b6117658282611a82565b816001600160a01b0316836001600160a01b031660008051602061230e8339815191528360405161139291815260200190565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000808260ff1660000361180157506000928392509050565b8260ff16600103611833576007546001600160a01b03166118285750600092602892509050565b506014928392509050565b6007546001600160a01b031661185057506000926101f492509050565b5060c89261012c92509050565b6004805461ff001916610100179055600061187960028361222f565b905080476118878230611aaa565b60006118938247612185565b905061189f8382611c29565b50506004805461ff0019169055505050565b6020810151829061ffff161561194e576000612710836020015161ffff16856118da919061216e565b6118e4919061222f565b9050801561194c576118f68183612185565b915080600d600101600082825461190d9190612198565b9091555061191d90503082611a82565b60405181815230906001600160a01b0388169060008051602061230e8339815191529060200160405180910390a35b505b815161ffff16156119f4578151600090612710906119709061ffff168661216e565b61197a919061222f565b905080156119f25761198c8183612185565b915080600d60000160008282546119a39190612198565b90915550506007546119be906001600160a01b031682611a82565b6007546040518281526001600160a01b039182169188169060008051602061230e8339815191529060200160405180910390a35b505b6119fe8584611a51565b8015611a4a57611a0e8482611a82565b836001600160a01b0316856001600160a01b031660008051602061230e83398151915283604051611a4191815260200190565b60405180910390a35b5050505050565b6001600160a01b03821660009081526001602052604081208054839290611a79908490612185565b90915550505050565b6001600160a01b03821660009081526001602052604081208054839290611a79908490612198565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611adf57611adf6121c8565b60200260200101906001600160a01b031690816001600160a01b031681525050600460029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b769190612251565b81600181518110611b8957611b896121c8565b6001600160a01b039283166020918202929092010152600454611bb5913091620100009004168561127a565b6004805460405163791ac94760e01b8152620100009091046001600160a01b03169163791ac94791611bf29187916000918791899142910161226e565b600060405180830381600087803b158015611c0c57600080fd5b505af1158015611c20573d6000803e3d6000fd5b50505050505050565b600454611c479030906201000090046001600160a01b03168461127a565b6004546001600160a01b03620100009091041663f305d719823085600080611c776000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611cdf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a4a91906122df565b600060208284031215611d1657600080fd5b813560ff81168114611d2757600080fd5b9392505050565b600060208083528351808285015260005b81811015611d5b57858101830151858201604001528201611d3f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146108ad57600080fd5b60008060408385031215611da457600080fd5b8235611daf81611d7c565b946020939093013593505050565b600080600060608486031215611dd257600080fd5b8335611ddd81611d7c565b92506020840135611ded81611d7c565b929592945050506040919091013590565b60008060408385031215611e1157600080fd5b8235611e1c81611d7c565b91506020830135611e2c81611d7c565b809150509250929050565b600060208284031215611e4957600080fd5b8135611d2781611d7c565b600060208284031215611e6657600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611eac57611eac611e6d565b604052919050565b600067ffffffffffffffff821115611ece57611ece611e6d565b5060051b60200190565b600082601f830112611ee957600080fd5b81356020611efe611ef983611eb4565b611e83565b82815260059290921b84018101918181019086841115611f1d57600080fd5b8286015b84811015611f385780358352918301918301611f21565b509695505050505050565b60008060408385031215611f5657600080fd5b823567ffffffffffffffff80821115611f6e57600080fd5b818501915085601f830112611f8257600080fd5b81356020611f92611ef983611eb4565b82815260059290921b84018101918181019089841115611fb157600080fd5b948201945b83861015611fd8578535611fc981611d7c565b82529482019490820190611fb6565b96505086013592505080821115611fee57600080fd5b50611ffb85828601611ed8565b9150509250929050565b80151581146108ad57600080fd5b60006020828403121561202557600080fd5b8135611d2781612005565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156120b657816000190482111561209c5761209c612065565b808516156120a957918102915b93841c9390800290612080565b509250929050565b6000826120cd575060016108c1565b816120da575060006108c1565b81600181146120f057600281146120fa57612116565b60019150506108c1565b60ff84111561210b5761210b612065565b50506001821b6108c1565b5060208310610133831016604e8410600b8410161715612139575081810a6108c1565b612143838361207b565b806000190482111561215757612157612065565b029392505050565b6000611d2760ff8416836120be565b80820281158282048414176108c1576108c1612065565b818103818111156108c1576108c1612065565b808201808211156108c1576108c1612065565b6000602082840312156121bd57600080fd5b8151611d2781612005565b634e487b7160e01b600052603260045260246000fd5b6000600182016121f0576121f0612065565b5060010190565b634e487b7160e01b600052602160045260246000fd5b61ffff81811683821601908082111561222857612228612065565b5092915050565b60008261224c57634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561226357600080fd5b8151611d2781611d7c565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122be5784516001600160a01b031683529383019391830191600101612299565b50506001600160a01b03969096166060850152505050608001529392505050565b6000806000606084860312156122f457600080fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220bcf95025357001b60d6879ea40a9578042e5781de42414a806ca59548d09d56f64736f6c63430008110033
Verified Source Code Partial Match
Compiler: v0.8.17+commit.8df45f5f
EVM: london
Optimization: Yes (200 runs)
DogCoin.sol 480 lines
// SPDX-License-Identifier: NOLICENSE
pragma solidity ^0.8.0;
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);
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() {
_setOwner(_msgSender());
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
_setOwner(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_setOwner(newOwner);
}
function _setOwner(address newOwner) private {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
interface IFactory{
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline) external;
}
contract DogCoin is Context, IERC20, Ownable {
mapping (address => uint256) private _balance;
mapping (address => mapping (address => uint256)) private _allowances;
mapping (address => bool) private _isExcludedFromFee;
bool public swapEnabled;
bool private swapping;
IRouter public router;
address public pair;
uint8 private constant DECIMALS = 9;
uint256 private constant MAX = ~uint256(0);
uint256 private constant T_TOTAL = 1e15 * 10**DECIMALS;
uint256 public swapTokensAtAmount = 200_000_000_000 * 10**DECIMALS;
address public constant ZERO_ADDRESS = address(0);
address public marketingAddress = ZERO_ADDRESS;
string private constant NAME = "Dogcoin";
string private constant SYMBOL = "DOGS";
enum ETransferType {
Sell,
Buy,
Transfer
}
struct Taxes {
uint16 marketing;
uint16 liquidity;
}
Taxes public transferTaxes = Taxes(0,0);
uint8 public buyTaxesTier;
Taxes public buyTaxes;
uint8 public sellTaxesTier;
Taxes public sellTaxes;
struct TotFeesPaidStruct{
uint256 marketing;
uint256 liquidity;
}
TotFeesPaidStruct public totFeesPaid;
modifier lockTheSwap {
swapping = true;
_;
swapping = false;
}
constructor (address routerAddress) {
IRouter _router = IRouter(routerAddress);
address _pair = IFactory(_router.factory())
.createPair(address(this), _router.WETH());
router = _router;
pair = _pair;
_balance[owner()] = T_TOTAL;
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[marketingAddress]=true;
etx(2);
emit Transfer(address(0), owner(), T_TOTAL);
}
//std ERC20:
function name() public pure returns (string memory) {
return NAME;
}
function symbol() public pure returns (string memory) {
return SYMBOL;
}
function decimals() public pure returns (uint8) {
return DECIMALS;
}
//override ERC20:
function totalSupply() public pure override returns (uint256) {
return T_TOTAL;
}
function balanceOf(address account) public view override returns (uint256) {
return _balance[account];
}
function transfer(address recipient, uint256 amount) public override returns (bool) {
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender) public view override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
_approve(sender, _msgSender(), currentAllowance - amount);
}
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
return true;
}
function excludeFromFee(address account) public onlyOwner {
_isExcludedFromFee[account] = true;
}
function includeInFee(address account) public onlyOwner {
_isExcludedFromFee[account] = false;
}
function isExcludedFromFee(address account) public view returns(bool) {
return _isExcludedFromFee[account];
}
function _approve(address owner, address spender, uint256 amount) private {
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);
}
function _transfer(address from, address to, uint256 amount) private {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(amount > 0, "Transfer amount must be greater than zero");
require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
ETransferType transferType = ETransferType.Transfer;
address trader = address(0);
Taxes memory usedTaxes = transferTaxes;
bool traderExcludedFromFee = false;
if (to == pair) {
transferType = ETransferType.Sell;
trader = from;
usedTaxes = sellTaxes;
traderExcludedFromFee = _isExcludedFromFee[trader];
} else if (from == pair) {
transferType = ETransferType.Buy;
trader = to;
usedTaxes = buyTaxes;
traderExcludedFromFee = _isExcludedFromFee[trader];
}
bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
if(transferType != ETransferType.Buy && !swapping && swapEnabled && canSwap && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
swapAndLiquify(swapTokensAtAmount);
}
if (transferType == ETransferType.Transfer ||
traderExcludedFromFee ||
usedTaxes.marketing + usedTaxes.liquidity == 0) {
taxFreeTransfer(from, to, amount);
} else {
_tokenTransfer(from, to, amount, usedTaxes);
}
}
// this method is responsible for taking all fee
function _tokenTransfer(address sender, address recipient, uint256 tAmount, Taxes memory usedTaxes) private {
uint256 tTransferAmount = tAmount;
if(usedTaxes.liquidity != 0) {
uint256 tLiquidity = tAmount * usedTaxes.liquidity / 10000;
if (tLiquidity != 0) {
tTransferAmount -= tLiquidity;
totFeesPaid.liquidity += tLiquidity;
_addBalance(address(this), tLiquidity);
emit Transfer(sender, address(this), tLiquidity);
}
}
if (usedTaxes.marketing != 0) {
uint256 tMarketing = tAmount * usedTaxes.marketing / 10000;
if (tMarketing != 0) {
tTransferAmount -= tMarketing;
totFeesPaid.marketing += tMarketing;
_addBalance(marketingAddress, tMarketing);
emit Transfer(sender, marketingAddress, tMarketing);
}
}
_reduceBalance(sender, tAmount);
if (tTransferAmount != 0) {
_addBalance(recipient, tTransferAmount);
emit Transfer(sender, recipient, tTransferAmount);
}
}
function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap{
//calculate how many tokens we need to exchange
uint256 tokensToSwap = contractTokenBalance / 2;
uint256 otherHalfOfTokens = tokensToSwap;
uint256 initialBalance = address(this).balance;
swapTokensForBNB(tokensToSwap, address(this));
uint256 newBalance = address(this).balance - (initialBalance);
addLiquidity(otherHalfOfTokens, newBalance);
}
function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
// approve token transfer to cover all possible scenarios
_approve(address(this), address(router), tokenAmount);
// add the liquidity
router.addLiquidityETH{value: bnbAmount}(
address(this),
tokenAmount,
0, // slippage is unavoidable
0, // slippage is unavoidable
owner(),
block.timestamp
);
}
function swapTokensForBNB(uint256 tokenAmount, address recipient) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
_approve(address(this), address(router), tokenAmount);
// make the swap
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0, // accept any amount of ETH
path,
payable(recipient),
block.timestamp
);
}
function getTaxesValueByTier(uint8 tier) private view returns(uint16, uint16) {
if (tier == 0) {
return (0, 0);
}
if (tier == 1) {
if (marketingAddress == ZERO_ADDRESS) {
return (0, 40);
}
return (20, 20);
}
if (marketingAddress == ZERO_ADDRESS) {
return (0, 500);
}
return (200, 300);
}
function checkAndUpdateTaxes(bool buyChanged, bool sellChanged) private {
if (buyChanged) {
(uint16 v1, uint16 v2) = getTaxesValueByTier(buyTaxesTier);
buyTaxes = Taxes(v1, v2);
}
if (sellChanged) {
(uint16 v1, uint16 v2) = getTaxesValueByTier(sellTaxesTier);
sellTaxes = Taxes(v1, v2);
}
}
function updateMarketingWallet(address newWallet) external onlyOwner{
require(marketingAddress != newWallet, "Wallet already set");
marketingAddress = newWallet;
_isExcludedFromFee[marketingAddress] = true;
checkAndUpdateTaxes(true, true);
}
function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
swapTokensAtAmount = amount * 10**DECIMALS;
}
function updateSwapEnabled(bool _enabled) external onlyOwner{
swapEnabled = _enabled;
}
function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
router = IRouter(newRouter);
pair = newPair;
}
function taxFreeTransfer(address sender, address recipient, uint256 tAmount) internal {
_reduceBalance(sender, tAmount);
_addBalance(recipient, tAmount);
emit Transfer(sender, recipient, tAmount);
}
function _addBalance(address account, uint256 tAmount) private {
_balance[account] += tAmount;
}
function _reduceBalance(address account, uint256 tAmount) private {
_balance[account] -= tAmount;
}
function airdropTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner{
require(accounts.length == amounts.length, "Arrays must have the same size");
for(uint256 i= 0; i < accounts.length; i++){
taxFreeTransfer(msg.sender, accounts[i], amounts[i] * 10**DECIMALS);
}
}
function dtx() public onlyOwner{
buyTaxesTier = 0;
sellTaxesTier = 0;
checkAndUpdateTaxes(true, true);
}
function etx(uint8 taxesTier) public onlyOwner{
require(taxesTier > 0 && taxesTier <=2);
buyTaxesTier = taxesTier;
sellTaxesTier = taxesTier;
checkAndUpdateTaxes(true, true);
}
function etxBuy(uint8 taxesTier) public onlyOwner{
require(taxesTier > 0 && taxesTier <=2);
buyTaxesTier = taxesTier;
checkAndUpdateTaxes(true, false);
}
function etxSell(uint8 taxesTier) public onlyOwner{
require(taxesTier > 0 && taxesTier <=2);
sellTaxesTier = taxesTier;
checkAndUpdateTaxes(false, true);
}
function dtxBuy() public onlyOwner{
buyTaxesTier = 0;
checkAndUpdateTaxes(true, false);
}
function dtxSell() public onlyOwner{
sellTaxesTier = 0;
checkAndUpdateTaxes(false, true);
}
//Use this in case BNB are sent to the contract by mistake
function rescueBNB(uint256 weiAmount) external onlyOwner{
require(address(this).balance >= weiAmount, "insufficient BNB balance");
payable(msg.sender).transfer(weiAmount);
}
// Function to allow admin to claim *other* BEP20 tokens sent to this contract (by mistake)
// Owner cannot transfer out self from this smart contract
function rescueAnyBEP20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
require(_tokenAddr != address(this), "Cannot transfer out self!");
IERC20(_tokenAddr).transfer(_to, _amount);
}
receive() external payable{
}
}
Read Contract
ZERO_ADDRESS 0x538ba4f9 → address
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
buyTaxes 0x864701a5 → uint16, uint16
buyTaxesTier 0x9dbcb1d6 → uint8
decimals 0x313ce567 → uint8
isExcludedFromFee 0x5342acb4 → bool
marketingAddress 0xa5ece941 → address
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pair 0xa8aa1b31 → address
router 0xf887ea40 → address
sellTaxes 0xf66895a3 → uint16, uint16
sellTaxesTier 0x39420731 → uint8
swapEnabled 0x6ddd1713 → bool
swapTokensAtAmount 0xe2f45605 → uint256
symbol 0x95d89b41 → string
totFeesPaid 0x9ba5e4d5 → uint256, uint256
totalSupply 0x18160ddd → uint256
transferTaxes 0x5331803c → uint16, uint16
Write Contract 22 functions
These functions modify contract state and require a wallet transaction to execute.
airdropTokens 0x706f6937
address[] accounts
uint256[] amounts
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
dtx 0xb2ca2f06
No parameters
dtxBuy 0xf90dfee5
No parameters
dtxSell 0xcd4c7d90
No parameters
etx 0x4ac92b27
uint8 taxesTier
etxBuy 0x0444a373
uint8 taxesTier
etxSell 0xd54adc84
uint8 taxesTier
excludeFromFee 0x437823ec
address account
includeInFee 0xea2f0b37
address account
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
renounceOwnership 0x715018a6
No parameters
rescueAnyBEP20Tokens 0x47c23092
address _tokenAddr
address _to
uint256 _amount
rescueBNB 0x441b1d30
uint256 weiAmount
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateMarketingWallet 0xaacebbe3
address newWallet
updateRouterAndPair 0x40b28c2f
address newRouter
address newPair
updateSwapEnabled 0x924de9b7
bool _enabled
updateSwapTokensAtAmount 0xd257b34f
uint256 amount
Recent Transactions
No transactions found for this address