Transaction Hash:
Block:
11014251 at Oct-08-2020 09:54:22 AM +UTC
Transaction Fee:
0.001509464 ETH
$2.86
Gas Used:
44,396 Gas / 34 Gwei
Emitted Events:
254 |
LunaCoreToken.Approval( owner=[Sender] 0xd50a6665990c1b8d8bf7c997d563e12a58c0d8e3, spender=0x7a250d56...659F2488D, value=115792089237316195423570985008687907853269984665640564039457584007913129639935 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x547d6118...c5634B9C9 | |||||
0x5A0b54D5...D3E029c4c
Miner
| (Spark Pool) | 69.923861046663688402 Eth | 69.925370510663688402 Eth | 0.001509464 | |
0xD50A6665...a58C0d8E3 |
0.338771941137646396 Eth
Nonce: 280
|
0.337262477137646396 Eth
Nonce: 281
| 0.001509464 |
Execution Trace
LunaCoreToken.approve( _spender=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, _value=115792089237316195423570985008687907853269984665640564039457584007913129639935 ) => ( success=True )
approve[LunaCoreToken (ln:152)]
Approval[LunaCoreToken (ln:155)]
pragma solidity 0.6.0; library SafeMath { /** * @dev Multiplies two unsigned integers, reverts on overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b); return c; } /** * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend). */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a); uint256 c = a - b; return c; } /** * @dev Adds two unsigned integers, reverts on overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a); return c; } /** * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo), * reverts when dividing by zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0); return a % b; } } contract Ownable { address public _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor () public { _owner = msg.sender; emit OwnershipTransferred(address(0), msg.sender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == msg.sender, "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } contract LunaCoreToken is Ownable { using SafeMath for uint256; // standard ERC20 variables. string public constant name = "LunaCore"; string public constant symbol = "LUCR"; uint256 public constant decimals = 18; // the supply will not exceed 25,000 uint256 private constant _maximumSupply = 25000 * 10 ** decimals; // owner of the contract uint256 public _totalSupply; // events event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); // mappings mapping(address => uint256) public _balanceOf; mapping(address => mapping(address => uint256)) public allowance; constructor() public override { // transfer the entire supply into the address of the Contract creator. _owner = msg.sender; _totalSupply = _maximumSupply; _balanceOf[msg.sender] = _maximumSupply; emit Transfer(address(0), msg.sender, _maximumSupply); } function totalSupply () public view returns (uint256) { return _totalSupply; } function balanceOf (address who) public view returns (uint256) { return _balanceOf[who]; } // ensure the address is valid. function _transfer(address _from, address _to, uint256 _value) internal { _balanceOf[_from] = _balanceOf[_from].sub(_value); _balanceOf[_to] = _balanceOf[_to].add(_value); emit Transfer(_from, _to, _value); } // send tokens function transfer(address _to, uint256 _value) public returns (bool success) { require(_balanceOf[msg.sender] >= _value); _transfer(msg.sender, _to, _value); return true; } // handles presale burn + staking burn. function burn (uint256 _burnAmount) public onlyOwner returns (bool success) { _transfer(_owner, address(0), _burnAmount); _totalSupply = _totalSupply.sub(_burnAmount); return true; } // approve tokens function approve(address _spender, uint256 _value) public returns (bool success) { require(_spender != address(0)); allowance[msg.sender][_spender] = _value; emit Approval(msg.sender, _spender, _value); return true; } // transfer from function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) { require(_value <= _balanceOf[_from]); require(_value <= allowance[_from][msg.sender]); allowance[_from][msg.sender] = allowance[_from][msg.sender].sub(_value); _transfer(_from, _to, _value); return true; } }