ETH Price: $2,545.91 (+0.72%)

Transaction Decoder

Block:
13255988 at Sep-19-2021 11:54:45 AM +UTC
Transaction Fee:
0.01418401898639946 ETH $36.11
Gas Used:
306,009 Gas / 46.35163994 Gwei

Emitted Events:

210 Crucible.Locked( delegate=[Receiver] Aludel, token=TransparentUpgradeableProxy, amount=6584087811483322469 )
211 Aludel.Staked( vault=Crucible, amount=6584087811483322469 )

Account State Difference:

  Address   Before After State Difference Code
0x260dC372...33c260073
1.107446231637696991 Eth
Nonce: 157
1.093262212651297531 Eth
Nonce: 158
0.01418401898639946
0x2C14ccB4...c13316251
0xa4DC59bA...b53B3ABE3
(Miner: 0xb7e...707)
27.482332853248516227 Eth27.482791866748516227 Eth0.0004590135

Execution Trace

Aludel.stake( vault=0x2C14ccB4348BFbcD1d2e22bfACc8D7fc13316251, amount=6584087811483322469, permission=0x85B92558F5F6486E77F872DE19F489CEFEB6CEBFEE9555ABBCE38BD4F674ACF5498A28E314DD7D237DB216F1AD1BCF2F5007F335B17482F66A5EB813829711BF1B )
  • PowerSwitch.STATICCALL( )
  • CrucibleFactory.isInstance( instance=0x2C14ccB4348BFbcD1d2e22bfACc8D7fc13316251 ) => ( validity=True )
  • Crucible.lock( token=0x6b4d5e9ec2aceA23D4110F4803Da99E25443c5Df, amount=6584087811483322469, permission=0x85B92558F5F6486E77F872DE19F489CEFEB6CEBFEE9555ABBCE38BD4F674ACF5498A28E314DD7D237DB216F1AD1BCF2F5007F335B17482F66A5EB813829711BF1B )
    • Crucible.lock( token=0x6b4d5e9ec2aceA23D4110F4803Da99E25443c5Df, amount=6584087811483322469, permission=0x85B92558F5F6486E77F872DE19F489CEFEB6CEBFEE9555ABBCE38BD4F674ACF5498A28E314DD7D237DB216F1AD1BCF2F5007F335B17482F66A5EB813829711BF1B )
      • CrucibleFactory.ownerOf( tokenId=251659441047222368568095018065081543404794503761 ) => ( 0x260dC3729c579Bc82Fae361c335516e33c260073 )
      • Null: 0x000...001.a43ec8dd( )
      • TransparentUpgradeableProxy.70a08231( )
        • AlphaKlimaUpgradeable.balanceOf( account=0x2C14ccB4348BFbcD1d2e22bfACc8D7fc13316251 ) => ( 6584087811483322469 )
          File 1 of 7: Aludel
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          // SPDX-License-Identifier: GPL-3.0-only
          pragma solidity 0.7.6;
          pragma abicoder v2;
          import {SafeMath} from "@openzeppelin/contracts/math/SafeMath.sol";
          import {EnumerableSet} from "@openzeppelin/contracts/utils/EnumerableSet.sol";
          import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
          import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
          import {TransferHelper} from "@uniswap/lib/contracts/libraries/TransferHelper.sol";
          import {IFactory} from "../factory/IFactory.sol";
          import {IInstanceRegistry} from "../factory/InstanceRegistry.sol";
          import {IUniversalVault} from "../crucible/Crucible.sol";
          import {IRewardPool} from "./RewardPool.sol";
          import {Powered} from "./Powered.sol";
          interface IRageQuit {
          function rageQuit() external;
          }
          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

          File 2 of 7: Crucible
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          // SPDX-License-Identifier: GPL-3.0-only
          pragma solidity 0.7.6;
          pragma abicoder v2;
          import {SafeMath} from "@openzeppelin/contracts/math/SafeMath.sol";
          import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
          import {Initializable} from "@openzeppelin/contracts/proxy/Initializable.sol";
          import {EnumerableSet} from "@openzeppelin/contracts/utils/EnumerableSet.sol";
          import {Address} from "@openzeppelin/contracts/utils/Address.sol";
          import {TransferHelper} from "@uniswap/lib/contracts/libraries/TransferHelper.sol";
          import {EIP712} from "./EIP712.sol";
          import {ERC1271} from "./ERC1271.sol";
          import {OwnableERC721} from "./OwnableERC721.sol";
          import {IRageQuit} from "../aludel/Aludel.sol";
          interface IUniversalVault {
          /* user events */
          event Locked(address delegate, address token, uint256 amount);
          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

          File 3 of 7: PowerSwitch
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          // SPDX-License-Identifier: GPL-3.0-only
          pragma solidity 0.7.6;
          import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
          interface IPowerSwitch {
          /* admin events */
          event PowerOn();
          event PowerOff();
          event EmergencyShutdown();
          /* data types */
          enum State {Online, Offline, Shutdown}
          /* admin functions */
          function powerOn() external;
          function powerOff() external;
          function emergencyShutdown() external;
          /* view functions */
          function isOnline() external view returns (bool status);
          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

          File 4 of 7: CrucibleFactory
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          // SPDX-License-Identifier: GPL-3.0-only
          pragma solidity 0.7.6;
          import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol";
          import {IFactory} from "../factory/IFactory.sol";
          import {IInstanceRegistry} from "../factory/InstanceRegistry.sol";
          import {ProxyFactory} from "../factory/ProxyFactory.sol";
          import {IUniversalVault} from "./Crucible.sol";
          /// @title CrucibleFactory
          contract CrucibleFactory is IFactory, IInstanceRegistry, ERC721 {
          address private immutable _template;
          constructor(address template) ERC721("Alchemist Crucible v1", "CRUCIBLE-V1") {
          require(template != address(0), "CrucibleFactory: invalid template");
          _template = template;
          }
          /* registry functions */
          function isInstance(address instance) external view override returns (bool validity) {
          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

          File 5 of 7: Crucible
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          // SPDX-License-Identifier: GPL-3.0-only
          pragma solidity 0.7.6;
          pragma abicoder v2;
          import {SafeMath} from "@openzeppelin/contracts/math/SafeMath.sol";
          import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
          import {Initializable} from "@openzeppelin/contracts/proxy/Initializable.sol";
          import {EnumerableSet} from "@openzeppelin/contracts/utils/EnumerableSet.sol";
          import {Address} from "@openzeppelin/contracts/utils/Address.sol";
          import {TransferHelper} from "@uniswap/lib/contracts/libraries/TransferHelper.sol";
          import {EIP712} from "./EIP712.sol";
          import {ERC1271} from "./ERC1271.sol";
          import {OwnableERC721} from "./OwnableERC721.sol";
          import {IRageQuit} from "../aludel/Aludel.sol";
          interface IUniversalVault {
          /* user events */
          event Locked(address delegate, address token, uint256 amount);
          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

          File 6 of 7: TransparentUpgradeableProxy
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          // SPDX-License-Identifier: MIT
          pragma solidity ^0.8.0;
          import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
          import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol";
          import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol";
          // Kept for backwards compatibility with older versions of Hardhat and Truffle plugins.
          contract AdminUpgradeabilityProxy is TransparentUpgradeableProxy {
          constructor(address logic, address admin, bytes memory data) payable TransparentUpgradeableProxy(logic, admin, data) {}
          }
          // SPDX-License-Identifier: MIT
          pragma solidity ^0.8.0;
          import "../Proxy.sol";
          import "./ERC1967Upgrade.sol";
          /**
          * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an
          * implementation address that can be changed. This address is stored in storage in the location specified by
          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

          File 7 of 7: AlphaKlimaUpgradeable
          1
          2
          3
          4
          5
          6
          7
          8
          9
          10
          11
          12
          13
          14
          15
          16
          // File: @openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol
          pragma solidity ^0.8.0;
          /**
          * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed
          * behind a proxy. Since a proxied contract can't have a constructor, it's common to move constructor logic to an
          * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer
          * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.
          *
          * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as
          * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.
          *
          * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure
          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX