Address Contract Verified
Address
0x1bFCe574dEFf725A3f483C334b790E25c8FA9779
Balance
0 ETH
Nonce
1
Code Size
9429 bytes
Creator
0x0DDb5784...1596 at tx 0x7f048f62...721c10
Indexed Transactions
0
Contract Bytecode
9429 bytes
0x608060405234801561000f575f80fd5b5060043610610171575f3560e01c8063816b1b10116100dc578063c024666811610095578063dd62ed3e1161006f578063dd62ed3e14610417578063efdcd97414610447578063f2fde38b14610463578063f34eb0b81461047f57610171565b8063c0246668146103d5578063d505accf146103f1578063d55e2d871461040d57610171565b8063816b1b101461030f57806388e765ff1461032d5780638da5cb5b1461034b57806395d89b4114610369578063a9059cbb14610387578063b3f00674146103b757610171565b80632b14ca561161012e5780632b14ca561461024b578063313ce567146102695780633644e5151461028757806370a08231146102a5578063715018a6146102d55780637ecebe00146102df57610171565b806306fdde0314610175578063095ea7b3146101935780630b78f9c0146101c357806318160ddd146101df57806323b872dd146101fd5780632897817e1461022d575b5f80fd5b61017d61049b565b60405161018a9190611ce4565b60405180910390f35b6101ad60048036038101906101a89190611d95565b610526565b6040516101ba9190611ded565b60405180910390f35b6101dd60048036038101906101d89190611e06565b610613565b005b6101e76106f5565b6040516101f49190611e53565b60405180910390f35b61021760048036038101906102129190611e6c565b6106fb565b6040516102249190611ded565b60405180910390f35b610235610b7c565b6040516102429190611e53565b60405180910390f35b610253610b82565b6040516102609190611e53565b60405180910390f35b610271610b88565b60405161027e9190611ed7565b60405180910390f35b61028f610bac565b60405161029c9190611f08565b60405180910390f35b6102bf60048036038101906102ba9190611f21565b610c08565b6040516102cc9190611e53565b60405180910390f35b6102dd610c1d565b005b6102f960048036038101906102f49190611f21565b610db4565b6040516103069190611e53565b60405180910390f35b610317610dc9565b6040516103249190611ded565b60405180910390f35b610335610ddc565b6040516103429190611e53565b60405180910390f35b610353610de2565b6040516103609190611f5b565b60405180910390f35b610371610e07565b60405161037e9190611ce4565b60405180910390f35b6103a1600480360381019061039c9190611d95565b610e93565b6040516103ae9190611ded565b60405180910390f35b6103bf6112b6565b6040516103cc9190611f5b565b60405180910390f35b6103ef60048036038101906103ea9190611f9e565b6112db565b005b61040b60048036038101906104069190612030565b6113b9565b005b6104156116b5565b005b610431600480360381019061042c91906120cd565b61179d565b60405161043e9190611e53565b60405180910390f35b610461600480360381019061045c9190611f21565b6117bd565b005b61047d60048036038101906104789190611f21565b6118db565b005b6104996004803603810190610494919061210b565b611aee565b005b5f80546104a790612163565b80601f01602080910402602001604051908101604052809291908181526020018280546104d390612163565b801561051e5780601f106104f55761010080835404028352916020019161051e565b820191905f5260205f20905b81548152906001019060200180831161050157829003601f168201915b505050505081565b5f8160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106019190611e53565b60405180910390a36001905092915050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610699576040517f71d78b1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b602360075411806106ac57506023600654115b156106e3576040517f9e42164e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600781905550806006819055505050565b60025481565b5f8060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108285782816107ab91906121c0565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461087491906121c0565b925050819055505f600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561091a5750600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610a7c576064600654850281610934576109336121f3565b5b04905080840393508360035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508060035f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a6f9190611e53565b60405180910390a3610ac7565b8360035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610b0b578260025f82825403925050819055505b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051610b689190611e53565b60405180910390a360019150509392505050565b60075481565b60065481565b7f000000000000000000000000000000000000000000000000000000000000001281565b5f7f00000000000000000000000000000000000000000000000000000000000000014614610be157610bdc611bd0565b610c03565b7fc4ddac35b978197cd21ad71738af357de0dcef5f55753065cd8c917e88ab4f7f5b905090565b6003602052805f5260405f205f915090505481565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ca3576040517f71d78b1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff16600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b6005602052805f5260405f205f915090505481565b600b60149054906101000a900460ff1681565b60085481565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60018054610e1490612163565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4090612163565b8015610e8b5780601f10610e6257610100808354040283529160200191610e8b565b820191905f5260205f20905b815481529060010190602001808311610e6e57829003601f168201915b505050505081565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610ee091906121c0565b92505081905550600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015610f855750600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156111b9575f6064600754840281610fa057610f9f6121f3565b5b049050600b60149054906101000a900460ff161561107357600854831115610ff4576040517f5d29f30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003600854028360035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054011115611072576040517fc41993c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b80830392508260035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508060035f60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516111ab9190611e53565b60405180910390a350611204565b8160035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611247578160025f82825403925050819055505b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112a49190611e53565b60405180910390a36001905092915050565b60095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611361576040517f71d78b1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b428410156113f3576040517f6a851bd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60016113fe610bac565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98a8a8a60055f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050558b6040516020016114a496959493929190612220565b604051602081830303815290604052805190602001206040516020016114cb9291906122f3565b604051602081830303815290604052805190602001208585856040515f81526020016040526040516115009493929190612329565b6020604051602081039080840390855afa158015611520573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16148061159257508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156115c9576040517f6cbfd82c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8560045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925876040516116a49190611e53565b60405180910390a350505050505050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461173b576040517f71d78b1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b60149054906101000a900460ff16611781576040517fbe2fe23c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600b60146101000a81548160ff021916908315150217905550565b6004602052815f5260405f20602052805f5260405f205f91509150505481565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611843576040517f71d78b1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611961576040517f71d78b1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555081600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b74576040517f71d78b1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61012c600254611b84919061236c565b811015611bbd576040517f4b703e7500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060088190555060025460088190555050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f604051611c009190612438565b60405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64630604051602001611c3f95949392919061244e565b60405160208183030381529060405280519060200120905090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611c91578082015181840152602081019050611c76565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611cb682611c5a565b611cc08185611c64565b9350611cd0818560208601611c74565b611cd981611c9c565b840191505092915050565b5f6020820190508181035f830152611cfc8184611cac565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611d3182611d08565b9050919050565b611d4181611d27565b8114611d4b575f80fd5b50565b5f81359050611d5c81611d38565b92915050565b5f819050919050565b611d7481611d62565b8114611d7e575f80fd5b50565b5f81359050611d8f81611d6b565b92915050565b5f8060408385031215611dab57611daa611d04565b5b5f611db885828601611d4e565b9250506020611dc985828601611d81565b9150509250929050565b5f8115159050919050565b611de781611dd3565b82525050565b5f602082019050611e005f830184611dde565b92915050565b5f8060408385031215611e1c57611e1b611d04565b5b5f611e2985828601611d81565b9250506020611e3a85828601611d81565b9150509250929050565b611e4d81611d62565b82525050565b5f602082019050611e665f830184611e44565b92915050565b5f805f60608486031215611e8357611e82611d04565b5b5f611e9086828701611d4e565b9350506020611ea186828701611d4e565b9250506040611eb286828701611d81565b9150509250925092565b5f60ff82169050919050565b611ed181611ebc565b82525050565b5f602082019050611eea5f830184611ec8565b92915050565b5f819050919050565b611f0281611ef0565b82525050565b5f602082019050611f1b5f830184611ef9565b92915050565b5f60208284031215611f3657611f35611d04565b5b5f611f4384828501611d4e565b91505092915050565b611f5581611d27565b82525050565b5f602082019050611f6e5f830184611f4c565b92915050565b611f7d81611dd3565b8114611f87575f80fd5b50565b5f81359050611f9881611f74565b92915050565b5f8060408385031215611fb457611fb3611d04565b5b5f611fc185828601611d4e565b9250506020611fd285828601611f8a565b9150509250929050565b611fe581611ebc565b8114611fef575f80fd5b50565b5f8135905061200081611fdc565b92915050565b61200f81611ef0565b8114612019575f80fd5b50565b5f8135905061202a81612006565b92915050565b5f805f805f805f60e0888a03121561204b5761204a611d04565b5b5f6120588a828b01611d4e565b97505060206120698a828b01611d4e565b965050604061207a8a828b01611d81565b955050606061208b8a828b01611d81565b945050608061209c8a828b01611ff2565b93505060a06120ad8a828b0161201c565b92505060c06120be8a828b0161201c565b91505092959891949750929550565b5f80604083850312156120e3576120e2611d04565b5b5f6120f085828601611d4e565b925050602061210185828601611d4e565b9150509250929050565b5f602082840312156121205761211f611d04565b5b5f61212d84828501611d81565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061217a57607f821691505b60208210810361218d5761218c612136565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6121ca82611d62565b91506121d583611d62565b92508282039050818111156121ed576121ec612193565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f60c0820190506122335f830189611ef9565b6122406020830188611f4c565b61224d6040830187611f4c565b61225a6060830186611e44565b6122676080830185611e44565b61227460a0830184611e44565b979650505050505050565b5f81905092915050565b7f19010000000000000000000000000000000000000000000000000000000000005f82015250565b5f6122bd60028361227f565b91506122c882612289565b600282019050919050565b5f819050919050565b6122ed6122e882611ef0565b6122d3565b82525050565b5f6122fd826122b1565b915061230982856122dc565b60208201915061231982846122dc565b6020820191508190509392505050565b5f60808201905061233c5f830187611ef9565b6123496020830186611ec8565b6123566040830185611ef9565b6123636060830184611ef9565b95945050505050565b5f61237682611d62565b915061238183611d62565b925082612391576123906121f3565b5b828204905092915050565b5f81905092915050565b5f819050815f5260205f209050919050565b5f81546123c481612163565b6123ce818661239c565b9450600182165f81146123e857600181146123fd5761242f565b60ff198316865281151582028601935061242f565b612406856123a6565b5f5b8381101561242757815481890152600182019150602081019050612408565b838801955050505b50505092915050565b5f61244382846123b8565b915081905092915050565b5f60a0820190506124615f830188611ef9565b61246e6020830187611ef9565b61247b6040830186611ef9565b6124886060830185611e44565b6124956080830184611f4c565b969550505050505056fea264697066735822122096ea8bdf7631d4d9a908354208f38cfb9755807a60085fd47a1d51e69aad267564736f6c63430008180033
Verified Source Code Full Match
Compiler: v0.8.24+commit.e11b9ed9
EVM: shanghai
Optimization: No
CETI.sol 283 lines
// SPDX-License-Identifier: AGPL-3.0-only
pragma solidity 0.8.24;
/*********************************************************************************************************************|
| |
| τττττττττττττττττττ ττττττττττττττττττττττττττττττττττττττττττττττττττττττττττττ τττττ |
| ττττττττττττττττττττ τττττττττττττττττττττττττττττττττττττττττττττττττττττττττττττττ τττττ |
| τττττττ τττττττ τττττ τττττ |
| τττττ ττττττ τττττ τττ |
| ττττττ ττττττ τττττ |
| ττττττ τττττττττττττττττττττττττττ τττττ τ |
| ττττττ τττττττττττττττττττττττττττ τττττ τττ |
| ττττττ ττττττ τττττ τττττ |
| ττττττ ττττττ τττττ τττττ |
| ττττττ ττττττ ττττττ τττττττττ τττττ |
| ττττττττττττττττττττ τττττττττττττττττττττττττττττττττ ττττττττττττττττττττ τττττ |
| ττττττττττττττττττττ τττττττττττττττττττττττττττττττ τττττττττττττττ τττττ |
| ττττττττττττττττ ττττττττττττττττττττττττττ τττττ τττττ |
| |
**********************************************************************************************************************|
| |
| PER MARE PER TERRAS PER CONSTELLATUM |
| |
**********************************************************************************************************************|
| |
| @notice Modern and gas efficient ERC20 + EIP-2612 implementation with ownership and a tax. |
| @author Ceτɩ https://taoceti.ai |
| @author Modified from Solmate |
| |
**********************************************************************************************************************/
contract CETI {
event Transfer(address indexed from, address indexed to, uint256 amount);
event Approval(
address indexed owner,
address indexed spender,
uint256 amount
);
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
error NOT_OWNER();
error PERMIT_DEADLINE_EXPIRED();
error INVALID_SIGNER();
error MAX_BUY_AMOUNT_EXCEEDED();
error MAX_WALLET_AMOUNT_EXCEEDED();
error FEE_WILLY_HIGH();
error DO_LITTLE();
error GAMES_OVER();
string public name = "Tao Ce\u03C4i";
string public symbol = "CETI";
uint8 public immutable decimals = 18;
uint256 public totalSupply;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
uint256 internal immutable INITIAL_CHAIN_ID;
bytes32 internal immutable INITIAL_DOMAIN_SEPARATOR;
mapping(address => uint256) public nonces;
uint256 public sellFee = 5;
uint256 public buyAndTransferFee = 5;
uint256 public maxBuyAmount = totalSupply / 300;
address public feeReceiver;
mapping(address => bool) internal _isExcludedFromFee;
address public owner;
bool public whackAMole = true;
modifier onlyOwner() {
if(msg.sender != owner)
revert NOT_OWNER();
_;
}
constructor() {
INITIAL_CHAIN_ID = block.chainid;
INITIAL_DOMAIN_SEPARATOR = computeDomainSeparator();
owner = msg.sender;
feeReceiver = owner;
_isExcludedFromFee[owner] = true;
_mint(owner, 21_000_000 ether);
}
function approve(
address spender,
uint256 amount
) public virtual returns (bool) {
allowance[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function transfer(
address to,
uint256 amount
) public virtual returns (bool) {
balanceOf[msg.sender] -= amount;
unchecked {
if(!_isExcludedFromFee[to] && !_isExcludedFromFee[msg.sender]){
uint fee = (amount * buyAndTransferFee) / 100;
if(whackAMole) {
if(amount > maxBuyAmount)
revert MAX_BUY_AMOUNT_EXCEEDED();
if(balanceOf[to] + amount > maxBuyAmount * 3)
revert MAX_WALLET_AMOUNT_EXCEEDED();
}
amount -= fee;
balanceOf[to] += amount;
balanceOf[feeReceiver] += fee;
emit Transfer(msg.sender, feeReceiver, fee);
}
else
balanceOf[to] += amount;
}
if (to == address(0)) {
unchecked {
totalSupply -= amount;
}
}
emit Transfer(msg.sender, to, amount);
return true;
}
function transferFrom(
address from,
address to,
uint256 amount
) public virtual returns (bool) {
uint256 allowed = allowance[from][msg.sender];
if (allowed != type(uint256).max)
allowance[from][msg.sender] = allowed - amount;
balanceOf[from] -= amount;
unchecked {
uint fee;
if(!_isExcludedFromFee[to] && !_isExcludedFromFee[from]){
fee = (amount * sellFee) / 100;
amount -= fee;
balanceOf[to] += amount;
balanceOf[feeReceiver] += fee;
emit Transfer(from, feeReceiver, fee);
}
else
balanceOf[to] += amount;
}
if (to == address(0)) {
unchecked {
totalSupply -= amount;
}
}
emit Transfer(from, to, amount);
return true;
}
function permit(
address owner_,
address spender_,
uint256 value_,
uint256 deadline_,
uint8 v_,
bytes32 r_,
bytes32 s_
) public virtual {
if(deadline_ < block.timestamp)
revert PERMIT_DEADLINE_EXPIRED();
unchecked {
address recoveredAddress = ecrecover(
keccak256(
abi.encodePacked(
"\x19\x01",
DOMAIN_SEPARATOR(),
keccak256(
abi.encode(
keccak256(
"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"
),
owner_,
spender_,
value_,
nonces[owner]++,
deadline_
)
)
)
),
v_,
r_,
s_
);
if(recoveredAddress == address(0) || recoveredAddress != owner_)
revert INVALID_SIGNER();
allowance[recoveredAddress][spender_] = value_;
}
emit Approval(owner_, spender_, value_);
}
function setFeeReceiver(address feeReceiver_) public onlyOwner {
_isExcludedFromFee[feeReceiver_] = true;
feeReceiver = feeReceiver_;
}
function renounceOwnership() public onlyOwner {
owner = address(0);
_isExcludedFromFee[msg.sender] = false;
emit OwnershipTransferred(owner, address(0));
}
function transferOwnership(address newOwner_) public onlyOwner {
address oldOwner = owner;
_isExcludedFromFee[oldOwner] = false;
owner = newOwner_;
_isExcludedFromFee[owner] = true;
emit OwnershipTransferred(oldOwner, newOwner_);
}
function setFees(uint256 _buyAndTransferFee, uint256 _sellFee) public onlyOwner {
if( buyAndTransferFee > 35 || sellFee > 35)
revert FEE_WILLY_HIGH();
buyAndTransferFee = _buyAndTransferFee;
sellFee = _sellFee;
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFee[account] = excluded;
}
function setMaxBuyAmount(uint256 _maxBuyAmount) public onlyOwner {
if(_maxBuyAmount < totalSupply / 300)
revert DO_LITTLE();
maxBuyAmount = _maxBuyAmount;
maxBuyAmount = totalSupply;
}
function turnOffMaxBuyAmount() public onlyOwner {
if(!whackAMole)
revert GAMES_OVER();
whackAMole = false;
}
function DOMAIN_SEPARATOR() public view virtual returns (bytes32) {
return
block.chainid == INITIAL_CHAIN_ID
? INITIAL_DOMAIN_SEPARATOR
: computeDomainSeparator();
}
function computeDomainSeparator() internal view virtual returns (bytes32) {
return
keccak256(
abi.encode(
keccak256(
"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
),
keccak256(bytes(name)),
keccak256("1"),
block.chainid,
address(this)
)
);
}
function _mint(address to, uint256 amount) internal virtual {
totalSupply += amount;
unchecked {
balanceOf[to] += amount;
}
emit Transfer(address(0), to, amount);
}
function _burn(address from, uint256 amount) internal virtual {
balanceOf[from] -= amount;
unchecked {
totalSupply -= amount;
}
emit Transfer(from, address(0), amount);
}
}
// 0xCE71cd1CeA29f9849844462bE12b9bC3E62F5AF1 \\
Read Contract
DOMAIN_SEPARATOR 0x3644e515 → bytes32
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
buyAndTransferFee 0x2897817e → uint256
decimals 0x313ce567 → uint8
feeReceiver 0xb3f00674 → address
maxBuyAmount 0x88e765ff → uint256
name 0x06fdde03 → string
nonces 0x7ecebe00 → uint256
owner 0x8da5cb5b → address
sellFee 0x2b14ca56 → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
whackAMole 0x816b1b10 → bool
Write Contract 11 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
excludeFromFees 0xc0246668
address account
bool excluded
permit 0xd505accf
address owner_
address spender_
uint256 value_
uint256 deadline_
uint8 v_
bytes32 r_
bytes32 s_
renounceOwnership 0x715018a6
No parameters
setFeeReceiver 0xefdcd974
address feeReceiver_
setFees 0x0b78f9c0
uint256 _buyAndTransferFee
uint256 _sellFee
setMaxBuyAmount 0xf34eb0b8
uint256 _maxBuyAmount
transfer 0xa9059cbb
address to
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner_
turnOffMaxBuyAmount 0xd55e2d87
No parameters
Token Balances (2)
View Transfers →Recent Transactions
No transactions found for this address