ETH Price: $1,780.47 (-3.38%)

Transaction Decoder

Block:
11813519 at Feb-08-2021 03:58:50 AM +UTC
Transaction Fee:
0.03652712063 ETH $65.04
Gas Used:
331,733 Gas / 110.11 Gwei

Emitted Events:

67 0xd5e1228b82f2f220dc9f62839a58bb194dcd9bb6.0xa669ca4d5560500681411ddbfecdaac0da46d204086e29efa04f2ae45931608e( 0xa669ca4d5560500681411ddbfecdaac0da46d204086e29efa04f2ae45931608e, 0x00000000000000000000000045d885d10721b2ffb1bb1611b3bb0b2211acc790, 0x000000000000000000000000c9d3f4c3993582be637709cb803b982493dcf2e9, 0x000000000000000000000000c9d3f4c3993582be637709cb803b982493dcf2e9, 0000000000000000000000000000000000000000000000000000000000000427, 0000000000000000000000000000000000000000000000000000000000000425, 0000000000000000000000000000000000000000000000000000000000000425, 0000000000000000000000000000000000000000000000000000000000000001 )
68 ETB.Transfer( from=[Receiver] 0xd5e1228b82f2f220dc9f62839a58bb194dcd9bb6, to=0xC9D3F4c3993582be637709Cb803B982493dcf2e9, value=150000000000000000000 )
69 0xd5e1228b82f2f220dc9f62839a58bb194dcd9bb6.0x37c1df0d9e90df83ca1f79acbc684e13ccf85c26f089d85b062f586d85a2ee1b( 0x37c1df0d9e90df83ca1f79acbc684e13ccf85c26f089d85b062f586d85a2ee1b, 0x00000000000000000000000045d885d10721b2ffb1bb1611b3bb0b2211acc790, 0x000000000000000000000000c9d3f4c3993582be637709cb803b982493dcf2e9, 0000000000000000000000000000000000000000000000000000000000000001, 0000000000000000000000000000000000000000000000000000000000000427, 0000000000000000000000000000000000000000000000000000000000000425, 00000000000000000000000000000000000000000000000821ab0d4414980000, 00000000000000000000000000000000000000000000000005d423c655aa0000, 00000000000000000000000000000000000000000000000006f05b59d3b20000 )

Account State Difference:

  Address   Before After State Difference Code
0x14368E24...99d8a3270 0.070419793958027 Eth0.138419793958027 Eth0.068
0x2fEF416E...828ee4DDC 0.858081201477087051 Eth0.870081201477087051 Eth0.012
0x45D885D1...211ACC790
0.954291169369361 Eth
Nonce: 0
0.417764048739361 Eth
Nonce: 1
0.53652712063
(F2Pool Old)
4,151.357901247206622539 Eth4,151.394428367836622539 Eth0.03652712063
0xC9D3F4c3...493dcf2e9 0.004837276269361 Eth0.424837276269361 Eth0.42
0xd5e1228b...94dcd9Bb6
0xfbFa2221...408147bd8

Execution Trace

