Transaction Hash:
Block:
14537717 at Apr-07-2022 08:35:55 AM +UTC
Transaction Fee:
0.001945326808466376 ETH
$4.44
Gas Used:
46,433 Gas / 41.895350472 Gwei
Emitted Events:
19 |
HERMIA.Approval( owner=[Sender] 0x479bd8d842d013eec9cc14ee42c8aae0223d5fdf, spender=0x3Fd39947...863A9Fe4d, value=49999999999999990000000000000000 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x009D0eF9...5b23aA2ec | |||||
0x1aD91ee0...dA6B45836
Miner
| (Hiveon Pool) | 9,592.960797200420655058 Eth | 9,592.960913282920655058 Eth | 0.0001160825 | |
0x479BD8D8...0223D5fdF |
0.023331843019709025 Eth
Nonce: 0
|
0.021386516211242649 Eth
Nonce: 1
| 0.001945326808466376 |
Execution Trace
HERMIA.approve( spender=0x3Fd3994726183A8a3F1974fFcE1C98e863A9Fe4d, amount=49999999999999990000000000000000 ) => ( True )
approve[HERMIA (ln:321)]
_approve[HERMIA (ln:323)]
Approval[HERMIA (ln:491)]
_msgSender[HERMIA (ln:323)]
// File: /Context.sol 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; } } // File: /Ownable.sol pragma solidity ^0.8.0; abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) external virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: /Pausable.sol pragma solidity ^0.8.0; abstract contract Pausable is Ownable { event Paused(address account); event Unpaused(address account); bool private _paused; constructor() { _paused = false; } function paused() public view virtual returns (bool) { return _paused; } function pause() external virtual onlyOwner { _pause(); } function unpause() external virtual onlyOwner { _unpause(); } modifier whenNotPaused() { require(!paused(), "Pausable: paused"); _; } modifier whenPaused() { require(paused(), "Pausable: not paused"); _; } function _pause() internal virtual whenNotPaused { _paused = true; emit Paused(_msgSender()); } function _unpause() internal virtual whenPaused { _paused = false; emit Unpaused(_msgSender()); } } // File: HERMIA.sol /** ███╗░░░███╗███████╗████████╗░█████╗░██╗░░██╗███████╗██████╗░███╗░░░███╗██╗░█████╗░ ████╗░████║██╔════╝╚══██╔══╝██╔══██╗██║░░██║██╔════╝██╔══██╗████╗░████║██║██╔══██╗ ██╔████╔██║█████╗░░░░░██║░░░███████║███████║█████╗░░██████╔╝██╔████╔██║██║███████║ ██║╚██╔╝██║██╔══╝░░░░░██║░░░██╔══██║██╔══██║██╔══╝░░██╔══██╗██║╚██╔╝██║██║██╔══██║ ██║░╚═╝░██║███████╗░░░██║░░░██║░░██║██║░░██║███████╗██║░░██║██║░╚═╝░██║██║██║░░██║ ╚═╝░░░░░╚═╝╚══════╝░░░╚═╝░░░╚═╝░░╚═╝╚═╝░░╚═╝╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝╚═╝╚═╝░░╚═╝ **/ pragma solidity ^0.8.0; contract HERMIA is Pausable { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply = 50 * (10 ** 9) * (10 ** 18); // 50 Billion event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); constructor() { _balances[_msgSender()] = _totalSupply; } function name() public view virtual returns (string memory) { return "Metahermia Token"; } function symbol() public view virtual returns (string memory) { return "HERMIA"; } function decimals() public view virtual returns (uint8) { return 18; } function totalSupply() public view virtual returns (uint256) { return _totalSupply; } function balanceOf(address account) public view virtual returns (uint256) { return _balances[account]; } function transfer(address recipient, uint256 amount) external virtual returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view virtual returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) external virtual returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) external virtual returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance"); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance(address spender, uint256 addedValue) external virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue); return true; } function decreaseAllowance(address spender, uint256 subtractedValue) external virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function burn(uint256 amount) external virtual { _burn(_msgSender(), amount); } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(); uint256 senderBalance = _balances[sender]; require(senderBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; } _totalSupply -= amount; emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { 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); } function _beforeTokenTransfer() internal virtual { require(!paused(), "ERC20Pausable: token transfer while paused"); } }