Transaction Hash:
Block:
21623932 at Jan-14-2025 04:29:59 PM +UTC
Transaction Fee:
0.000431259449752626 ETH
$1.08
Gas Used:
46,222 Gas / 9.330177183 Gwei
Emitted Events:
382 |
GDT.Approval( owner=[Sender] 0x5f939de0e81a199a34e50615f34cbab82412459a, spender=0x7a250d56...659F2488D, value=48451763600000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x4838B106...B0BAD5f97
Miner
| (Titan Builder) | 13.79214258685153262 Eth | 13.79214720905153262 Eth | 0.0000046222 | |
0x5F939de0...82412459a |
8.05404084514581834 Eth
Nonce: 68
|
8.053609585696065714 Eth
Nonce: 69
| 0.000431259449752626 | ||
0xc67B1204...6C63cFFc5 |
Execution Trace
GDT.approve( spender=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, value=48451763600000000 ) => ( success=True )
approve[GDT (ln:39)]
Approval[GDT (ln:45)]
// SPDX-License-Identifier: MIT pragma solidity 0.8.4; contract GDT { mapping (address => uint256) public balanceOf; mapping(address => mapping(address => uint256)) public allowance; string public constant name = "GDT"; string public constant symbol = "GDT"; uint8 public constant decimals = 8; address private immutable initial_address; uint256 public totalSupply = 400_000_000 * (uint256(10) ** decimals); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); modifier validAddress(address addr) { require(addr != address(0), "Address cannot be 0x0"); require(addr != address(this), "Address cannot be contract address"); _; } constructor(address manager) validAddress(manager) { initial_address = manager; balanceOf[manager] = totalSupply; emit Transfer(address(0), manager, totalSupply); } function transfer(address to, uint256 value) external validAddress(to) returns (bool success) { uint256 senderBalance = balanceOf[msg.sender]; require(senderBalance >= value, "ERC20: insufficient balance for transfer"); balanceOf[msg.sender] = senderBalance - value; // deduct from sender's balance balanceOf[to] += value; // add to recipient's balance emit Transfer(msg.sender, to, value); return true; } function approve(address spender, uint256 value) public validAddress(spender) returns (bool success) { allowance[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } function transferFrom(address from, address to, uint256 value) external validAddress(to) returns (bool success) { uint256 balanceFrom = balanceOf[from]; uint256 allowanceSender = allowance[from][msg.sender]; require(value <= balanceFrom, "ERC20: insufficient balance for transferFrom"); require(value <= allowanceSender, "ERC20: unauthorized transferFrom"); balanceOf[from] = balanceFrom - value; balanceOf[to] += value; allowance[from][msg.sender] = allowanceSender - value; emit Transfer(from, to, value); return true; } function burn(uint256 amount) external returns (bool success) { require(msg.sender==initial_address,'ERC20: burn not authorized.'); uint256 accountBalance = balanceOf[msg.sender]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); balanceOf[msg.sender] = accountBalance - amount; totalSupply -= amount; emit Transfer(msg.sender, address(0), amount); return true; } function increaseAllowance(address spender, uint256 addedValue) external validAddress(spender) returns (bool) { approve(spender, allowance[msg.sender][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external validAddress(spender) returns (bool) { uint256 currentAllowance = allowance[msg.sender][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); approve(spender, currentAllowance - subtractedValue); return true; } }