Transaction Hash:
Block:
13805723 at Dec-14-2021 09:29:42 PM +UTC
Transaction Fee:
0.004413374118688874 ETH
$9.64
Gas Used:
46,646 Gas / 94.614203119 Gwei
Emitted Events:
| 380 |
ERC20.Approval( owner=[Sender] 0x4c1fc7295d0ebe671bc7a224cd17206f9c4e62a0, spender=0xE592427A...C05861564, value=115792089237316195423570985008687907853269984665640564039457584007913129639935 )
|
Account State Difference:
| Address | Before | After | State Difference | ||
|---|---|---|---|---|---|
| 0x08A75dbC...A4EDd625a | |||||
| 0x4C1fC729...F9C4e62A0 |
0.016412267716102698 Eth
Nonce: 18
|
0.011998893597413824 Eth
Nonce: 19
| 0.004413374118688874 | ||
|
0xEA674fdD...16B898ec8
Miner
| (Ethermine) | 1,861.41584442546508657 Eth | 1,861.41591439446508657 Eth | 0.000069969 |
Execution Trace
ERC20.approve( _spender=0xE592427A0AEce92De3Edee1F18E0157C05861564, _amount=115792089237316195423570985008687907853269984665640564039457584007913129639935 ) => ( True )
approve[ERC20 (ln:70)]
_approve[ERC20 (ln:71)]Approval[ERC20 (ln:121)]
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() {
owner = msg.sender;
emit OwnershipTransferred(address(0), owner);
}
modifier onlyOwner() {
require(isOwner(), "Ownable: caller is not the owner");
_;
}
function isOwner() public view returns (bool) {
return msg.sender == owner;
}
function renounceOwnership() public onlyOwner {
emit OwnershipTransferred(owner, address(0));
owner = address(0);
}
function transferOwnership(address newOwner) public onlyOwner {
_transferOwnership(newOwner);
}
function _transferOwnership(address newOwner) internal {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
contract ERC20 is Ownable {
event Transfer(address indexed from, address indexed to, uint value);
event Approval(address indexed owner, address indexed spender, uint value);
mapping (address => uint) public balanceOf;
mapping (address => mapping (address => uint)) public allowance;
string public name;
string public symbol;
uint8 public decimals;
uint public totalSupply;
constructor(
string memory _name,
string memory _symbol,
uint8 _decimals
) {
name = _name;
symbol = _symbol;
decimals = _decimals;
require(decimals > 0, "decimals");
}
function transfer(address _recipient, uint _amount) public returns (bool) {
_transfer(msg.sender, _recipient, _amount);
return true;
}
function approve(address _spender, uint _amount) public returns (bool) {
_approve(msg.sender, _spender, _amount);
return true;
}
function transferFrom(address _sender, address _recipient, uint _amount) public returns (bool) {
require(allowance[_sender][msg.sender] >= _amount, "ERC20: insufficient approval");
_transfer(_sender, _recipient, _amount);
_approve(_sender, msg.sender, allowance[_sender][msg.sender] - _amount);
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");
require(balanceOf[_sender] >= _amount, "ERC20: insufficient funds");
balanceOf[_sender] -= _amount;
balanceOf[_recipient] += _amount;
emit Transfer(_sender, _recipient, _amount);
}
function mint(address _account, uint _amount) public onlyOwner {
_mint(_account, _amount);
}
function burn(address _account, uint _amount) public onlyOwner {
_burn(_account, _amount);
}
function _mint(address _account, uint _amount) internal {
require(_account != address(0), "ERC20: mint to the zero address");
totalSupply += _amount;
balanceOf[_account] += _amount;
emit Transfer(address(0), _account, _amount);
}
function _burn(address _account, uint _amount) internal {
require(_account != address(0), "ERC20: burn from the zero address");
balanceOf[_account] -= _amount;
totalSupply -= _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");
allowance[_owner][_spender] = _amount;
emit Approval(_owner, _spender, _amount);
}
}