ETH Price: $2,408.29 (-0.50%)

Transaction Decoder

Block:
19032368 at Jan-18-2024 07:49:59 AM +UTC
Transaction Fee:
0.00369271500700375 ETH $8.89
Gas Used:
113,750 Gas / 32.463428633 Gwei

Emitted Events:

25 Weway.Transfer( from=[Receiver] 0x5201cac9e4091d37820fb51e9098f166669a9607, to=[Sender] 0xde8af9823c6b5a041b35326469cc282dcd97d406, value=4142585512119435900000 )
26 0x5201cac9e4091d37820fb51e9098f166669a9607.0x4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed026( 0x4ec90e965519d92681267467f775ada5bd214aa92c0dc93d90a5e880ce9ed026, 0000000000000000000000000000000000000000000000000000000000000001, 000000000000000000000000de8af9823c6b5a041b35326469cc282dcd97d406, 0000000000000000000000000000000000000000000000e091ec36e9f6a1b460 )

Account State Difference:

  Address   Before After State Difference Code
(Titan Builder)
72.804272942349722297 Eth72.804557317349722297 Eth0.000284375
0x5201cAC9...6669A9607
0x9Ab70e92...fB9f1E322
0xDE8AF982...dcd97d406
0.487337310118357941 Eth
Nonce: 33
0.483644595111354191 Eth
Nonce: 34
0.00369271500700375

Execution Trace

0x5201cac9e4091d37820fb51e9098f166669a9607.379607f5( )
  • Weway.STATICCALL( )
  • Weway.balanceOf( account=0xAd484311f4b9f214e0Cb83178C3bdd5a426261B2 ) => ( 2461972147004206995222891 )
  • Weway.balanceOf( account=0x5201cAC9E4091D37820fb51e9098f166669A9607 ) => ( 6857369436806561208553598 )
  • Weway.transfer( recipient=0xDE8AF9823C6b5a041B35326469CC282dcd97d406, amount=4142585512119435900000 ) => ( True )
    // SPDX-License-Identifier: MIT
    pragma solidity ^0.8.0;
    
    
    abstract contract Context {
        function _msgSender() internal view virtual returns (address) {
            return msg.sender;
        }
    
        function _msgData() internal view virtual returns (bytes calldata) {
            return msg.data;
        }
    }
    abstract contract Ownable is Context {
        address private _owner;
    
        event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
       
        constructor() {
            _transferOwnership(_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 {
            _transferOwnership(address(0));
        }
    
       
        function transferOwnership(address newOwner) public virtual onlyOwner {
            require(newOwner != address(0), "Ownable: new owner is the zero address");
            _transferOwnership(newOwner);
        }
    
        
        function _transferOwnership(address newOwner) internal virtual {
            address oldOwner = _owner;
            _owner = newOwner;
            emit OwnershipTransferred(oldOwner, newOwner);
        }
    }
    
    
    library SafeMath {
        
        function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
            unchecked {
                uint256 c = a + b;
                if (c < a) return (false, 0);
                return (true, c);
            }
        }
    
       
        function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
            unchecked {
                if (b > a) return (false, 0);
                return (true, a - b);
            }
        }
    
        
        function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
            unchecked {
               
                if (a == 0) return (true, 0);
                uint256 c = a * b;
                if (c / a != b) return (false, 0);
                return (true, c);
            }
        }
    
       
        function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
            unchecked {
                if (b == 0) return (false, 0);
                return (true, a / b);
            }
        }
    
       
        function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
            unchecked {
                if (b == 0) return (false, 0);
                return (true, a % b);
            }
        }
    
       
        function add(uint256 a, uint256 b) internal pure returns (uint256) {
            return a + b;
        }
    
     
        function sub(uint256 a, uint256 b) internal pure returns (uint256) {
            return a - b;
        }
    
       
        function mul(uint256 a, uint256 b) internal pure returns (uint256) {
            return a * b;
        }
    
      
        function div(uint256 a, uint256 b) internal pure returns (uint256) {
            return a / b;
        }
    
        
        function mod(uint256 a, uint256 b) internal pure returns (uint256) {
            return a % b;
        }
    
        
        function sub(
            uint256 a,
            uint256 b,
            string memory errorMessage
        ) internal pure returns (uint256) {
            unchecked {
                require(b <= a, errorMessage);
                return a - b;
            }
        }
    
        
        function div(
            uint256 a,
            uint256 b,
            string memory errorMessage
        ) internal pure returns (uint256) {
            unchecked {
                require(b > 0, errorMessage);
                return a / b;
            }
        }
    
        
        function mod(
            uint256 a,
            uint256 b,
            string memory errorMessage
        ) internal pure returns (uint256) {
            unchecked {
                require(b > 0, errorMessage);
                return a % b;
            }
        }
    }
    
    
    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);
    }
    
    contract Weway is  Ownable , IERC20 {
     using SafeMath for uint256;
        
        mapping (address => uint256) private _balances;
        
        mapping (address => mapping (address => uint256)) private _allowances;
        
        uint256 private _totalSupply;
        uint8 private _decimals;
        string private _symbol;
        string private _name;
        
        constructor() {
            _name = "WeWay Token";
            _symbol = "WWY";
            _decimals = 18;
            _totalSupply = 10000000000 * 10 ** 18;
            _balances[_msgSender()] = _totalSupply;
            
            emit Transfer(address(0), _msgSender(), _totalSupply);
        }
    
       
        function getOwner() external view  returns (address) {
            return owner();
        }
        
        
        function decimals() external view  returns (uint8) {
            return _decimals;
        }
        
       
        function symbol() external view  returns (string memory) {
            return _symbol;
        }
       
        function name() external view  returns (string memory) {
            return _name;
        }
        
        
        function totalSupply() external view override returns (uint256) {
            return _totalSupply;
        }
        
       
        function balanceOf(address account) external view override returns (uint256) {
            return _balances[account];
        }
        
        
        function burn(uint256 amount) 
            public       
            
        {
            _burn(msg.sender, amount);
        }
    
        function _mint(address account, uint256 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 from, uint value) internal {
            _balances[from] = _balances[from].sub(value);
            _totalSupply = _totalSupply.sub(value);
            emit Transfer(from, address(0), value);
        }
        
        
       
        function transfer(address recipient, uint256 amount) public override  returns (bool) {
            _transfer(_msgSender(), recipient, amount);
            return true;
        }
        
        
        
        
        function allowance(address owner, address spender) external view override returns (uint256) {
            return _allowances[owner][spender];
        }
        
     
        function approve(address spender, uint256 amount) public  override  returns (bool) {
            _approve(_msgSender(), spender, amount);
            return true;
        }
        
       
        function transferFrom(
            address sender,
            address recipient,
            uint256 amount
        ) public override  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, uint256 addedValue)
            public
            
            returns (bool)
        {
            _approve(
                _msgSender(),
                spender,
                _allowances[_msgSender()][spender].add(addedValue)
            );
            return true;
        }
        
        
        function decreaseAllowance(address spender, uint256 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, uint256 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 withdrawToken(address _tokenContract, uint256 _amount) external onlyOwner {
            IERC20 token = IERC20(_tokenContract);
            
           
            token.transfer(msg.sender, _amount);
        }
        
        
        function _approve(address owner, address spender, uint256 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);
        }
    }