Address Contract Partially Verified
Address
0xb95Dd01c6856DC5753B5A205c2dDD03Ef8170c50
Balance
0 ETH
Nonce
1
Code Size
7595 bytes
Creator
0xc84f945b...5fd4 at tx 0xdb6e1ae5...7d6415
Indexed Transactions
0
Contract Bytecode
7595 bytes
0x60806040526004361061022b575f3560e01c80638cd4426d11610129578063a9059cbb116100a8578063dd62ed3e1161006d578063dd62ed3e1461064c578063e01af92c14610690578063e545fd6d146106af578063f2fde38b146106ce578063f887ea40146106ed575f80fd5b8063a9059cbb146105b6578063cc1776d3146105d5578063d34628cc146105ea578063d5abeb0114610609578063dbe66ca01461061e575f80fd5b8063a0abe085116100ee578063a0abe08514610525578063a3d17f1c14610544578063a457c2d714610563578063a561602614610582578063a8aa1b3114610597575f80fd5b80638cd4426d146104975780638da5cb5b146104b657806395d89b41146104d35780639d0014b1146104e75780639e252f0014610506575f80fd5b806340b28c2f116101b55780636ddd17131161017a5780636ddd1713146103f157806370a0823114610411578063715018a61461044557806374c9f6031461045957806382aa7c6814610478575f80fd5b806340b28c2f146103675780634ada218b146103885780634f7041a5146103a857806350c9a88f146103bd57806356faae96146103d2575f80fd5b806323b872dd116101fb57806323b872dd146102c2578063274a533c146102e15780632dc0562d146102f6578063313ce5671461032d5780633950935114610348575f80fd5b80630445b6671461023657806306fdde031461025e578063095ea7b31461027f57806318160ddd146102ae575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5061024b600a5481565b6040519081526020015b60405180910390f35b348015610269575f80fd5b5061027261070c565b6040516102559190611938565b34801561028a575f80fd5b5061029e6102993660046119a7565b61079c565b6040519015158152602001610255565b3480156102b9575f80fd5b5060025461024b565b3480156102cd575f80fd5b5061029e6102dc3660046119d1565b6107b2565b3480156102ec575f80fd5b5061024b60085481565b348015610301575f80fd5b50600b54610315906001600160a01b031681565b6040516001600160a01b039091168152602001610255565b348015610338575f80fd5b5060405160128152602001610255565b348015610353575f80fd5b5061029e6103623660046119a7565b610866565b348015610372575f80fd5b50610386610381366004611a0f565b61089c565b005b348015610393575f80fd5b5060075461029e90600160b01b900460ff1681565b3480156103b3575f80fd5b5061024b600e5481565b3480156103c8575f80fd5b5061024b60095481565b3480156103dd575f80fd5b506103866103ec366004611a46565b6108f4565b3480156103fc575f80fd5b5060075461029e90600160a81b900460ff1681565b34801561041c575f80fd5b5061024b61042b366004611a66565b6001600160a01b03165f9081526020819052604090205490565b348015610450575f80fd5b5061038661096b565b348015610464575f80fd5b50610386610473366004611a66565b6109a0565b348015610483575f80fd5b50610386610492366004611a88565b6109ec565b3480156104a2575f80fd5b506103866104b13660046119a7565b610a97565b3480156104c1575f80fd5b506005546001600160a01b0316610315565b3480156104de575f80fd5b50610272610b10565b3480156104f2575f80fd5b50610386610501366004611a88565b610b1f565b348015610511575f80fd5b50610386610520366004611a88565b610b4e565b348015610530575f80fd5b5061038661053f366004611a88565b610b67565b34801561054f575f80fd5b5061038661055e366004611a46565b610c3c565b34801561056e575f80fd5b5061029e61057d3660046119a7565b610c71565b34801561058d575f80fd5b5061024b600d5481565b3480156105a2575f80fd5b50600754610315906001600160a01b031681565b3480156105c1575f80fd5b5061029e6105d03660046119a7565b610d0b565b3480156105e0575f80fd5b5061024b600f5481565b3480156105f5575f80fd5b50610386610604366004611ab3565b610d17565b348015610614575f80fd5b5061024b600c5481565b348015610629575f80fd5b5061029e610638366004611a66565b60106020525f908152604090205460ff1681565b348015610657575f80fd5b5061024b610666366004611a0f565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b34801561069b575f80fd5b506103866106aa366004611b80565b610daa565b3480156106ba575f80fd5b506103866106c9366004611b9b565b610df2565b3480156106d9575f80fd5b506103866106e8366004611a66565b610e46565b3480156106f8575f80fd5b50600654610315906001600160a01b031681565b60606003805461071b90611bc7565b80601f016020809104026020016040519081016040528092919081815260200182805461074790611bc7565b80156107925780601f1061076957610100808354040283529160200191610792565b820191905f5260205f20905b81548152906001019060200180831161077557829003601f168201915b5050505050905090565b5f6107a8338484610ede565b5060015b92915050565b5f6107be848484611001565b6001600160a01b0384165f908152600160209081526040808320338452909152902054828110156108475760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61085b85336108568685611c13565b610ede565b506001949350505050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916107a8918590610856908690611c26565b6005546001600160a01b031633146108c65760405162461bcd60e51b815260040161083e90611c39565b600680546001600160a01b039384166001600160a01b03199182161790915560078054929093169116179055565b6005546001600160a01b0316331461091e5760405162461bcd60e51b815260040161083e90611c39565b4761092883611358565b5f6109338247611c13565b9050821561096557610965836109498184611c6e565b6109539190611c85565b600b546001600160a01b0316906114a8565b50505050565b6005546001600160a01b031633146109955760405162461bcd60e51b815260040161083e90611c39565b61099e5f6115bd565b565b6005546001600160a01b031633146109ca5760405162461bcd60e51b815260040161083e90611c39565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b03163314610a165760405162461bcd60e51b815260040161083e90611c39565b600754600160b01b900460ff1615610a705760405162461bcd60e51b815260206004820152601f60248201527f5348494e4147413a2054726164696e6720616c72656164792061637469766500604482015260640161083e565b600f600e81905580556007805461ffff60a81b191661010160a81b17905543600855600955565b600b5460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529083169063a9059cbb906044016020604051808303815f875af1158015610ae7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b0b9190611ca4565b505050565b60606004805461071b90611bc7565b6005546001600160a01b03163314610b495760405162461bcd60e51b815260040161083e90611c39565b600a55565b600b54610b64906001600160a01b0316826114a8565b50565b6005546001600160a01b03163314610b915760405162461bcd60e51b815260040161083e90611c39565b600c5481610b9e60025490565b610ba89190611c26565b1115610c105760405162461bcd60e51b815260206004820152603160248201527f4552524f523a2063616e6e6f74206d696e74206d6f7265205348494e414741206044820152707468616e20746f74616c20737570706c7960781b606482015260840161083e565b80600d5f828254610c219190611c26565b9091555050600554610b64906001600160a01b03168261160e565b6005546001600160a01b03163314610c665760405162461bcd60e51b815260040161083e90611c39565b600e91909155600f55565b335f9081526001602090815260408083206001600160a01b038616845290915281205482811015610cf25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161083e565b610d0133856108568685611c13565b5060019392505050565b5f6107a8338484611001565b6005546001600160a01b03163314610d415760405162461bcd60e51b815260040161083e90611c39565b5f5b8151811015610da657600160115f848481518110610d6357610d63611cbf565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905580610d9e81611cd3565b915050610d43565b5050565b6005546001600160a01b03163314610dd45760405162461bcd60e51b815260040161083e90611c39565b60078054911515600160a81b0260ff60a81b19909216919091179055565b6005546001600160a01b03163314610e1c5760405162461bcd60e51b815260040161083e90611c39565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e705760405162461bcd60e51b815260040161083e90611c39565b6001600160a01b038116610ed55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161083e565b610b64816115bd565b6001600160a01b038316610f405760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161083e565b6001600160a01b038216610fa15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161083e565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f811161106b5760405162461bcd60e51b815260206004820152603260248201527f5348494e4147413a205472616e7366657220616d6f756e74206d7573742062656044820152712067726561746572207468616e207a65726f60701b606482015260840161083e565b6001600160a01b0383165f9081526011602052604090205460ff161580156110ab57506001600160a01b0382165f9081526011602052604090205460ff16155b6110f75760405162461bcd60e51b815260206004820152601960248201527f596f752063616e2774207472616e7366657220746f6b656e7300000000000000604482015260640161083e565b6001600160a01b0383165f9081526010602052604090205460ff1615801561113757506001600160a01b0382165f9081526010602052604090205460ff16155b801561114d5750600754600160a01b900460ff16155b1561122b57600754600160b01b900460ff166111a45760405162461bcd60e51b8152602060048201526016602482015275151c98591a5b99c81b9bdd081858dd1a5d99481e595d60521b604482015260640161083e565b436009546008546111b59190611c26565b111561122b576007546001600160a01b038381169116146111f3576001600160a01b0382165f908152601160205260409020805460ff191660011790555b6007546001600160a01b0384811691161461122b576001600160a01b0383165f908152601160205260409020805460ff191660011790555b6007545f90600160a01b900460ff168061125c57506001600160a01b0384165f9081526010602052604090205460ff165b8061127e57506001600160a01b0383165f9081526010602052604090205460ff165b1561128a57505f6112de565b6007546001600160a01b03908116908416036112c1576064600f54836112b09190611c6e565b6112ba9190611c85565b90506112de565b6064600e54836112d19190611c6e565b6112db9190611c85565b90505b600754600160a81b900460ff1680156113015750600754600160a01b900460ff16155b801561131b57506007546001600160a01b03858116911614155b801561132657505f81115b15611333576113336116ea565b61134784846113428486611c13565b611762565b801561096557610965843083611762565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061138b5761138b611cbf565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156113e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114069190611ceb565b8160018151811061141957611419611cbf565b6001600160a01b03928316602091820292909201015260065461143f9130911684610ede565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906114779085905f90869030904290600401611d06565b5f604051808303815f87803b15801561148e575f80fd5b505af11580156114a0573d5f803e3d5ffd5b505050505050565b804710156114f85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161083e565b5f826001600160a01b0316826040515f6040518083038185875af1925050503d805f8114611541576040519150601f19603f3d011682016040523d82523d5f602084013e611546565b606091505b5050905080610b0b5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161083e565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166116645760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161083e565b8060025f8282546116759190611c26565b90915550506001600160a01b0382165f90815260208190526040812080548392906116a1908490611c26565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600754600160a01b900460ff1661099e576007805460ff60a01b1916600160a01b179055305f908152602081905260408120549050600a548110611752578061173281611358565b47801561174f57600b5461174f906001600160a01b0316826114a8565b50505b506007805460ff60a01b19169055565b6001600160a01b0383166117c65760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161083e565b6001600160a01b0382166118285760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161083e565b6001600160a01b0383165f908152602081905260409020548181101561189f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161083e565b6118a98282611c13565b6001600160a01b038086165f9081526020819052604080822093909355908516815290812080548492906118de908490611c26565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161192a91815260200190565b60405180910390a350505050565b5f6020808352835180828501525f5b8181101561196357858101830151858201604001528201611947565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b64575f80fd5b80356119a281611983565b919050565b5f80604083850312156119b8575f80fd5b82356119c381611983565b946020939093013593505050565b5f805f606084860312156119e3575f80fd5b83356119ee81611983565b925060208401356119fe81611983565b929592945050506040919091013590565b5f8060408385031215611a20575f80fd5b8235611a2b81611983565b91506020830135611a3b81611983565b809150509250929050565b5f8060408385031215611a57575f80fd5b50508035926020909101359150565b5f60208284031215611a76575f80fd5b8135611a8181611983565b9392505050565b5f60208284031215611a98575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215611ac4575f80fd5b823567ffffffffffffffff80821115611adb575f80fd5b818501915085601f830112611aee575f80fd5b813581811115611b0057611b00611a9f565b8060051b604051601f19603f83011681018181108582111715611b2557611b25611a9f565b604052918252848201925083810185019188831115611b42575f80fd5b938501935b82851015611b6757611b5885611997565b84529385019392850192611b47565b98975050505050505050565b8015158114610b64575f80fd5b5f60208284031215611b90575f80fd5b8135611a8181611b73565b5f8060408385031215611bac575f80fd5b8235611bb781611983565b91506020830135611a3b81611b73565b600181811c90821680611bdb57607f821691505b602082108103611bf957634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156107ac576107ac611bff565b808201808211156107ac576107ac611bff565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b80820281158282048414176107ac576107ac611bff565b5f82611c9f57634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215611cb4575f80fd5b8151611a8181611b73565b634e487b7160e01b5f52603260045260245ffd5b5f60018201611ce457611ce4611bff565b5060010190565b5f60208284031215611cfb575f80fd5b8151611a8181611983565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611d545784516001600160a01b031683529383019391830191600101611d2f565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220453815f521ac431ba5355045590ad4a362a2d7b2c2b151259bbda7d8af40258b64736f6c63430008140033
Verified Source Code Partial Match
Compiler: v0.8.20+commit.a1b79de6
EVM: shanghai
Optimization: Yes (200 runs)
Shinaga.sol 398 lines
// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
this;
return msg.data;
}
}
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);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
mapping(address => uint256) internal _balances;
mapping(address => mapping(address => uint256)) internal _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
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 recipient, uint256 amount) public virtual override returns (bool) {
_transfer(_msgSender(), recipient, 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 sender, address recipient, uint256 amount) public virtual override returns (bool) {
_transfer(sender, recipient, amount);
uint256 currentAllowance = _allowances[sender][_msgSender()];
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
_approve(sender, _msgSender(), currentAllowance - amount);
return true;
}
function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
_approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
uint256 currentAllowance = _allowances[_msgSender()][spender];
require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
_approve(_msgSender(), spender, currentAllowance - subtractedValue);
return true;
}
function _transfer(address sender, address recipient, uint256 amount) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_beforeTokenTransfer(sender, recipient, amount);
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
_balances[sender] = senderBalance - amount;
_balances[recipient] += amount;
emit Transfer(sender, recipient, amount);
}
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);
}
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");
_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 _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}
library Address {
function sendValue(address payable recipient, uint256 amount) internal {
require(address(this).balance >= amount, "Address: insufficient balance");
(bool success,) = recipient.call{ value: amount }("");
require(success, "Address: unable to send value, recipient may have reverted");
}
}
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() {
_setOwner(_msgSender());
}
function owner() public view virtual returns (address) {
return _owner;
}
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
function renounceOwnership() public virtual onlyOwner {
_setOwner(address(0));
}
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_setOwner(newOwner);
}
function _setOwner(address newOwner) private {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}
interface IFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface IRouter {
function factory() external pure returns (address);
function WETH() external pure returns (address);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
)
external;
}
contract Shinaga is ERC20, Ownable {
using Address for address payable;
IRouter public router;
address public pair;
bool private swapping;
bool public swapEnabled;
bool public tradingEnabled;
uint256 public genesis_block;
uint256 public deadblocks = 0;
uint256 public swapThreshold;
address public taxWallet;
uint256 public maxSupply;
uint256 public cirSupply;
uint256 public buyTax = 0;
uint256 public sellTax = 0;
mapping(address => bool) public excludedFromFees;
mapping(address => bool) private isBot;
modifier inSwap() {
if (!swapping) {
swapping = true;
_;
swapping = false;
}
}
constructor() ERC20("Shinaga", "SHINAGA") {
maxSupply= 1000000000 * 10 ** decimals(); // 1000 million total supply
cirSupply= 1000000000 * 10 ** decimals();
_mint(_msgSender(), cirSupply);
IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
router = _router;
pair = _pair;
excludedFromFees[address(this)] = true;
excludedFromFees[_msgSender()] = true;
excludedFromFees[address(0xdead)] = true;
taxWallet = _msgSender();
swapThreshold = totalSupply() * 1 / 10_000;
}
function _transfer(address sender, address recipient, uint256 amount) internal override {
require(amount > 0, "SHINAGA: Transfer amount must be greater than zero");
require(!isBot[sender] && !isBot[recipient], "You can't transfer tokens");
if (!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping) {
require(tradingEnabled, "Trading not active yet");
if (genesis_block + deadblocks > block.number) {
if (recipient != pair) isBot[recipient] = true;
if (sender != pair) isBot[sender] = true;
}
}
uint256 fee;
if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) {
fee = 0;
} else {
if (recipient == pair) fee = amount * sellTax / 100;
else fee = amount * buyTax / 100;
}
if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();
super._transfer(sender, recipient, amount - fee);
if (fee > 0) super._transfer(sender, address(this), fee);
}
function swapForFees() private inSwap {
uint256 contractBalance = balanceOf(address(this));
if (contractBalance >= swapThreshold) {
uint256 toSwap = contractBalance;
swapTokensForETH(toSwap);
uint256 marketingAmt = address(this).balance;
if (marketingAmt > 0) {
payable(taxWallet).sendValue(marketingAmt);
}
}
}
function swapTokensForETH(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = router.WETH();
_approve(address(this), address(router), tokenAmount);
// make the swap
router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
}
function setSwapEnabled(bool state) external onlyOwner {
swapEnabled = state;
}
function setSwapThreshold(uint256 new_amount) external onlyOwner {
swapThreshold = new_amount;
}
function mintSHINAGAToken(uint256 amount) external onlyOwner {
require(totalSupply() + amount <= maxSupply, "ERROR: cannot mint more SHINAGA than total supply");
cirSupply += amount;
_mint(owner(), amount);
}
function enableTrading(uint256 numOfDeadBlocks) external onlyOwner {
require(!tradingEnabled, "SHINAGA: Trading already active");
buyTax = 15;
sellTax = 15;
tradingEnabled = true;
swapEnabled = true;
genesis_block = block.number;
deadblocks = numOfDeadBlocks;
}
function setaxes(uint256 _buytax, uint256 _sellTax) external onlyOwner {
buyTax = _buytax;
sellTax = _sellTax;
}
function updateTaxWallet(address newWallet) external onlyOwner {
taxWallet = newWallet;
}
function updateRouterAndPair(IRouter _router, address _pair) external onlyOwner {
router = _router;
pair = _pair;
}
function addBots(address[] memory isBot_) public onlyOwner {
for (uint256 i = 0; i < isBot_.length; i++) {
isBot[isBot_[i]] = true;
}
}
function updateExcludedFromFees(address _address, bool state) external onlyOwner {
excludedFromFees[_address] = state;
}
function rescueERC20(address tokenAddress, uint256 amount) external {
IERC20(tokenAddress).transfer(taxWallet, amount);
}
function rescueETH(uint256 weiAmount) external {
payable(taxWallet).sendValue(weiAmount);
}
function manualSwap(uint256 amount, uint256 marketingPercentage) external onlyOwner {
uint256 initBalance = address(this).balance;
swapTokensForETH(amount);
uint256 newBalance = address(this).balance - initBalance;
if (marketingPercentage > 0) {
payable(taxWallet).sendValue(newBalance * marketingPercentage / (marketingPercentage));
}
}
// fallbacks
receive() external payable { }
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
buyTax 0x4f7041a5 → uint256
cirSupply 0xa5616026 → uint256
deadblocks 0x50c9a88f → uint256
decimals 0x313ce567 → uint8
excludedFromFees 0xdbe66ca0 → bool
genesis_block 0x274a533c → uint256
maxSupply 0xd5abeb01 → uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
pair 0xa8aa1b31 → address
router 0xf887ea40 → address
sellTax 0xcc1776d3 → uint256
swapEnabled 0x6ddd1713 → bool
swapThreshold 0x0445b667 → uint256
symbol 0x95d89b41 → string
taxWallet 0x2dc0562d → address
totalSupply 0x18160ddd → uint256
tradingEnabled 0x4ada218b → bool
Write Contract 19 functions
These functions modify contract state and require a wallet transaction to execute.
addBots 0xd34628cc
address[] isBot_
approve 0x095ea7b3
address spender
uint256 amount
returns: bool
decreaseAllowance 0xa457c2d7
address spender
uint256 subtractedValue
returns: bool
enableTrading 0x82aa7c68
uint256 numOfDeadBlocks
increaseAllowance 0x39509351
address spender
uint256 addedValue
returns: bool
manualSwap 0x56faae96
uint256 amount
uint256 marketingPercentage
mintSHINAGAToken 0xa0abe085
uint256 amount
renounceOwnership 0x715018a6
No parameters
rescueERC20 0x8cd4426d
address tokenAddress
uint256 amount
rescueETH 0x9e252f00
uint256 weiAmount
setSwapEnabled 0xe01af92c
bool state
setSwapThreshold 0x9d0014b1
uint256 new_amount
setaxes 0xa3d17f1c
uint256 _buytax
uint256 _sellTax
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner
updateExcludedFromFees 0xe545fd6d
address _address
bool state
updateRouterAndPair 0x40b28c2f
address _router
address _pair
updateTaxWallet 0x74c9f603
address newWallet
Recent Transactions
No transactions found for this address