Transaction Hash:
Block:
18364062 at Oct-16-2023 04:14:23 PM +UTC
Transaction Fee:
0.001512367813821376 ETH
$2.88
Gas Used:
51,776 Gas / 29.209823351 Gwei
Emitted Events:
160 |
DODOToken.Transfer( from=[Sender] 0xf16e9b0d03470827a95cdfd0cb8a8a3b46969b91, to=0xE749E25778Ad8d90e4137031f8B57b55a7dafA34, amount=2504896007350000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x388C818C...7ccB19297
Miner
| (Lido: Execution Layer Rewards Vault) | 78.851244600717321688 Eth | 78.851544694722476184 Eth | 0.000300094005154496 | |
0x43Dfc415...8ad7d4DDd | |||||
0xf16E9B0D...b46969B91 | (KuCoin 9) |
80.78696994715895348 Eth
Nonce: 2094612
|
80.785457579345132104 Eth
Nonce: 2094613
| 0.001512367813821376 |
Execution Trace
DODOToken.transfer( to=0xE749E25778Ad8d90e4137031f8B57b55a7dafA34, amount=2504896007350000000000 ) => ( True )
transfer[DODOToken (ln:108)]
/* Copyright 2020 DODO ZOO. SPDX-License-Identifier: Apache-2.0 */ pragma solidity 0.6.9; pragma experimental ABIEncoderV2; /** * @title SafeMath * @author DODO Breeder * * @notice Math operations with safety checks that revert on error */ library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "MUL_ERROR"); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { require(b > 0, "DIVIDING_ERROR"); return a / b; } function divCeil(uint256 a, uint256 b) internal pure returns (uint256) { uint256 quotient = div(a, b); uint256 remainder = a - quotient * b; if (remainder > 0) { return quotient + 1; } else { return quotient; } } function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SUB_ERROR"); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "ADD_ERROR"); return c; } function sqrt(uint256 x) internal pure returns (uint256 y) { uint256 z = x / 2 + 1; y = x; while (z < y) { y = z; z = (x / z + z) / 2; } } } // File: contracts/token/DODOToken.sol /* Copyright 2020 DODO ZOO. */ /** * @title DODO Token * @author DODO Breeder */ contract DODOToken { using SafeMath for uint256; string public symbol = "DODO"; string public name = "DODO bird"; uint256 public decimals = 18; uint256 public totalSupply = 1000000000 * 10**18; // 1 Billion mapping(address => uint256) internal balances; mapping(address => mapping(address => uint256)) internal allowed; // ============ Events ============ event Transfer(address indexed from, address indexed to, uint256 amount); event Approval(address indexed owner, address indexed spender, uint256 amount); // ============ Functions ============ constructor() public { balances[msg.sender] = totalSupply; } /** * @dev transfer token for a specified address * @param to The address to transfer to. * @param amount The amount to be transferred. */ function transfer(address to, uint256 amount) public returns (bool) { require(amount <= balances[msg.sender], "BALANCE_NOT_ENOUGH"); balances[msg.sender] = balances[msg.sender].sub(amount); balances[to] = balances[to].add(amount); emit Transfer(msg.sender, to, amount); return true; } /** * @dev Gets the balance of the specified address. * @param owner The address to query the the balance of. * @return balance An uint256 representing the amount owned by the passed address. */ function balanceOf(address owner) external view returns (uint256 balance) { return balances[owner]; } /** * @dev Transfer tokens from one address to another * @param from address The address which you want to send tokens from * @param to address The address which you want to transfer to * @param amount uint256 the amount of tokens to be transferred */ function transferFrom( address from, address to, uint256 amount ) public returns (bool) { require(amount <= balances[from], "BALANCE_NOT_ENOUGH"); require(amount <= allowed[from][msg.sender], "ALLOWANCE_NOT_ENOUGH"); balances[from] = balances[from].sub(amount); balances[to] = balances[to].add(amount); allowed[from][msg.sender] = allowed[from][msg.sender].sub(amount); emit Transfer(from, to, amount); return true; } /** * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. * @param spender The address which will spend the funds. * @param amount The amount of tokens to be spent. */ function approve(address spender, uint256 amount) public returns (bool) { allowed[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } /** * @dev Function to check the amount of tokens that an owner allowed to a spender. * @param owner address The address which owns the funds. * @param spender address The address which will spend the funds. * @return A uint256 specifying the amount of tokens still available for the spender. */ function allowance(address owner, address spender) public view returns (uint256) { return allowed[owner][spender]; } }