Transaction Hash:
Block:
14705304 at May-03-2022 03:00:11 PM +UTC
Transaction Fee:
0.002126058393339044 ETH
$9.25
Gas Used:
46,517 Gas / 45.704976532 Gwei
Emitted Events:
98 |
DGLight.Approval( _owner=[Sender] 0xa673411920bf5ab98717ec7c5aa825340c045e3c, _spender=0x881D4023...dC08D300C, _value=115792089237316195423570985008687907853269984665640564039457584007913129639935 )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x4b520c81...26C83588D | |||||
0x829BD824...93333A830
Miner
| (F2Pool Old) | 3,672.771554729333137257 Eth | 3,672.771647763333137257 Eth | 0.000093034 | |
0xa6734119...40C045e3C |
0.012130815253148754 Eth
Nonce: 16
|
0.01000475685980971 Eth
Nonce: 17
| 0.002126058393339044 |
Execution Trace
DGLight.approve( _spender=0x881D40237659C251811CEC9c364ef91dC08D300C, _amount=115792089237316195423570985008687907853269984665640564039457584007913129639935 ) => ( True )
{"DGLightToken.sol":{"content":"// SPDX-License-Identifier: ---DG----\n\npragma solidity ^0.8.9;\n\nimport \"./ERC20.sol\";\n\ninterface IClassicDGToken {\n\n function transfer(\n address _recipient,\n uint256 _amount\n )\n external\n returns (bool);\n\n function transferFrom(\n address _sender,\n address _recipient,\n uint256 _amount\n )\n external\n returns (bool);\n}\n\ncontract DGLight is ERC20(\"Decentral Games\", \"DG\") {\n\n IClassicDGToken immutable public classicDG;\n uint16 constant public RATIO = 1000;\n\n constructor(\n address _classicDGTokenAddress\n ) {\n classicDG = IClassicDGToken(\n _classicDGTokenAddress\n );\n\n DOMAIN_SEPARATOR = keccak256(\n abi.encode(\n keccak256(\u0027EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\u0027),\n keccak256(bytes(name())),\n keccak256(bytes(\u00271\u0027)),\n block.chainid,\n address(this)\n )\n );\n }\n\n function goLight(\n uint256 _classicAmountToDeposit\n )\n external\n {\n classicDG.transferFrom(\n msg.sender,\n address(this),\n _classicAmountToDeposit\n );\n\n _mint(\n msg.sender,\n _classicAmountToDeposit * RATIO\n );\n }\n\n function goClassic(\n uint256 _classicAmountToReceive\n )\n external\n {\n classicDG.transfer(\n msg.sender,\n _classicAmountToReceive\n );\n\n _burn(\n msg.sender,\n _classicAmountToReceive * RATIO\n );\n }\n}\n"},"ERC20.sol":{"content":"// SPDX-License-Identifier: ---DG----\n\npragma solidity ^0.8.9;\n\ncontract ERC20 {\n\n string private _name;\n string private _symbol;\n uint8 private _decimals;\n\n uint256 private _totalSupply;\n\n mapping(address =\u003e uint256) private _balances;\n mapping(address =\u003e mapping(address =\u003e uint256)) private _allowances;\n mapping(address =\u003e uint) public nonces;\n\n bytes32 public DOMAIN_SEPARATOR;\n bytes32 public constant PERMIT_TYPEHASH = keccak256(\n \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\"\n );\n\n event Transfer(\n address indexed _from,\n address indexed _to,\n uint256 _value\n );\n\n event Approval(\n address indexed _owner,\n address indexed _spender,\n uint256 _value\n );\n\n constructor(\n string memory _entryname,\n string memory _entrysymbol\n ) {\n _name = _entryname;\n _symbol = _entrysymbol;\n _decimals = 18;\n }\n\n function name()\n public\n view\n returns (string memory)\n {\n return _name;\n }\n\n function symbol()\n public\n view\n returns (string memory)\n {\n return _symbol;\n }\n\n function decimals()\n public\n view\n returns (uint8)\n {\n return _decimals;\n }\n\n function totalSupply()\n public\n view\n returns (uint256)\n {\n return _totalSupply;\n }\n\n function balanceOf(\n address _account\n )\n public\n view\n returns (uint256)\n {\n return _balances[_account];\n }\n\n function transfer(\n address _recipient,\n uint256 _amount\n )\n external\n returns (bool)\n {\n _transfer(\n msg.sender,\n _recipient,\n _amount\n );\n\n return true;\n }\n\n function allowance(\n address _owner,\n address _spender\n )\n external\n view\n returns (uint256)\n {\n return _allowances[_owner][_spender];\n }\n\n function approve(\n address _spender,\n uint256 _amount\n )\n external\n returns (bool)\n {\n _approve(\n msg.sender,\n _spender,\n _amount\n );\n\n return true;\n }\n\n function transferFrom(\n address _sender,\n address _recipient,\n uint256 _amount\n )\n public\n returns (bool)\n {\n _approve(\n _sender,\n msg.sender,\n _allowances[_sender][msg.sender] - _amount\n );\n\n _transfer(\n _sender,\n _recipient,\n _amount\n );\n\n return true;\n }\n\n function permit(\n address _owner,\n address _spender,\n uint256 _value,\n uint256 _deadline,\n uint8 _v,\n bytes32 _r,\n bytes32 _s\n )\n external\n {\n require(\n _deadline \u003e= block.timestamp,\n \u0027ERC20: PERMIT_CALL_EXPIRED\u0027\n );\n\n bytes32 digest = keccak256(\n abi.encodePacked(\n \u0027\\x19\\x01\u0027,\n DOMAIN_SEPARATOR,\n keccak256(\n abi.encode(\n PERMIT_TYPEHASH,\n _owner,\n _spender,\n _value,\n nonces[_owner]++,\n _deadline\n )\n )\n )\n );\n\n address recoveredAddress = ecrecover(\n digest,\n _v,\n _r,\n _s\n );\n\n require(\n recoveredAddress != address(0) \u0026\u0026\n recoveredAddress == _owner,\n \u0027INVALID_SIGNATURE\u0027\n );\n\n _approve(\n _owner,\n _spender,\n _value\n );\n }\n\n function _transfer(\n address _sender,\n address _recipient,\n uint256 _amount\n )\n internal\n {\n _balances[_sender] =\n _balances[_sender] - _amount;\n\n _balances[_recipient] =\n _balances[_recipient] + _amount;\n\n emit Transfer(\n _sender,\n _recipient,\n _amount\n );\n }\n\n function _mint(\n address _account,\n uint256 _amount\n )\n internal\n {\n _totalSupply =\n _totalSupply + _amount;\n\n unchecked {\n _balances[_account] =\n _balances[_account] + _amount;\n }\n\n emit Transfer(\n address(0),\n _account,\n _amount\n );\n }\n\n function _burn(\n address _account,\n uint256 _amount\n )\n internal\n {\n _balances[_account] =\n _balances[_account] - _amount;\n\n unchecked {\n _totalSupply =\n _totalSupply - _amount;\n }\n\n emit Transfer(\n _account,\n address(0),\n _amount\n );\n }\n\n function _approve(\n address _owner,\n address _spender,\n uint256 _amount\n )\n internal\n {\n _allowances[_owner][_spender] = _amount;\n\n emit Approval(\n _owner,\n _spender,\n _amount\n );\n }\n}\n"}}