Transaction Hash:
Block:
19759168 at Apr-29-2024 06:25:35 AM +UTC
Transaction Fee:
0.00125627598982374 ETH
$3.10
Gas Used:
146,885 Gas / 8.552786124 Gwei
Emitted Events:
215 |
BRC20.Transfer( from=[Sender] 0xde38a377ac05d9f146fdeb6a8edbf87f953aae34, to=[Receiver] 0xf70af817b07118cbf7accc38767899598e045408, value=5857607501179236574 )
|
216 |
0xca4098fcecc3bf7ad04691e1186f714a72e70e6d.0x274ed44bc09f9ff15c7aab597c835942a05dbf38024e688e775b3dd5c30772d9( 0x274ed44bc09f9ff15c7aab597c835942a05dbf38024e688e775b3dd5c30772d9, 0000000100000c2500000000000000000000000000000000000000000000064d, 000000000000000000000000000000000000000000000000000241fec8d01500 )
|
217 |
0x10e82b34e757cf4fdefc0e9fc8cca4e5b9749bce.0x838807fe70997cb429689dd35bc6ccb21720aa7d7daac8736b398060104fb0fa( 0x838807fe70997cb429689dd35bc6ccb21720aa7d7daac8736b398060104fb0fa, 0000000000000000000000000000000000000000000000000000000000000020, 0000000100000c2500000000000000000000000000000000000000000000064d, 966c63d14939ec9ace2dc744f5ea970e1cc6f20f12afefdcdff58ed5d321637e, 000000000000000000000000104959e3ce9135e60e0300daafaea6b262f0e51a, 00000000000000000000000000000000000000000000000000000000000000c0, 00000000000000000000000017f5b02b99ff5f74add7babe57dc08295b4f3de5, 00000000000000000000000000000000000000000000000000000000000000e0, 0000000000000000000000000000000000000000000000000000000000000000, 00000000000000000000000000000000000000000000000000000000000000c0, 000000000000000000000000000000000000000000000000514a66fcc573b0de, 00000000000000000000000066e8994d6cac7e90a28cfc7ceae7da32121c25f6, 0000000000000000000000000000000000000000000000000000000000000060, 0000000000000000000000000000000000000000000000000000000000000040, 000000000000000000000000de38a377ac05d9f146fdeb6a8edbf87f953aae34, 000000000000000000000000000000000000000000000000514a66fcc573b0de )
|
218 |
0xf70af817b07118cbf7accc38767899598e045408.0x799e69b309353cce2426b9f6a5c9e5aaae30669a28e9aa4b90c21503fe82bbf4( 0x799e69b309353cce2426b9f6a5c9e5aaae30669a28e9aa4b90c21503fe82bbf4, 0x000000000000000000000000de38a377ac05d9f146fdeb6a8edbf87f953aae34, 0000000100000c2500000000000000000000000000000000000000000000064d, 000000000000000000000000000000000000000000000000514a66fcc573b0de )
|
Account State Difference:
Address | Before | After | State Difference | ||
---|---|---|---|---|---|
0x10E82B34...5b9749bcE | 0.732143569084796184 Eth | 0.732906184084796184 Eth | 0.000762615 | ||
0x15e6E0D4...35b85ED12 | |||||
0x1f9090aa...8e676c326
Miner
| 2.847582199421380754 Eth | 2.847585959746269819 Eth | 0.000003760324889065 | ||
0xDe38a377...f953aaE34 |
0.011809441526257176 Eth
Nonce: 127
|
0.009790550536433436 Eth
Nonce: 128
| 0.00201889098982374 |
Execution Trace
ETH 0.000762615
0xf70af817b07118cbf7accc38767899598e045408.e43772fb( )
-
BRC20.transferFrom( from=0xDe38a377ac05d9f146fDEB6a8eDBF87f953aaE34, to=0xF70Af817B07118CBF7ACCC38767899598e045408, amount=5857607501179236574 ) => ( True )
0x10e82b34e757cf4fdefc0e9fc8cca4e5b9749bce.1028f292( )
-
0x104959e3ce9135e60e0300daafaea6b262f0e51a.STATICCALL( )
-
0xca4098fcecc3bf7ad04691e1186f714a72e70e6d.3065c409( )
-
0x925efd4495d5afee2d9606fa8c3d86c0587c026d.2c5c3d2d( )
-
ETH 0.000762615
0x104959e3ce9135e60e0300daafaea6b262f0e51a.eb867877( )
-
0xd2b4a366e63a3c10d067cac46cc011960326802e.b01b4bb8( )
-
0xca4098fcecc3bf7ad04691e1186f714a72e70e6d.3065c409( )
ETH 0.000762615
0x10e82b34e757cf4fdefc0e9fc8cca4e5b9749bce.4071642d( )
-
0xfc1475e9e16c88adc3309335e00de841c176994c.a3845197( )
-
0x925efd4495d5afee2d9606fa8c3d86c0587c026d.2c5c3d2d( )
-
0x104959e3ce9135e60e0300daafaea6b262f0e51a.STATICCALL( )
-
0xca4098fcecc3bf7ad04691e1186f714a72e70e6d.d75bb4e0( )
-
-
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./interfaces/IBRC20Factory.sol"; contract BRC20 { string public name; string public symbol; uint8 public immutable decimals; address public immutable factory; uint256 public totalSupply; mapping (address => uint256) public balanceOf; mapping (address => mapping(address => uint256)) public allowance; mapping (address => uint256) public nonces; bytes32 public DOMAIN_SEPARATOR; bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"); event Approval(address indexed owner, address indexed spender, uint256 value); event Transfer(address indexed from, address indexed to, uint256 value); constructor() { (name, symbol, decimals) = IBRC20Factory(msg.sender).parameters(); factory = msg.sender; uint256 chainId; assembly { chainId := chainid() } DOMAIN_SEPARATOR = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), keccak256(bytes('1')), chainId, address(this))); } function mint(address to, uint256 amount) external { require(msg.sender == factory, "unauthorized"); _mint(to, amount); } function burn(uint256 amount) external { require(msg.sender == factory, "unauthorized"); _burn(msg.sender, amount); } function approve(address spender, uint256 amount) external returns (bool) { allowance[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function transfer(address to, uint256 amount) external returns (bool) { balanceOf[msg.sender] -= amount; unchecked { balanceOf[to] += amount; } emit Transfer(msg.sender, to, amount); return true; } function transferFrom(address from, address to, uint256 amount) external returns (bool) { uint256 allowed = allowance[from][msg.sender]; if (allowed != type(uint256).max) allowance[from][msg.sender] = allowed - amount; balanceOf[from] -= amount; unchecked { balanceOf[to] += amount; } emit Transfer(from, to, amount); return true; } function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external { require(deadline >= block.timestamp, 'EXPIRED'); unchecked { bytes32 digest = keccak256( abi.encodePacked( '\\x19\\x01', DOMAIN_SEPARATOR, keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline)) ) ); address recoveredAddress = ecrecover(digest, v, r, s); require(recoveredAddress != address(0) && recoveredAddress == owner, 'INVALID_SIGNATURE'); allowance[recoveredAddress][spender] = value; } emit Approval(owner, spender, value); } function _mint(address to, uint256 amount) internal { totalSupply += amount; unchecked { balanceOf[to] += amount; } emit Transfer(address(0), to, amount); } function _burn(address from, uint256 amount) internal { balanceOf[from] -= amount; unchecked { totalSupply -= amount; } emit Transfer(from, address(0), amount); } }// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IBRC20Factory { function parameters() external view returns (string memory name, string memory symbol, uint8 decimals); }