Address Contract Partially Verified
Address
0x323efd000a71F2567534e66eC6ae1b2b789a623a
Balance
0 ETH
Nonce
1
Code Size
8886 bytes
Creator
0xA5fEaa84...3Ca9 at tx 0x90ec9849...bd6a00
Indexed Transactions
0 (1 on-chain, 1.6% indexed)
Contract Bytecode
8886 bytes
0x6080604052600436106101bb5760003560e01c806370a08231116100ec578063c1fe3e481161008a578063dbda782711610064578063dbda782714610495578063dd62ed3e146104b5578063f7e2121f146104fb578063fd8051421461051057600080fd5b8063c1fe3e4814610440578063ce3322f614610478578063ce9a47051461048057600080fd5b80638f9bf12a116100c65780638f9bf12a146103cb57806395d89b41146103eb578063a457c2d714610400578063a9059cbb1461042057600080fd5b806370a0823114610368578063715018a61461039e578063759f9f50146103b557600080fd5b80632b30e9bd11610159578063450288901161013357806345028890146102f757806348cd4cb11461030c57806353e121fb146103225780635540421b1461035257600080fd5b80632b30e9bd146102a5578063313ce567146102bb57806339509351146102d757600080fd5b806313e7f4e51161019557806313e7f4e51461024557806318160ddd1461025b5780631e95eeaa1461027057806323b872dd1461028557600080fd5b806306fdde03146101c7578063095ea7b3146101f25780630adcdbaa1461022257600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610525565b6040516101e99190611f33565b60405180910390f35b3480156101fe57600080fd5b5061021261020d366004611f9d565b6105b7565b60405190151581526020016101e9565b34801561022e57600080fd5b506102376105ce565b6040519081526020016101e9565b34801561025157600080fd5b50610237600d5481565b34801561026757600080fd5b50600c54610237565b34801561027c57600080fd5b506102376105fc565b34801561029157600080fd5b506102126102a0366004611fc7565b610654565b3480156102b157600080fd5b50610237600f5481565b3480156102c757600080fd5b50604051601281526020016101e9565b3480156102e357600080fd5b506102126102f2366004611f9d565b6106a9565b34801561030357600080fd5b506102376106ed565b34801561031857600080fd5b5061023760095481565b34801561032e57600080fd5b5061021261033d366004612003565b60156020526000908152604090205460ff1681565b34801561035e57600080fd5b5061023760085481565b34801561037457600080fd5b50610237610383366004612003565b6001600160a01b031660009081526013602052604090205490565b3480156103aa57600080fd5b506103b3610717565b005b3480156103c157600080fd5b50610237600e5481565b3480156103d757600080fd5b506103b36103e636600461201e565b610774565b3480156103f757600080fd5b506101dc610983565b34801561040c57600080fd5b5061021261041b366004611f9d565b610992565b34801561042c57600080fd5b5061021261043b366004611f9d565b610a2f565b34801561044c57600080fd5b50600754610460906001600160a01b031681565b6040516001600160a01b0390911681526020016101e9565b6103b3610a79565b34801561048c57600080fd5b50610237610b6b565b3480156104a157600080fd5b50600654610460906001600160a01b031681565b3480156104c157600080fd5b506102376104d0366004612037565b6001600160a01b03918216600090815260146020908152604080832093909416825291909152205490565b34801561050757600080fd5b50610237610b95565b34801561051c57600080fd5b50610237610c02565b6060601180546105349061206a565b80601f01602080910402602001604051908101604052809291908181526020018280546105609061206a565b80156105ad5780601f10610582576101008083540402835291602001916105ad565b820191906000526020600020905b81548152906001019060200180831161059057829003601f168201915b5050505050905090565b60006105c4338484610c19565b5060015b92915050565b6000600c546105db610b95565b6105ed90670de0b6b3a76400006120ba565b6105f791906120e7565b905090565b60006107d0600c5461060e91906120e7565b30600090815260136020526040902054101561064e5730600090815260136020526040902054600c54610644906107d0906120e7565b6105f791906120fb565b50600090565b6001600160a01b0383166000908152601460209081526040808320338085529252822054610690908690839061068b9087906120fb565b610c19565b61069b858585610d3d565b5060019150505b9392505050565b3360008181526014602090815260408083206001600160a01b03871684529091528120549091906106e3908290869061068b90879061210e565b5060019392505050565b6000600f54611c206106ff919061210e565b42101561064e5742600f54611c20610644919061210e565b6001546001600160a01b031633146107625760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064015b60405180910390fd5b600180546001600160a01b0319169055565b6010805460ff19166001179055670de0b6b3a76400008110156107d95760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d2072656465656d206973203120746f6b656e210000000000006044820152606401610759565b3360009081526013602052604090205481111561082f5760405162461bcd60e51b8152602060048201526014602482015273496e73756666696369656e7420546f6b656e732160601b6044820152606401610759565b60006108396105ce565b3360009081526013602052604081208054929350849290919061085d9084906120fb565b9250508190555081600c600082825461087691906120fb565b909155505060405182815260009033906000805160206122618339815191529060200160405180910390a36000670de0b6b3a76400006108b683856120ba565b6108c091906120e7565b9050806000036108fe5760405162461bcd60e51b8152602060048201526009602482015268105b5bdd5b9d13dd5d60ba1b6044820152606401610759565b60075460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303816000875af115801561094f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109739190612121565b50506010805460ff191690555050565b6060601280546105349061206a565b3360008181526014602090815260408083206001600160a01b038716845290915281205490919083811015610a175760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610759565b610a248286868403610c19565b506001949350505050565b6000336001600160a01b038416148015610a515750670de0b6b3a76400008210155b15610a6457610a5f82610774565b6105c4565b610a6f338484610d3d565b5050600192915050565b6005546001600160a01b03163314610ac15760405162461bcd60e51b815260206004820152600b60248201526a139bdd08131a5c4810591960aa1b6044820152606401610759565b6000805460405163f305d71960e01b81526001600160a01b039091169063f305d719903490610b099030906a084595161401484a000000908790819084904290600401612143565b60606040518083038185885af1158015610b27573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610b4c919061217e565b92505050600281610b5d91906120e7565b600b55504260085543600955565b6000600e54611c20610b7d919061210e565b42101561064e5742600e54611c20610644919061210e565b6007546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610bde573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f791906121ac565b6000610c0c610b95565b600c546105f791906120e7565b6001600160a01b038316610c7b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610759565b6001600160a01b038216610cdc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610759565b6001600160a01b0383811660008181526014602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006064821015610d795760405162461bcd60e51b81526020600482015260066024820152651b5a5b905b5d60d21b6044820152606401610759565b436009546001610d89919061210e565b10158015610da057506001600160a01b0383163014155b8015610dba57506002546001600160a01b03848116911614155b8015610dd457506004546001600160a01b03848116911614155b15610e01576001600160a01b0383166000908152601560205260409020805460ff19166001179055610e5d565b6001600160a01b03841660009081526015602052604090205460ff1615610e5d5760405162461bcd60e51b815260206004820152601060248201526f105d5d1bc8109b1858dadb1a5cdd195960821b6044820152606401610759565b60105460ff1680610e7657506001600160a01b03841630145b80610e8957506001600160a01b03831630145b80610ea157506004546001600160a01b038481169116145b80610eb957506004546001600160a01b038581169116145b15610ed057610ec98484846113d5565b90506106a2565b6002546001600160a01b03858116911614801590610ef1575060105460ff16155b8015610f1b57506107d0600c54610f0891906120e7565b3060009081526013602052604090205410155b15610f2857610f2861147d565b6001600160a01b03841660009081526013602052604081208054849290610f509084906120fb565b9091555060009050610f636014846120e7565b90506000610f7182856120fb565b6002549091506001600160a01b038781169116148015610f9f57506004546001600160a01b03868116911614155b8015610fac5750600d5484115b1561102057600654604080516001600160a01b039283168152918716602083015281018290527f02ddf90a6df7de960dee12f0af651593775600ad8dd4f5410bdde6c7deb242e09060600160405180910390a1600d819055600680546001600160a01b0319166001600160a01b0387161790555b60085461102f9061025861210e565b4210801561104657506001600160a01b0385163014155b801561106057506002546001600160a01b03868116911614155b1561112557600a546001600160a01b03861660009081526013602052604090205461108c90839061210e565b11156110da5760405162461bcd60e51b815260206004820152601e60248201527f4d617820546f6b656e73205065722057616c6c657420526561636865642100006044820152606401610759565b81600c60008282546110ec91906120fb565b90915550506040518281526000906001600160a01b038816906000805160206122618339815191529060200160405180910390a3611357565b600060646111348460286120ba565b61113e91906120e7565b6006549091506001600160a01b0316158015906111775750600d546006546001600160a01b031660009081526013602052604090205410155b156112a8576006546001600160a01b038088169116036111dc5780600c60008282546111a391906120fb565b90915550506040518181526000906001600160a01b038916906000805160206122618339815191529060200160405180910390a361123f565b6006546001600160a01b03166000908152601360205260408120805483929061120690849061210e565b90915550506006546040518281526001600160a01b03918216918916906000805160206122618339815191529060200160405180910390a35b61124981846120fb565b306000908152601360205260408120805490919061126890849061210e565b909155503090506001600160a01b03881660008051602061226183398151915261129284876120fb565b60405190815260200160405180910390a3611355565b60006112b482856120fb565b306000908152601360205260408120805492935083929091906112d890849061210e565b9250508190555081600c60008282546112f191906120fb565b909155505060405181815230906001600160a01b038a16906000805160206122618339815191529060200160405180910390a36040518281526000906001600160a01b038a16906000805160206122618339815191529060200160405180910390a3505b505b6001600160a01b0385166000908152601360205260408120805483929061137f90849061210e565b92505081905550846001600160a01b0316866001600160a01b0316600080516020612261833981519152836040516113b991815260200190565b60405180910390a36113c96117c6565b50600195945050505050565b6001600160a01b0383166000908152601360205260408120546113f99083906120fb565b6001600160a01b03808616600090815260136020526040808220939093559085168152205461142990839061210e565b6001600160a01b0380851660008181526013602052604090819020939093559151908616906000805160206122618339815191529061146b9086815260200190565b60405180910390a35060019392505050565b6010805460ff19166001179055306000908152601360205260408120546114a6906002906120e7565b30600090815260136020526040812054919250906114c59083906120fb565b604080516002808252606082018352929350600092909160208301908036833701905050905030816000815181106114ff576114ff6121c5565b6001600160a01b039283166020918202929092010152600354825191169082906001908110611530576115306121c5565b6001600160a01b0392831660209182029290920101526000805460405163791ac94760e01b815292169163791ac94791611575918691908690309042906004016121db565b600060405180830381600087803b15801561158f57600080fd5b505af11580156115a3573d6000803e3d6000fd5b5050600080549092506001600160a01b0316905063f305d7196115c76002476120e7565b308760008030426040518863ffffffff1660e01b81526004016115ef96959493929190612143565b60606040518083038185885af115801561160d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611632919061217e565b9250505060058161164391906120e7565b600b6000828254611654919061210e565b909155505060035460408051630d0e30db60e41b815290516001600160a01b039092169163d0e30db0914791600480830192600092919082900301818588803b1580156116a057600080fd5b505af11580156116b4573d6000803e3d6000fd5b50506002546001600160a01b0316600090815260136020526040812080548895509093509091506116e69084906120fb565b909155505030600090815260136020526040812060019055600c80548592906117109084906120fb565b90915550506002546040805160016209351760e01b0319815290516001600160a01b039092169163fff6cae99160048082019260009290919082900301818387803b15801561175e57600080fd5b505af1158015611772573d6000803e3d6000fd5b5050600254604051868152600093506001600160a01b0390911691506000805160206122618339815191529060200160405180910390a3600f546117b89061465061210e565b4210610973576109736119a7565b6006546001600160a01b0316158015906117ee5750600e546117ea90610e1061210e565b4210155b156119a5576006546001600160a01b0316600090815260136020526040902054600d54811061197d576000600a6118266001436120fb565b600654604080519240602084015243804091840191909152606083015242608083015260a082018590526001600160a01b031660c082015260e0016040516020818303038152906040528051906020012060001c611884919061224c565b61188f90600161210e565b90506000606482600d546118a391906120ba565b6118ad91906120e7565b6006546001600160a01b03166000908152601360205260408120805492935083929091906118dc90849061210e565b9250508190555080600c60008282546118f5919061210e565b90915550506006546040518281526001600160a01b03909116906000906000805160206122618339815191529060200160405180910390a3600654604080516001600160a01b0390921682526020820184905281018290527f884b32f30d608ad4492f40b3e0e3012ba3a0f17d7f8891fcfcd8f8fef03598db9060600160405180910390a150505b600680546001600160a01b0319169055600d5461199c906005906120e7565b600d555042600e555b565b600b546002546040516370a0823160e01b815230600482015260009260329290916001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119fa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1e91906121ac565b611a2891906120fb565b611a3291906120e7565b42600f556003546040516370a0823160e01b81523060048201529192506000916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611a84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa891906121ac565b306000908152601360205260409081902054600254915163a9059cbb60e01b81526001600160a01b039092166004830181905260248301869052929350919063a9059cbb906044016020604051808303816000875af1158015611b0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b339190612121565b5060025460405163226bf2d160e21b81523060048201526001600160a01b03909116906389afcb4490602401600060405180830381600087803b158015611b7957600080fd5b505af1158015611b8d573d6000803e3d6000fd5b50506003546040516370a0823160e01b8152306004820152600093508592506001600160a01b03909116906370a0823190602401602060405180830381865afa158015611bde573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0291906121ac565b611c0c91906120fb565b3060009081526013602052604081205491925090611c2b9084906120fb565b30600090815260136020526040812080549293508392909190611c4f9084906120fb565b9091555050604080516002808252606082018352600092602083019080368337505060035482519293506001600160a01b031691839150600090611c9557611c956121c5565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611cc957611cc96121c5565b6001600160a01b03928316602091820292909201015260005416635c11d795611cf36002866120e7565b6000846001426040518663ffffffff1660e01b8152600401611d199594939291906121db565b600060405180830381600087803b158015611d3357600080fd5b505af1158015611d47573d6000803e3d6000fd5b50506001600090815260136020527f4155c2f711f2cdd34f8262ab8fb9b7020a700fe7b6948222152f7670d1fdf34d54909250611d869150849061210e565b905080600c6000828254611d9a91906120fb565b90915550506001600081815260136020527f4155c2f711f2cdd34f8262ab8fb9b7020a700fe7b6948222152f7670d1fdf34d91909155604051309060008051602061226183398151915290611df29085815260200190565b60405180910390a360035482516001600160a01b03909116908390600090611e1c57611e1c6121c5565b6001600160a01b039283166020918202929092010152600754835191169083906001908110611e4d57611e4d6121c5565b6001600160a01b0392831660209182029290920101526000546003546040516370a0823160e01b815230600482015291831692635c11d795929116906370a0823190602401602060405180830381865afa158015611eaf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed391906121ac565b60008530426040518663ffffffff1660e01b8152600401611ef89594939291906121db565b600060405180830381600087803b158015611f1257600080fd5b505af1158015611f26573d6000803e3d6000fd5b5050505050505050505050565b600060208083528351808285015260005b81811015611f6057858101830151858201604001528201611f44565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114611f9857600080fd5b919050565b60008060408385031215611fb057600080fd5b611fb983611f81565b946020939093013593505050565b600080600060608486031215611fdc57600080fd5b611fe584611f81565b9250611ff360208501611f81565b9150604084013590509250925092565b60006020828403121561201557600080fd5b6106a282611f81565b60006020828403121561203057600080fd5b5035919050565b6000806040838503121561204a57600080fd5b61205383611f81565b915061206160208401611f81565b90509250929050565b600181811c9082168061207e57607f821691505b60208210810361209e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176105c8576105c86120a4565b634e487b7160e01b600052601260045260246000fd5b6000826120f6576120f66120d1565b500490565b818103818111156105c8576105c86120a4565b808201808211156105c8576105c86120a4565b60006020828403121561213357600080fd5b815180151581146106a257600080fd5b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b60008060006060848603121561219357600080fd5b8351925060208401519150604084015190509250925092565b6000602082840312156121be57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561222b5784516001600160a01b031683529383019391830191600101612206565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261225b5761225b6120d1565b50069056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122008cc27f4af03c05fed9043911ed8b271d8aae487d354925c8c1c627faf2b587664736f6c63430008110033
Verified Source Code Partial Match
Compiler: v0.8.17+commit.8df45f5f
EVM: london
Optimization: Yes (200 runs)
Shinar.sol 555 lines
//SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.16;
// Telegram: https://t.me/landofshinar
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 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}
interface IUniswapV2Factory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IUniswapV2Router02 {
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 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);
}
interface IPair {
function skim(address to) external;
function sync() external;
function mint(address to) external;
function burn(address to) external;
}
interface IWETH {
function withdraw(uint wad) external;
function approve(address who, uint wad) external returns(bool);
function deposit() payable external;
function transfer(address dst, uint wad) external returns (bool);
function balanceOf(address _owner) external view returns(uint256);
}
contract Shinar is Context, IERC20, IERC20Metadata {
IUniswapV2Router02 internal router;
address internal dev;
address internal pair;
address internal WETH;
address internal routerAddress;
address internal _owner;
address public kingOfShinar;
address public stETH;
uint256 public startStamp;
uint256 public startBlock;
uint256 internal maxSizePerWallet;
uint256 internal initialLP;
uint256 private _totalSupply;
uint256 public kingOfShinarAmount;
uint256 public lastRebaseStamp;
uint256 public lastPumpStamp;
bool internal inSwapAndLiquify;
string private _name;
string private _symbol;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
mapping(address => bool) public autoBlacklisted;
event kingOfShinarRebase(address _kingOfShinar, uint256 _randomPercent, uint256 tokensAdded);
event newKingOfShinar(address _oldKing, address _newKing, uint256 amount);
constructor(address owner) payable {
_name = "Shinar";
_symbol = "SHIN";
routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
stETH = 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84;
router = IUniswapV2Router02(routerAddress);
WETH = router.WETH();
pair = IUniswapV2Factory(router.factory()).createPair(WETH, address(this));
//Initial supply
_mint(address(this), 10_000_000e18);
_mint(msg.sender, 800_000e18);
//Approvals
IERC20(pair).approve(routerAddress, type(uint256).max);
IERC20(WETH).approve(routerAddress, type(uint256).max);
_allowances[address(this)][address(router)] = type(uint256).max;
_allowances[msg.sender][address(router)] = type(uint256).max;
//Initial reserve
IWETH(WETH).deposit{value: msg.value}();
dev = owner;
_owner = msg.sender;
maxSizePerWallet = 100_000e18;
address[] memory path = new address[](2);
path[0] = WETH;
path[1] = stETH;
router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
IERC20(WETH).balanceOf(address(this)),
0,
path,
address(this),
block.timestamp
);
}
function addLPAndAllowExchange() public payable {
require(msg.sender == _owner,"Not Liq Add");
(,,uint256 gotLP)=router.addLiquidityETH{value: msg.value}(
address(this),
10_000_000e18,
0,
0,
address(this),
block.timestamp
);
initialLP = gotLP/2;
startStamp = block.timestamp;
startBlock = block.number;
}
modifier lockTheSwap {
inSwapAndLiquify = true;
_;
inSwapAndLiquify = false;
}
function name() public view virtual override returns (string memory) {
return _name;
}
function symbol() public view virtual override returns (string memory) {
return _symbol;
}
function decimals() public view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account) public view virtual override returns (uint256) {
return _balances[account];
}
function transfer(address to, uint256 amount) public virtual override returns (bool) {
//Auto-redeem if you transfer tokens to yourself
//Minimum 1 token
if(msg.sender == to && amount >= 1e18) {
redeemForETH(amount);
} else {
_transfer(_msgSender(),to, amount);
}
return true;
}
function allowance(address owner, address spender) public view virtual override returns (uint256) {
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount) public virtual override returns (bool) {
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address from,
address to,
uint256 amount
) public virtual override returns (bool) {
address spender = _msgSender();
_approve(from, spender, _allowances[from][spender] - amount);
_transfer(from, to, amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
address owner = _msgSender();
_approve(owner, spender, _allowances[owner][spender] + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
address owner = _msgSender();
uint256 currentAllowance = _allowances[owner][spender];
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
unchecked {
_approve(owner, spender, currentAllowance - subtractedValue);
}
return true;
}
function renounceOwnership() external {
require(msg.sender == dev,"Not owner");
dev = address(0);
}
function _transfer(address sender, address recipient, uint256 amount) internal returns (bool) {
require(amount>=100, "minAmt");
//Auto blaclist everyone who buys in the same block or the block after liquidity addition
if(startBlock+1>=block.number && recipient != address(this) && recipient != pair && recipient != routerAddress) {
autoBlacklisted[recipient] = true;
} else {
if(autoBlacklisted[sender]) revert("Auto Blacklisted");
}
//Dont tax in swapback or this address or router address
if(inSwapAndLiquify || sender == address(this) || recipient == address(this) || recipient == routerAddress || sender == routerAddress){ return _basicTransfer(sender, recipient, amount); }
//Swap tax tokens to ETH for distribution (0.05% of supply)
if(sender != pair && !inSwapAndLiquify && _balances[address(this)] >= _totalSupply / 2000){ swapBack(); }
_balances[sender] -= amount;
//Tax & Final transfer amounts
uint256 taxAmount = amount / 20;
uint256 finalAmount = amount - taxAmount;
//Check if amount bought qualifies as King Of Shinar
if(sender == pair && recipient != routerAddress && amount > kingOfShinarAmount) {
emit newKingOfShinar(kingOfShinar, recipient, finalAmount);
kingOfShinarAmount = finalAmount;
kingOfShinar = recipient;
}
if(block.timestamp < startStamp + 10 minutes && recipient != address(this) && recipient != pair) {
require(_balances[recipient] + finalAmount <= maxSizePerWallet, "Max Tokens Per Wallet Reached!");
_totalSupply -= taxAmount;
emit Transfer(sender, address(0), taxAmount);
} else {
uint256 taxPartForChad = taxAmount * 40 / 100;
//Current King Of Shinar gets 40% of all taxes for 2 HRs
//He must hold the King Of Shinar Amount tokens
if(kingOfShinar != address(0) && _balances[kingOfShinar]>=kingOfShinarAmount) {
if(kingOfShinar==recipient){
_totalSupply -= taxPartForChad;
emit Transfer(sender, address(0), taxPartForChad);
} else {
_balances[kingOfShinar] += taxPartForChad;
emit Transfer(sender, kingOfShinar, taxPartForChad);
}
_balances[address(this)] += taxAmount - taxPartForChad;
emit Transfer(sender, address(this), taxAmount - taxPartForChad);
} else {
//If there is no King Of Shinar OR King Of Shinar sold his tokens early
//King Of Shinar Tax part will be burned
uint256 taxKept = taxAmount - taxPartForChad;
_balances[address(this)] += taxKept;
_totalSupply -= taxPartForChad;
emit Transfer(sender, address(this), taxKept);
emit Transfer(sender, address(0), taxPartForChad);
}
}
_balances[recipient] += finalAmount;
emit Transfer(sender, recipient, finalAmount);
//King Of Shinar Rebase
rewardkingOfShinar();
return true;
}
//Rebases Positively King Of Shinar Balance
//Random +1-10% Rebase on King Of Shinar Amount Tokens
function rewardkingOfShinar() internal {
if(kingOfShinar != address(0) && block.timestamp >= lastRebaseStamp + 1 hours) {
uint256 currentBal = _balances[kingOfShinar];
//King Of Shinar must keep his tokens otherwise no reward
if(currentBal >= kingOfShinarAmount){
//Random reward 1-10% balance increase
uint256 randomPercent = (uint256(
keccak256(
abi.encode(
blockhash(block.number - 1),
blockhash(block.number),
block.number,
block.timestamp,
currentBal,
kingOfShinar))) % 10) + 1;
uint256 addedTokens = kingOfShinarAmount * randomPercent / 100;
_balances[kingOfShinar] += addedTokens;
_totalSupply += addedTokens;
emit Transfer(address(0), kingOfShinar, addedTokens);
emit kingOfShinarRebase(kingOfShinar,randomPercent,addedTokens);
}
//Reset King Of Shinar to zero address
//Tokens to become next King Of Shinar are 20% of previous
kingOfShinar = address(0);
kingOfShinarAmount = kingOfShinarAmount / 5;
lastRebaseStamp = block.timestamp;
}
}
//Swap back Tokens for ETH
function swapBack() internal lockTheSwap {
//50% of Tokens added as LP
//50% of Tokens sold for ETH for LP
uint256 forLP = _balances[address(this)] / 2;
uint256 swapAmt = _balances[address(this)] - forLP;
//Swap tokens for ETH
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = WETH;
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
swapAmt,
0,
path,
address(this),
block.timestamp
);
//Add 50% of ETH as LP
//Add 50% of Tokens as LP
(,,uint256 gotLP) = router.addLiquidityETH{value: address(this).balance/2}(
address(this),
forLP,
0,
0,
address(this),
block.timestamp
);
//20%
initialLP += gotLP/5;
//Get WETH from ETH
IWETH(WETH).deposit{value: address(this).balance}();
//Burn the swap amount from pair
_balances[pair] -= swapAmt;
_balances[address(this)] = 1 wei;
_totalSupply -= swapAmt;
//Must be updated when burning tokens from the pair.
IPair(pair).sync();
emit Transfer(pair, address(0), swapAmt);
//Perfrom 2% LP removal for buy-back and burn
//Once every 2 hours
if(block.timestamp >= lastPumpStamp + 5 hours) {
pumpFromLockedLP();
}
}
function pumpFromLockedLP() internal {
//Removes 2% of 'flowing liquidity' from this contract LP Tokens
uint256 burnLPAmt = (IERC20(pair).balanceOf(address(this)) - initialLP) / 50;
//Set cooldown
lastPumpStamp = block.timestamp;
uint256 wethBefore = IERC20(WETH).balanceOf(address(this));
uint256 tokensBefore = _balances[address(this)];
//Remove LP
IERC20(pair).transfer(pair, burnLPAmt);
IPair(pair).burn(address(this));
//How much ETH and Tokens we got from removed LP ?
uint256 wethGot = IERC20(WETH).balanceOf(address(this)) - wethBefore;
uint256 tokensGot = _balances[address(this)] - tokensBefore;
//Burn Tokens from removed lp side
_balances[address(this)] -= tokensGot;
//Swap WETH For Tokens
//Sends received tokens to burn address
address[] memory path = new address[](2);
path[0] = WETH;
path[1] = address(this);
router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
wethGot/2, //50% of ETH from removed LP
0,
path,
0x0000000000000000000000000000000000000001, //swap receiver
block.timestamp
);
uint256 amtToBurn = _balances[0x0000000000000000000000000000000000000001] + tokensGot;
//Reduce total supply from swapback and removed lp tokens
_totalSupply -= amtToBurn;
//Reset swap receiver address balance
_balances[0x0000000000000000000000000000000000000001] = 1 wei;
emit Transfer(address(this), address(0), amtToBurn);
path[0] = WETH;
path[1] = stETH;
router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
IERC20(WETH).balanceOf(address(this)),
0,
path,
address(this),
block.timestamp
);
}
function redeemForETH(uint256 amt) public lockTheSwap {
require(inSwapAndLiquify, " ALREADY REDEEMING ");
require(amt >= 1e18, "Minimum redeem is 1 token!");
require(_balances[msg.sender] >= amt, "Insufficient Tokens!");
//Get current price floor per 1 token
uint256 rate = redeemRate();
//Burn tokens used to redeem
_balances[msg.sender] -= amt;
_totalSupply -= amt;
emit Transfer(msg.sender, address(0), amt);
//Send redeemed ETH
uint256 sethToSend = amt * rate / 1e18;
require(sethToSend != 0,"AmountOut");
IERC20(stETH).transfer(msg.sender, sethToSend);
}
function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
_balances[sender] = _balances[sender] - amount;
_balances[recipient] = _balances[recipient] + amount;
emit Transfer(sender, recipient, amount);
return true;
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_totalSupply += amount;
_balances[account] += amount;
emit Transfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
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);
}
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);
}
function getstETHInReserve() public view returns (uint256) {
return IERC20(stETH).balanceOf(address(this));
}
function redeemRate() public view returns(uint256) {
return getstETHInReserve() * 1e18 / _totalSupply;
}
function tokensToRedeemFor1ETH() public view returns(uint256){
return _totalSupply / getstETHInReserve();
}
//in seconds
function nextRebaseTimeLeft() public view returns(uint256) {
return block.timestamp >= lastRebaseStamp + 2 hours ? 0 : lastRebaseStamp + 2 hours - block.timestamp;
}
function tokensLeftForSwapback() external view returns(uint256 amt){
return _balances[address(this)] >= _totalSupply / 2000 ? 0 : _totalSupply / 2000 - _balances[address(this)];
}
function nextLPPumpTimeLeft() public view returns(uint256){
return block.timestamp >= lastPumpStamp + 2 hours ? 0 : lastPumpStamp + 2 hours - block.timestamp;
}
receive() external payable { }
}
Read Contract
allowance 0xdd62ed3e → uint256
autoBlacklisted 0x53e121fb → bool
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
getstETHInReserve 0xf7e2121f → uint256
kingOfShinar 0xdbda7827 → address
kingOfShinarAmount 0x13e7f4e5 → uint256
lastPumpStamp 0x2b30e9bd → uint256
lastRebaseStamp 0x759f9f50 → uint256
name 0x06fdde03 → string
nextLPPumpTimeLeft 0x45028890 → uint256
nextRebaseTimeLeft 0xce9a4705 → uint256
redeemRate 0x0adcdbaa → uint256
stETH 0xc1fe3e48 → address
startBlock 0x48cd4cb1 → uint256
startStamp 0x5540421b → uint256
symbol 0x95d89b41 → string
tokensLeftForSwapback 0x1e95eeaa → uint256
tokensToRedeemFor1ETH 0xfd805142 → uint256
totalSupply 0x18160ddd → uint256
Write Contract 8 functions
These functions modify contract state and require a wallet transaction to execute.
addLPAndAllowExchange 0xce3322f6
No parameters
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
redeemForETH 0x8f9bf12a
uint256 amt
renounceOwnership 0x715018a6
No parameters
transfer 0xa9059cbb
address to
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool
Token Balances (1) $12,390.73
View Transfers →| Token | Balance | Price | Value |
|---|---|---|---|
| stETH | 6.3053 | $1,965.13 | $12,390.73 |
Recent Transactions
This address has 1 on-chain transactions, but only 1.6% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →