Transaction Hash:
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 | ||
---|---|---|---|---|---|
0x260dC372...33c260073 |
1.107446231637696991 Eth
Nonce: 157
|
1.093262212651297531 Eth
Nonce: 158
| 0.01418401898639946 | ||
0x2C14ccB4...c13316251 | |||||
0xa4DC59bA...b53B3ABE3 | |||||
0xB7e39086...afE43F707
Miner
| (Miner: 0xb7e...707) | 27.482332853248516227 Eth | 27.482791866748516227 Eth | 0.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
File 2 of 7: Crucible
File 3 of 7: PowerSwitch
File 4 of 7: CrucibleFactory
File 5 of 7: Crucible
File 6 of 7: TransparentUpgradeableProxy
File 7 of 7: AlphaKlimaUpgradeable
12345678910111213141516// SPDX-License-Identifier: GPL-3.0-onlypragma 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;}
File 2 of 7: Crucible
12345678910111213141516// SPDX-License-Identifier: GPL-3.0-onlypragma 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);
File 3 of 7: PowerSwitch
12345678910111213141516// SPDX-License-Identifier: GPL-3.0-onlypragma 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);
File 4 of 7: CrucibleFactory
12345678910111213141516// SPDX-License-Identifier: GPL-3.0-onlypragma 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 CrucibleFactorycontract 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) {
File 5 of 7: Crucible
12345678910111213141516// SPDX-License-Identifier: GPL-3.0-onlypragma 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);
File 6 of 7: TransparentUpgradeableProxy
12345678910111213141516// SPDX-License-Identifier: MITpragma 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: MITpragma 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
File 7 of 7: AlphaKlimaUpgradeable
12345678910111213141516// File: @openzeppelin/contracts-upgradeable/proxy/utils/Initializable.solpragma 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