ETH 0.5 0xd5e1228b82f2f220dc9f62839a58bb194dcd9bb6.e6e7674e( )
  • ETH 0.068 0x14368e24c207159967a5a1811cc1e4099d8a3270.CALL( )
  • ETH 0.012 0x2fef416e5d4f091c7bf20d3743da563828ee4ddc.CALL( )
  • ETH 0.42 0xc9d3f4c3993582be637709cb803b982493dcf2e9.CALL( )
  • ETB.transfer( recipient=0xC9D3F4c3993582be637709Cb803B982493dcf2e9, amount=150000000000000000000 ) => ( True )
    pragma solidity ^0.5.4;
    
    interface IERC20 {
        function totalSupply() external view returns (uint);
        function balanceOf(address account) external view returns (uint);
        function transfer(address recipient, uint amount) external returns (bool);
        function allowance(address owner, address spender) external view returns (uint);
        function approve(address spender, uint amount) external returns (bool);
        function transferFrom(address sender, address recipient, uint amount) external returns (bool);
        event Transfer(address indexed from, address indexed to, uint value);
        event Approval(address indexed owner, address indexed spender, uint value);
    }
    
    
    contract Context {
        constructor () internal { }
    
        function _msgSender() internal view returns (address payable) {
            return msg.sender;
        }
    }
    
    
    contract ERC20 is Context, IERC20 {
        using SafeMath for uint;
    
        mapping (address => uint) private _balances;
    
        mapping (address => mapping (address => uint)) private _allowances;
    
        uint private _totalSupply;
        function totalSupply() public view returns (uint) {
            return _totalSupply;
        }
        function balanceOf(address account) public view returns (uint) {
            return _balances[account];
        }
        function transfer(address recipient, uint amount) public returns (bool) {
            _transfer(_msgSender(), recipient, amount);
            return true;
        }
        function allowance(address owner, address spender) public view returns (uint) {
            return _allowances[owner][spender];
        }
        function approve(address spender, uint amount) public returns (bool) {
            _approve(_msgSender(), spender, amount);
            return true;
        }
        function transferFrom(address sender, address recipient, uint amount) public returns (bool) {
            _transfer(sender, recipient, amount);
            _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
            return true;
        }
        function increaseAllowance(address spender, uint addedValue) public returns (bool) {
            _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
            return true;
        }
        function decreaseAllowance(address spender, uint subtractedValue) public returns (bool) {
            _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
            return true;
        }
        function _transfer(address sender, address recipient, uint amount) internal {
            require(sender != address(0), "ERC20: transfer from the zero address");
            require(recipient != address(0), "ERC20: transfer to the zero address");
    
            _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
            _balances[recipient] = _balances[recipient].add(amount);
            emit Transfer(sender, recipient, amount);
        }
        function _mint(address account, uint amount) internal {
            require(account != address(0), "ERC20: mint to the zero address");
    
            _totalSupply = _totalSupply.add(amount);
            _balances[account] = _balances[account].add(amount);
            emit Transfer(address(0), account, amount);
        }
        function _burn(address account, uint amount) internal {
            require(account != address(0), "ERC20: burn from the zero address");
    
            _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
            _totalSupply = _totalSupply.sub(amount);
            emit Transfer(account, address(0), amount);
        }
        function _approve(address owner, address spender, uint amount) internal {
            require(owner != address(0), "ERC20: approve from the zero address");
            require(spender != address(0), "ERC20: approve to the zero address");
    
            _allowances[owner][spender] = amount;
            emit Approval(owner, spender, amount);
        }
    }
    
    
    contract ERC20Detailed is IERC20 {
        string private _name;
        string private _symbol;
        uint8 private _decimals;
    
        constructor (string memory name, string memory symbol, uint8 decimals) public {
            _name = name;
            _symbol = symbol;
            _decimals = decimals;
        }
        
        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;
        }
    }
    
    
    library SafeMath {
        function add(uint a, uint b) internal pure returns (uint) {
            uint c = a + b;
            require(c >= a, "SafeMath: addition overflow");
    
            return c;
        }
    
        function sub(uint a, uint b) internal pure returns (uint) {
            return sub(a, b, "SafeMath: subtraction overflow");
        }
    
        function sub(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
            require(b <= a, errorMessage);
            uint c = a - b;
    
            return c;
        }
    
        function mul(uint a, uint b) internal pure returns (uint) {
            if (a == 0) {
                return 0;
            }
    
            uint c = a * b;
            require(c / a == b, "SafeMath: multiplication overflow");
    
            return c;
        }
    
        function div(uint a, uint b) internal pure returns (uint) {
            return div(a, b, "SafeMath: division by zero");
        }
    
        function div(uint a, uint b, string memory errorMessage) internal pure returns (uint) {
            require(b > 0, errorMessage);
            uint c = a / b;
    
            return c;
        }
    }
    
    
    library Address {
        function isContract(address account) internal view returns (bool) {
            bytes32 codehash;
            bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
            assembly { codehash := extcodehash(account) }
            return (codehash != 0x0 && codehash != accountHash);
        }
    }
    
    
    library SafeERC20 {
        using SafeMath for uint;
        using Address for address;
    
        function safeTransfer(IERC20 token, address to, uint value) internal {
            callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
        }
    
        function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
            callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
        }
    
        function safeApprove(IERC20 token, address spender, uint value) internal {
            require((value == 0) || (token.allowance(address(this), spender) == 0),
                "SafeERC20: approve from non-zero to non-zero allowance"
            );
            callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
        }
    
        function callOptionalReturn(IERC20 token, bytes memory data) private {
            require(address(token).isContract(), "SafeERC20: call to non-contract");
    
            (bool success, bytes memory returndata) = address(token).call(data);
            require(success, "SafeERC20: low-level call failed");
    
            if (returndata.length > 0) {
                require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
            }
        }
    }
    
    
    contract ETB is ERC20, ERC20Detailed {
        using SafeERC20 for IERC20;
        using Address for address;
        using SafeMath for uint;
    
        address public governance;
        mapping (address => bool) public minters;
    
        constructor () public ERC20Detailed("ETHETB", "ETB", 18) {
            governance = msg.sender;
        }
    
        function mint(address account, uint amount) public {
            require(minters[msg.sender], "!minter");
            _mint(account, amount);
        }
    
        function setGovernance(address _governance) public {
            require(msg.sender == governance, "!governance");
            governance = _governance;
        }
    
        function addMinter(address _minter) public {
            require(msg.sender == governance, "!governance");
            minters[_minter] = true;
        }
    
        function removeMinter(address _minter) public {
            require(msg.sender == governance, "!governance");
            minters[_minter] = false;
        }
    }