Transaction Hash:
Block:
20308039 at Jul-14-2024 11:30:35 PM +UTC
Transaction Fee:
0.00019861720958597 ETH
$0.51
Gas Used:
47,117 Gas / 4.21540441 Gwei
Emitted Events:
84 |
ColonizeMars.Approval( owner=[Sender] 0xb3ab734d66bb9faa40f16086853757c66bcae2c9, spender=0x00000000...43aC78BA3, value=115792089237316195423570985008687907853269984665640564039457584007913129639935 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x4838B106...B0BAD5f97
Miner
| (Titan Builder) | 25.432687730164936085 Eth | 25.432791831806722479 Eth | 0.000104101641786394 | |
0xB3Ab734d...66bcAE2C9 |
0.011892922743555839 Eth
Nonce: 113
|
0.011694305533969869 Eth
Nonce: 114
| 0.00019861720958597 | ||
0xE8B1e79D...714058a18 |
Execution Trace
ColonizeMars.approve( spender=0x000000000022D473030F116dDEE9F6B43aC78BA3, amount=115792089237316195423570985008687907853269984665640564039457584007913129639935 ) => ( True )
approve[ColonizeMars (ln:155)]
_approve[ColonizeMars (ln:156)]
Approval[ColonizeMars (ln:165)]
/** *Submitted for verification at Etherscan.io on 2023-12-21 */ /** $GTM - #ColonizeMars Website: https://colonizemars.space/ Twitter: https://twitter.com/ColonizeMars_ Telegram: https://t.me/GatewayToMars_Portal ELK **/ // SPDX-License-Identifier: MIT pragma solidity 0.8.21; pragma experimental ABIEncoderV2; abstract contract Ownable { address private _owner; constructor() { _owner = msg.sender; } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _owner = address(0); } } library SafeERC20 { function safeTransfer(address token, address to, uint256 value) internal { (bool success, bytes memory data) = token.call(abi.encodeWithSelector(IERC20.transfer.selector, to, value)); require(success && (data.length == 0 || abi.decode(data, (bool))), 'TransferHelper: INTERNAL TRANSFER_FAILED'); } } interface IERC20 { function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external; } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IUniswapV2Router02 { 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; function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); } contract ColonizeMars is Ownable { string private constant _name = unicode"ColonizeMars"; string private constant _symbol = unicode"GTM"; uint256 private _totalSupply = 100_000_000 * 1e18; uint256 public maxTransactionAmount = 2_000_000 * 1e18; uint256 public maxWallet = 2_000_000 * 1e18; uint256 public swapTokensAtAmount = (_totalSupply * 2) / 10000; address private liqWallet = 0xfd09621Ec472B56e7a1f13014954A511237A92D7; address private moonWallet = 0xB62a8184c2b35757df3082011C9AE5E52773A309; address private technologyWallet = 0x86f7e2C90773C38145ef58Af5fefD254F5597e77; address private constant WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; uint8 public buyTotalFees = 50; uint16 public sellTotalFees = 300; uint8 public liqFee = 20; uint8 public moonFee = 40; uint8 public technologyFee = 40; bool private swapping; bool public limitsInEffect = true; bool private launched; mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) private _isExcludedMaxTransactionAmount; mapping(address => bool) private automatedMarketMakerPairs; event SwapAndLiquify(uint256 tokensSwapped, uint256 teamETH, uint256 liqETH, uint256 TreasuryETH); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); IUniswapV2Router02 public constant uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); address public immutable uniswapV2Pair; constructor() { uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), WETH); automatedMarketMakerPairs[uniswapV2Pair] = true; setExcludedFromFees(owner(), true); setExcludedFromFees(address(this), true); setExcludedFromFees(address(0xdead), true); setExcludedFromFees(moonWallet, true); setExcludedFromFees(liqWallet, true); setExcludedFromFees(technologyWallet, true); setExcludedFromMaxTransaction(owner(), true); setExcludedFromMaxTransaction(address(uniswapV2Router), true); setExcludedFromMaxTransaction(address(this), true); setExcludedFromMaxTransaction(address(0xdead), true); setExcludedFromMaxTransaction(address(uniswapV2Pair), true); setExcludedFromMaxTransaction(moonWallet, true); setExcludedFromMaxTransaction(liqWallet, true); setExcludedFromMaxTransaction(technologyWallet, true); _balances[msg.sender] = 100_000_000 * 1e18; emit Transfer(address(0), msg.sender, _balances[msg.sender]); _approve(address(this), address(uniswapV2Router), type(uint256).max); } receive() external payable {} function name() public pure returns (string memory) { return _name; } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return 18; } function totalSupply() public view returns (uint256) { return _totalSupply; } function balanceOf(address account) public view returns (uint256) { return _balances[account]; } function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external returns (bool) { _approve(msg.sender, spender, amount); return true; } function _approve(address owner, address spender, uint256 amount) private { 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 transfer(address recipient, uint256 amount) external returns (bool) { _transfer(msg.sender, recipient, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) { uint256 currentAllowance = _allowances[sender][msg.sender]; if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, msg.sender, currentAllowance - amount); } } _transfer(sender, recipient, amount); return true; } function _transfer(address from, address to, uint256 amount) private { 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"); if (!launched && (from != owner() && from != address(this) && to != owner())) { revert("Trading not enabled"); } if (limitsInEffect) { if (from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping) { if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTx"); require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount,"Sell transfer amount exceeds the maxTx"); } else if (!_isExcludedMaxTransactionAmount[to]) { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount; if (canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to]) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 senderBalance = _balances[from]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); uint256 fees = 0; if (takeFee) { if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = (amount * sellTotalFees) / 1000; } else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = (amount * buyTotalFees) / 1000; } if (fees > 0) { unchecked { amount = amount - fees; _balances[from] -= fees; _balances[address(this)] += fees; } emit Transfer(from, address(this), fees); } } unchecked { _balances[from] -= amount; _balances[to] += amount; } emit Transfer(from, to, amount); } function burn(uint256 value) external { _burn(msg.sender, value); } 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 removeLimits() external onlyOwner { limitsInEffect = false; } function setDistributionFees(uint8 _liqFee, uint8 _moonFee, uint8 _technologyFee) external onlyOwner { liqFee = _liqFee; moonFee = _moonFee; technologyFee = _technologyFee; require((liqFee + moonFee + technologyFee) == 100, "Distribution have to be equal to 100%"); } function setFees(uint8 _buyTotalFees, uint16 _sellTotalFees) external onlyOwner { require(_buyTotalFees <= 200, "Buy fees must be less than or equal to 20%"); require(_sellTotalFees <= 500, "Sell fees must be less than or equal to 50%"); buyTotalFees = _buyTotalFees; sellTotalFees = _sellTotalFees; } function setExcludedFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; } function setExcludedFromMaxTransaction(address account, bool excluded) public onlyOwner { _isExcludedMaxTransactionAmount[account] = excluded; } function airdropWallets(address[] memory addresses, uint256[] memory amounts) external onlyOwner { require(!launched, "Already launched"); for (uint256 i = 0; i < addresses.length; i++) { require(_balances[msg.sender] >= amounts[i], "ERC20: transfer amount exceeds balance"); _balances[addresses[i]] += amounts[i]; _balances[msg.sender] -= amounts[i]; emit Transfer(msg.sender, addresses[i], amounts[i]); } } function openTrade(bool status) external onlyOwner { launched = status; } function beginTrading() external payable onlyOwner { require(!launched, "Already launched"); uniswapV2Router.addLiquidityETH{value: msg.value}( address(this), _balances[address(this)], 0, 0, msg.sender, block.timestamp ); } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed"); automatedMarketMakerPairs[pair] = value; } function setSwapAtAmount(uint256 newSwapAmount) external onlyOwner { require(newSwapAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% of the supply"); require(newSwapAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% of the supply"); swapTokensAtAmount = newSwapAmount; } function setMaxTxnAmount(uint256 newMaxTx) external onlyOwner { require(newMaxTx >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max transaction lower than 0.1%"); maxTransactionAmount = newMaxTx * (10**18); } function setMaxWalletAmount(uint256 newMaxWallet) external onlyOwner { require(newMaxWallet >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set max wallet lower than 0.1%"); maxWallet = newMaxWallet * (10**18); } function updateLiqWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); liqWallet = newAddress; } function updateMoonWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); moonWallet = newAddress; } function updateTechnologyWallet(address newAddress) external onlyOwner { require(newAddress != address(0), "Address cannot be zero"); technologyWallet = newAddress; } function excludedFromFee(address account) public view returns (bool) { return _isExcludedFromFees[account]; } function withdrawStuckToken(address token, address to) external onlyOwner { uint256 _contractBalance = IERC20(token).balanceOf(address(this)); SafeERC20.safeTransfer(token, to, _contractBalance); // Use safeTransfer } function withdrawStuckETH(address addr) external onlyOwner { require(addr != address(0), "Invalid address"); (bool success, ) = addr.call{value: address(this).balance}(""); require(success, "Withdrawal failed"); } function swapBack() private { uint256 swapThreshold = swapTokensAtAmount; bool success; if (balanceOf(address(this)) > swapTokensAtAmount * 20) { swapThreshold = swapTokensAtAmount * 20; } address[] memory path = new address[](2); path[0] = address(this); path[1] = WETH; uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(swapThreshold, 0, path, address(this), block.timestamp); uint256 ethBalance = address(this).balance; if (ethBalance > 0) { uint256 ethForLiq = (ethBalance * liqFee) / 100; uint256 ethForTechnology = (ethBalance * technologyFee) / 100; uint256 ethForMoonFund = ethBalance - ethForLiq - ethForTechnology; (success, ) = address(technologyWallet).call{value: ethForTechnology}(""); (success, ) = address(moonWallet).call{value: ethForMoonFund}(""); (success, ) = address(liqWallet).call{value: ethForLiq}(""); emit SwapAndLiquify(swapThreshold, ethForTechnology, ethForLiq, ethForMoonFund); } } }