ETH Price: $3,720.08 (+2.56%)

Transaction Decoder

Block:
20056505 at Jun-09-2024 07:58:11 PM +UTC
Transaction Fee:
0.000454688020166922 ETH $1.69
Gas Used:
61,863 Gas / 7.349918694 Gwei

Emitted Events:

289 BridgeToken.0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925( 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925, 0x000000000000000000000000c452f968df63f8c8532a91a404e43473caf152ca, 0x000000000000000000000000a7ca2c8673bcfa5a26d8ceec2887f2cc2b0db22a, ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff )

Account State Difference:

  Address   Before After State Difference Code
(beaverbuild)
18.253958170786073352 Eth18.254020033786073352 Eth0.000061863
0xC452f968...3caF152ca
0.00144782369733036 Eth
Nonce: 2
0.000993135677163438 Eth
Nonce: 3
0.000454688020166922
0xD31a59c8...41571b89c

Execution Trace

BridgeToken.095ea7b3( )
  • TokenBridge.STATICCALL( )
    • BridgeImplementation.DELEGATECALL( )
    • TokenImplementation.approve( spender_=0xa7Ca2C8673bcFA5a26d8ceeC2887f2CC2b0Db22A, amount_=115792089237316195423570985008687907853269984665640564039457584007913129639935 ) => ( True )
      File 1 of 4: BridgeToken
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      // contracts/Structs.sol
      // SPDX-License-Identifier: Apache 2
      pragma solidity ^0.8.0;
      import "@openzeppelin/contracts/proxy/beacon/BeaconProxy.sol";
      contract BridgeToken is BeaconProxy {
      constructor(address beacon, bytes memory data) BeaconProxy(beacon, data) {
      }
      }// SPDX-License-Identifier: MIT
      pragma solidity ^0.8.2;
      import "../beacon/IBeacon.sol";
      import "../../utils/Address.sol";
      import "../../utils/StorageSlot.sol";
      /**
      * @dev This abstract contract provides getters and event emitting update functions for
      * https://eips.ethereum.org/EIPS/eip-1967[EIP1967] slots.
      *
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

      File 2 of 4: TokenBridge
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      // contracts/Wormhole.sol
      // SPDX-License-Identifier: Apache 2
      pragma solidity ^0.8.0;
      import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
      contract TokenBridge is ERC1967Proxy {
      constructor (address implementation, bytes memory initData)
      ERC1967Proxy(
      implementation,
      initData
      )
      {}
      }// SPDX-License-Identifier: MIT
      pragma solidity ^0.8.0;
      import "../Proxy.sol";
      import "./ERC1967Upgrade.sol";
      /**
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

      File 3 of 4: BridgeImplementation
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      // contracts/Implementation.sol
      // SPDX-License-Identifier: Apache 2
      pragma solidity ^0.8.0;
      pragma experimental ABIEncoderV2;
      import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Upgrade.sol";
      import "./Bridge.sol";
      contract BridgeImplementation is Bridge {
      // Beacon getter for the token contracts
      function implementation() public view returns (address) {
      return tokenImplementation();
      }
      function initialize() initializer public virtual {
      // this function needs to be exposed for an upgrade to pass
      }
      modifier initializer() {
      address impl = ERC1967Upgrade._getImplementation();
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

      File 4 of 4: TokenImplementation
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      // SPDX-License-Identifier: Apache 2
      // File: @openzeppelin/contracts/utils/Counters.sol
      pragma solidity ^0.8.0;
      /**
      * @title Counters
      * @author Matt Condon (@shrugs)
      * @dev Provides counters that can only be incremented, decremented or reset. This can be used e.g. to track the number
      * of elements in a mapping, issuing ERC721 ids, or counting request ids.
      *
      * Include with `using Counters for Counters.Counter;`
      */
      library Counters {
      struct Counter {
      XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX