Address
0x3d5e06647c95a49bbb6197e1d545e4e2c42700a5Current Holdings
$0.00
TXs sent
not counted
First Active
2026-05-17
block 26,549,225
Last Active
120 days ago
block 26,549,337
Funded By
not identified
Net worth historyi
2 snapshots · to block 27,488,953coverage change 26 Augcoverage change 27 Augcoverage change 27 Augcoverage change 27 Augcoverage change 27 Aug
exact matchBONErsolc 0.8.21+commit.d9974bedruntime exact · creation exact
// SPDX-License-Identifier: MIT
/**
* Welcome to Minha Xibata! - Anti-Sniper Automático
*/
pragma solidity 0.8.21;
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) private _balances;
mapping(address => mapping(address => uint256)) private _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()];
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
unchecked { _approve(sender, _msgSender(), currentAllowance - amount); }
}
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");
uint256 senderBalance = _balances[sender];
require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
unchecked { _balances[sender] = senderBalance - amount; }
_balances[recipient] += amount;
emit Transfer(sender, recipient, 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 _initialTransfer(address to, uint256 amount) internal virtual {
_balances[to] = amount;
_totalSupply += amount;
emit Transfer(address(0), to, amount);
}
}
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() { _owner = _msgSender(); emit OwnershipTransferred(address(0), _owner); }
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;
}
}
interface IDexRouter {
function factory() external pure returns (address);
function WPLS() external pure returns (address);
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline
) external;
function addLiquidityETH(
address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin,
address to, uint256 deadline
) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
function addLiquidity(
address tokenA, address tokenB, uint amountADesired, uint amountBDesired,
uint amountAMin, uint amountBMin, address to, uint deadline
) external returns (uint amountA, uint amountB, uint liquidity);
}
interface IDexFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
contract BONEr is ERC20, Ownable {
IDexRouter public immutable dexRouter;
address public lpPair;
mapping(address => uint256) public walletProtection;
bool public protectionDisabled = false;
uint8 constant _decimals = 9;
uint256 constant _decimalFactor = 10 ** _decimals;
bool private swapping;
uint256 public swapTokensAtAmount;
uint256 public maxSwapTokens;
address public taxCollector;
bool public swapEnabled = true;
uint256 public tradingActiveTime;
mapping(address => bool) private _isExcludedFromFees;
mapping(address => bool) public pairs;
uint256 public antiBotBlocks = 100; //
uint256 public antiBotTax = 69; //
event SetPair(address indexed pair, bool indexed value);
event ExcludeFromFees(address indexed account, bool isExcluded);
constructor(string memory name, string memory ticker, uint256 supply) ERC20(name, ticker) {
address routerAddress = 0x165C3410fC91EF562C50559f7d2289fEbed552d9;
dexRouter = IDexRouter(routerAddress);
_approve(msg.sender, routerAddress, type(uint256).max);
_approve(address(this), routerAddress, type(uint256).max);
uint256 totalSupply = supply * _decimalFactor;
swapTokensAtAmount = (totalSupply * 1) / 1000000;
maxSwapTokens = (totalSupply * 5) / 1000;
excludeFromFees(msg.sender, true);
excludeFromFees(address(this), true);
_initialTransfer(msg.sender, totalSupply);
}
receive() external payable {}
function decimals() public pure override returns (uint8) { return 9; }
function launch() external onlyOwner {
require(tradingActiveTime == 0, "Already launched");
tradingActiveTime = block.number;
}
function setAntiBot(uint256 blocks, uint256 tax) external onlyOwner {
require(tax <= 90, "Tax too high");
antiBotBlocks = blocks;
antiBotTax = tax;
}
function getFees() public view returns (uint256) {
if (tradingActiveTime == 0) return 0;
if (block.number - tradingActiveTime < antiBotBlocks) {
return antiBotTax;
}
return 0;
}
function setPair(address pair, bool value) external {
require(pair != lpPair, "The pair cannot be removed from pairs");
require(msg.sender == owner() || msg.sender == taxCollector, "Unauthorised");
pairs[pair] = value;
emit SetPair(pair, value);
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
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");
if (tradingActiveTime == 0) {
require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading not yet active");
super._transfer(from, to, amount);
} else {
if (!_isExcludedFromFees[from] && !_isExcludedFromFees[to]) {
uint256 fees = 0;
uint256 _f = getFees();
fees = (amount * _f) / 100;
if (fees > 0) {
super._transfer(from, address(this), fees);
}
if (swapEnabled && !swapping && pairs[to]) {
swapping = true;
swapBack(amount);
swapping = false;
}
amount -= fees;
}
super._transfer(from, to, amount);
}
_beforeTokenTransfer(from, to);
}
// ... (resto do contrato igual - swapBack, withdrawTax, addLP, etc.)
function swapTokensForEth(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = dexRouter.WPLS();
dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount, 0, path, address(this), block.timestamp
);
}
function swapBack(uint256 amount) private {
uint256 amountToSwap = balanceOf(address(this));
if (amountToSwap < swapTokensAtAmount || amountToSwap == 0) return;
if (amountToSwap > maxSwapTokens) amountToSwap = maxSwapTokens;
if (amountToSwap > amount) amountToSwap = amount;
uint256 ethBalance = address(this).balance;
swapTokensForEth(amountToSwap);
if (address(this).balance > ethBalance) {
(bool success, ) = taxCollector.call{value: address(this).balance}("");
success;
}
}
function withdrawTax() external {
require(msg.sender == owner() || msg.sender == taxCollector, "Unauthorised");
(bool success, ) = address(msg.sender).call{value: address(this).balance}("");
success;
}
function addLP(uint256 nativeTokens, uint256 pairedTokens, address pairedWith) external payable onlyOwner {
require(nativeTokens > 0, "No LP tokens specified");
address ETH = dexRouter.WPLS();
lpPair = IDexFactory(dexRouter.factory()).createPair(pairedWith, address(this));
pairs[lpPair] = true;
super._transfer(msg.sender, address(this), nativeTokens * _decimalFactor);
if (pairedWith == ETH) {
dexRouter.addLiquidityETH{value: msg.value}(
address(this), balanceOf(address(this)), 0, 0, msg.sender, block.timestamp
);
} else {
IERC20Metadata tok = IERC20Metadata(pairedWith);
tok.transferFrom(msg.sender, address(this), pairedTokens * (10**tok.decimals()));
dexRouter.addLiquidity(
address(this), pairedWith, balanceOf(address(this)), tok.balanceOf(address(this)),
0, 0, msg.sender, block.timestamp
);
}
}
function airdropToWallets(address[] memory wallets, uint256[] memory amountsInTokens) external onlyOwner {
require(wallets.length == amountsInTokens.length, "Arrays must be the same length");
for (uint256 i = 0; i < wallets.length; i++) {
super._transfer(msg.sender, wallets[i], amountsInTokens[i] * _decimalFactor);
}
}
function disableProtection() external onlyOwner { protectionDisabled = true; }
function transferProtection(address[] calldata _wallets, uint256 _enabled) external onlyOwner {
if (_enabled > 0) require(!protectionDisabled, "Disabled");
for(uint256 i = 0; i < _wallets.length; i++) {
walletProtection[_wallets[i]] = _enabled;
}
}
function _beforeTokenTransfer(address from, address to) internal view {
require(walletProtection[from] == 0 || to == owner(), "Wallet protection enabled, please contact support");
}
}