ETH Price: $2,684.26 (+7.44%)

Transaction Decoder

Block:
19259991 at Feb-19-2024 06:26:11 AM +UTC
Transaction Fee:
0.00327607867395018 ETH $8.79
Gas Used:
128,695 Gas / 25.456145724 Gwei

Emitted Events:

233 TransparentUpgradeableProxy.0xd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a( 0xd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a, 0000000000000000000000009d8aec0648626ec0c3d5bd49db46bb549c22b855, 000000000000000000000000000000000000000000000015af1d78b58c400000 )
234 AltLayerToken.Transfer( from=GnosisSafeProxy, to=[Sender] 0x9d8aec0648626ec0c3d5bd49db46bb549c22b855, value=400000000000000000000 )

Account State Difference:

  Address   Before After State Difference Code
6.018847289310569303 Eth6.018859772725569303 Eth0.000012483415
0x8457CA50...35Bc0fbFB
0x9D8aeC06...49C22b855
0.011237589120392975 Eth
Nonce: 1
0.007961510446442795 Eth
Nonce: 2
0.00327607867395018
0xb58a659E...7E8224D7E
(AltLayer: Airdrop Distribution)

Execution Trace

TransparentUpgradeableProxy.304c2c03( )
  • Airdrop.claim( )
    • Null: 0x000...001.97aab66f( )
    • AltLayerToken.transferFrom( from=0x3aF2ACB662A241da4ef4310C7AB226f552B42115, to=0x9D8aeC0648626Ec0C3d5BD49Db46Bb549C22b855, value=400000000000000000000 ) => ( True )
      File 1 of 4: TransparentUpgradeableProxy
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      // SPDX-License-Identifier: MIT
      // OpenZeppelin Contracts (last updated v5.0.0) (proxy/transparent/TransparentUpgradeableProxy.sol)
      pragma solidity ^0.8.20;
      import {ERC1967Utils} from "../ERC1967/ERC1967Utils.sol";
      import {ERC1967Proxy} from "../ERC1967/ERC1967Proxy.sol";
      import {IERC1967} from "../../interfaces/IERC1967.sol";
      import {ProxyAdmin} from "./ProxyAdmin.sol";
      /**
      * @dev Interface for {TransparentUpgradeableProxy}. In order to implement transparency, {TransparentUpgradeableProxy}
      * does not implement this interface directly, and its upgradeability mechanism is implemented by an internal dispatch
      * mechanism. The compiler is unaware that these functions are implemented by {TransparentUpgradeableProxy} and will not
      * include them in the ABI so this interface must be used to interact with it.
      */
      interface ITransparentUpgradeableProxy is IERC1967 {
      function upgradeToAndCall(address, bytes calldata) external payable;
      }
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

      File 2 of 4: GnosisSafeProxy
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      // SPDX-License-Identifier: LGPL-3.0-only
      pragma solidity >=0.7.0 <0.9.0;
      /// @title IProxy - Helper interface to access masterCopy of the Proxy on-chain
      /// @author Richard Meissner - <richard@gnosis.io>
      interface IProxy {
      function masterCopy() external view returns (address);
      }
      /// @title GnosisSafeProxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.
      /// @author Stefan George - <stefan@gnosis.io>
      /// @author Richard Meissner - <richard@gnosis.io>
      contract GnosisSafeProxy {
      // singleton always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.
      // To reduce deployment costs this variable is internal and needs to be retrieved via `getStorageAt`
      address internal singleton;
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

      File 3 of 4: AltLayerToken
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      // SPDX-License-Identifier: MIT
      pragma solidity =0.8.23;
      import {ERC20, ERC20Burnable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
      import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";
      import {ERC20Capped} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Capped.sol";
      import {ERC20Pausable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Pausable.sol";
      import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
      /// @title AltLayer Token Contract
      /// @notice Implements an ERC20 token with a cap, burnability, pausability, and ownership features
      contract AltLayerToken is
      ERC20Burnable,
      ERC20Permit,
      ERC20Capped,
      ERC20Pausable,
      Ownable
      {
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

      File 4 of 4: Airdrop
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      // SPDX-License-Identifier: MIT
      pragma solidity =0.8.23;
      import {SafeERC20, IERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
      import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol";
      import {MerkleProof} from "@openzeppelin/contracts/utils/cryptography/MerkleProof.sol";
      import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
      import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";
      import {PausableUpgradeable} from "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol";
      /// @title Airdrop Contract
      /// @notice This contract allows for a token airdrop based on a Merkle tree for efficient proof of inclusion.
      contract Airdrop is PausableUpgradeable, OwnableUpgradeable {
      using SafeERC20 for IERC20;
      address public vault;
      address public token;
      bytes32 public merkleRoot;
      bytes32 public messageHash;
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX