ETH Price: $1,827.06 (-2.79%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer Ownersh...201684422024-06-25 11:36:59608 days ago1719315419IN
0x539bcbc0...EbF0B090b
0 ETH0.000119454.18154517
Set Collateral T...201684412024-06-25 11:36:47608 days ago1719315407IN
0x539bcbc0...EbF0B090b
0 ETH0.000294544.16700411
Set Collateral T...201684402024-06-25 11:36:35608 days ago1719315395IN
0x539bcbc0...EbF0B090b
0 ETH0.000297114.20334528
Set Collateral T...201684392024-06-25 11:36:23608 days ago1719315383IN
0x539bcbc0...EbF0B090b
0 ETH0.000298324.22046066
Set Collateral T...201684382024-06-25 11:36:11608 days ago1719315371IN
0x539bcbc0...EbF0B090b
0 ETH0.000283994.01767351
Set Collateral T...201684372024-06-25 11:35:59608 days ago1719315359IN
0x539bcbc0...EbF0B090b
0 ETH0.000298964.22948476
Transfer Ownersh...201683492024-06-25 11:18:23608 days ago1719314303IN
0x539bcbc0...EbF0B090b
0 ETH0.000108743.80645153

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
StakingOperator

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 4000 runs

Other Settings:
paris EvmVersion, MIT license
// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {IStakingOperator} from "./interfaces/IStakingOperator.sol";

/// @title Staking Operator Contract
/// @notice Manages the staking operations including setting unlock windows and collateral tokens
contract StakingOperator is Ownable, IStakingOperator {
    /// @notice Represents the unlock window
    UnlockWindow public unlockWindow;

    /// @notice Flag to indicate if the unlock window is active
    bool public isUnlockWindowActive;

    /// @notice Maps original tokens to their wrapped counterparts
    mapping(address original => address wrapped) public collateralTokens;

    /// @notice Maps wrapped tokens to their original counterparts
    mapping(address wrapped => address original) public originalTokens;

    /**
     * @notice Constructor to initialize the contract with unlock window parameters and owner
     * @param unlockWindowStart The start timestamp of the unlock window
     * @param unlockWindowDuration The duration of the unlock window
     * @param owner The address of the contract owner
     */
    constructor(
        uint256 unlockWindowStart,
        uint256 unlockWindowDuration,
        bool isUnlockWindowActive_,
        address owner
    ) Ownable(owner) {
        if (isUnlockWindowActive_) {
            _setUnlockWindow(unlockWindowStart, unlockWindowDuration);
            isUnlockWindowActive = true;
        }
    }

    /**
     * @notice Gets the original token for a collateral token
     * @param wrapped The address of the wrapped token
     * @return The address of the original token
     */
    function getOriginalToken(address wrapped) external view returns (address) {
        return originalTokens[wrapped];
    }

    /**
     * @notice Gets the collateral token for an original token
     * @param original The address of the original token
     * @return The address of the collateral (wrapped) token
     */
    function getCollateralToken(
        address original
    ) external view returns (address) {
        return collateralTokens[original];
    }

    /**
     * @notice Checks if unlock is allowed at the current timestamp
     * @param currentTimestamp The current timestamp to check
     * @return True if unlock is allowed, false otherwise
     */
    function isUnlockAllowed(
        uint256 currentTimestamp
    ) external view returns (bool) {
        if (!isUnlockWindowActive) {
            return true;
        }

        return
            currentTimestamp >= unlockWindow.start &&
            currentTimestamp <= unlockWindow.start + unlockWindow.duration;
    }

    /**
     * @notice Sets the unlock allowed flag
     * @param isUnlockWindowActive_ Flag to indicate if the unlock window is active
     * @dev Can only be called by the contract owner
     */
    function setIsUnlockWindowActive(
        bool isUnlockWindowActive_
    ) external onlyOwner {
        isUnlockWindowActive = isUnlockWindowActive_;
    }

    /**
     * @notice Sets the unlock window parameters and checks
     * @param unlockWindowStart The start timestamp of the unlock window
     * @param unlockWindowDuration The duration of the unlock window
     * @dev Can only be called by the contract owner
     */
    function setUnlockWindow(
        uint256 unlockWindowStart,
        uint256 unlockWindowDuration
    ) external onlyOwner {
        _setUnlockWindow(unlockWindowStart, unlockWindowDuration);
    }

    /**
     * @notice Sets the collateral token for an original token
     * @param original The address of the original token
     * @param wrapped The address of the collateral (wrapped) token
     * @param force Flag to force set the collateral token
     * @dev Can only be called by the contract owner
     * @dev Reverts if original and wrapped tokens are the same or if either address is zero
     * @dev Reverts if the original token is already set
     */
    function setCollateralToken(
        address original,
        address wrapped,
        bool force
    ) external onlyOwner {
        if (collateralTokens[original] != address(0) && !force) {
            revert CollateralTokenAlreadySet();
        }

        if (
            (original == wrapped) ||
            (original == address(0)) ||
            (wrapped == address(0))
        ) {
            revert InvalidCollateralToken();
        }

        collateralTokens[original] = wrapped;
        originalTokens[wrapped] = original;

        emit CollateralTokenSet(original, wrapped);
    }

    /**
     * @notice Sets the unlock window parameters
     * @param unlockWindowStart The start timestamp of the unlock window
     * @param unlockWindowDuration The duration of the unlock window
     */
    function _setUnlockWindow(
        uint256 unlockWindowStart,
        uint256 unlockWindowDuration
    ) internal {
        if (unlockWindowStart == 0) {
            revert InvalidUnlockWindowStart();
        }

        if (unlockWindowDuration == 0) {
            revert InvalidUnlockWindowDuration();
        }

        unlockWindow = UnlockWindow(unlockWindowStart, unlockWindowDuration);
        emit UnlockWindowSet(unlockWindowStart, unlockWindowDuration);
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)

pragma solidity ^0.8.20;

import {Context} from "../utils/Context.sol";

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * The initial owner is set to the address provided by the deployer. This can
 * later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)

pragma solidity ^0.8.20;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

// SPDX-License-Identifier: MIT

pragma solidity 0.8.20;

/// @title Staking Operator Interface
/// @notice Interface for managing staking operations including unlock windows and collateral tokens
interface IStakingOperator {
    /// @notice Structure to define the unlock window
    /// @param start The start timestamp of the unlock window
    /// @param duration The duration of the unlock window
    struct UnlockWindow {
        uint256 start;
        uint256 duration;
    }

    /// @notice Event emitted when the unlock window is set
    /// @param start The start timestamp of the unlock window
    /// @param duration The duration of the unlock window
    event UnlockWindowSet(uint256 start, uint256 duration);

    /// @notice Event emitted when a collateral token is set
    /// @param original The address of the original token
    /// @param wrapped The address of the collateral (wrapped) token
    event CollateralTokenSet(address original, address wrapped);

    /// @notice Error thrown when an invalid collateral token is set
    error InvalidCollateralToken();
    /// @notice Error thrown when an invalid original token is already set
    error CollateralTokenAlreadySet();
    /// @notice Error thrown when an invalid unlock window duration is set
    error InvalidUnlockWindowDuration();
    /// @notice Error thrown when an invalid unlock window start is set
    error InvalidUnlockWindowStart();

    /**
     * @notice Gets the collateral token for an original token
     * @param original The address of the original token
     * @return The address of the collateral (wrapped) token
     */
    function getCollateralToken(
        address original
    ) external view returns (address);

    /**
     * @notice Gets the original token for a collateral token
     * @param wrapped The address of the wrapped token
     * @return The address of the original token
     */
    function getOriginalToken(address wrapped) external view returns (address);

    /**
     * @notice Checks if unlock is allowed at the current timestamp
     * @param currentTimestamp The current timestamp to check
     * @return True if unlock is allowed, false otherwise
     */
    function isUnlockAllowed(
        uint256 currentTimestamp
    ) external view returns (bool);

    /**
     * @notice Sets the collateral token for an original token
     * @param original The address of the original token
     * @param wrapped The address of the collateral (wrapped) token
     * @param force Flag to force set the collateral token
     * @dev Reverts if original and wrapped tokens are the same or if either address is zero
     */
    function setCollateralToken(address original, address wrapped, bool force) external;

    /**
     * @notice Sets the unlock window parameters
     * @param unlockWindowStart The start timestamp of the unlock window
     * @param unlockWindowDuration The duration of the unlock window
     */
    function setUnlockWindow(
        uint256 unlockWindowStart,
        uint256 unlockWindowDuration
    ) external;
}

Settings
{
  "evmVersion": "paris",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": true,
    "runs": 4000
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"uint256","name":"unlockWindowStart","type":"uint256"},{"internalType":"uint256","name":"unlockWindowDuration","type":"uint256"},{"internalType":"bool","name":"isUnlockWindowActive_","type":"bool"},{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CollateralTokenAlreadySet","type":"error"},{"inputs":[],"name":"InvalidCollateralToken","type":"error"},{"inputs":[],"name":"InvalidUnlockWindowDuration","type":"error"},{"inputs":[],"name":"InvalidUnlockWindowStart","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"original","type":"address"},{"indexed":false,"internalType":"address","name":"wrapped","type":"address"}],"name":"CollateralTokenSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"start","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"duration","type":"uint256"}],"name":"UnlockWindowSet","type":"event"},{"inputs":[{"internalType":"address","name":"original","type":"address"}],"name":"collateralTokens","outputs":[{"internalType":"address","name":"wrapped","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"original","type":"address"}],"name":"getCollateralToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wrapped","type":"address"}],"name":"getOriginalToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"currentTimestamp","type":"uint256"}],"name":"isUnlockAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isUnlockWindowActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wrapped","type":"address"}],"name":"originalTokens","outputs":[{"internalType":"address","name":"original","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"original","type":"address"},{"internalType":"address","name":"wrapped","type":"address"},{"internalType":"bool","name":"force","type":"bool"}],"name":"setCollateralToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"isUnlockWindowActive_","type":"bool"}],"name":"setIsUnlockWindowActive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"unlockWindowStart","type":"uint256"},{"internalType":"uint256","name":"unlockWindowDuration","type":"uint256"}],"name":"setUnlockWindow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockWindow","outputs":[{"internalType":"uint256","name":"start","type":"uint256"},{"internalType":"uint256","name":"duration","type":"uint256"}],"stateMutability":"view","type":"function"}]

608060405234801561001057600080fd5b50604051610a52380380610a5283398101604081905261002f91610179565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161008f565b5081156100865761007884846100df565b6003805460ff191660011790555b505050506101d5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b816000036101005760405163e290842b60e01b815260040160405180910390fd5b8060000361012157604051635d191a3160e11b815260040160405180910390fd5b60408051808201825283815260209081018390526001849055600283905581518481529081018390527fd69be7382d4da9206cec2b156106c174cd7a198f2d7a73be19026424e3d376ea910160405180910390a15050565b6000806000806080858703121561018f57600080fd5b8451935060208501519250604085015180151581146101ad57600080fd5b60608601519092506001600160a01b03811681146101ca57600080fd5b939692955090935050565b61086e806101e46000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c8063c480e0391161008c578063eb906c0d11610066578063eb906c0d1461021e578063f190e42714610231578063f2fde38b1461026a578063f74032f01461027d57600080fd5b8063c480e039146101c2578063ce1753a9146101d5578063cffbc297146101e857600080fd5b8063715018a6116100bd578063715018a61461017f5780638da5cb5b14610187578063a34fa0ea146101a557600080fd5b8063510ae615146100e457806355394c351461014757806364ad167b1461016a575b600080fd5b61011d6100f2366004610733565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600560205260409020541690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600154600254610155919082565b6040805192835260208301919091520161013e565b61017d610178366004610765565b6102b3565b005b61017d61046e565b60005473ffffffffffffffffffffffffffffffffffffffff1661011d565b6003546101b29060ff1681565b604051901515815260200161013e565b61017d6101d03660046107a8565b610482565b61017d6101e33660046107c3565b6104bb565b61011d6101f6366004610733565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101b261022c3660046107e5565b6104d1565b61011d61023f366004610733565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600460205260409020541690565b61017d610278366004610733565b61050d565b61011d61028b366004610733565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6102bb610576565b73ffffffffffffffffffffffffffffffffffffffff83811660009081526004602052604090205416158015906102ef575080155b15610326576040517fef00d19400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610374575073ffffffffffffffffffffffffffffffffffffffff8316155b80610393575073ffffffffffffffffffffffffffffffffffffffff8216155b156103ca576040517f74003c0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff838116600081815260046020908152604080832080549588167fffffffffffffffffffffffff0000000000000000000000000000000000000000968716811790915580845260058352928190208054909516841790945583519283528201527fd3c9a450c66e239bbb5e0bb3241df763f27ada229d58dde7490776c26436d3ec910160405180910390a1505050565b610476610576565b61048060006105c9565b565b61048a610576565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6104c3610576565b6104cd828261063e565b5050565b60035460009060ff166104e657506001919050565b6001548210801590610507575060025460015461050391906107fe565b8211155b92915050565b610515610576565b73ffffffffffffffffffffffffffffffffffffffff811661056a576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610573816105c9565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610480576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610561565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b81600003610678576040517fe290842b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000036106b2576040517fba32346200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051808201825283815260209081018390526001849055600283905581518481529081018390527fd69be7382d4da9206cec2b156106c174cd7a198f2d7a73be19026424e3d376ea910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461072e57600080fd5b919050565b60006020828403121561074557600080fd5b61074e8261070a565b9392505050565b8035801515811461072e57600080fd5b60008060006060848603121561077a57600080fd5b6107838461070a565b92506107916020850161070a565b915061079f60408501610755565b90509250925092565b6000602082840312156107ba57600080fd5b61074e82610755565b600080604083850312156107d657600080fd5b50508035926020909101359150565b6000602082840312156107f757600080fd5b5035919050565b80820180821115610507577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220b19ba935d391835521bf4ff8020a46cf7f7f912a9caa2080874920a41835c96164736f6c63430008140033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000639ebd317364962ce8f785d3d523118841c2b81f

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100df5760003560e01c8063c480e0391161008c578063eb906c0d11610066578063eb906c0d1461021e578063f190e42714610231578063f2fde38b1461026a578063f74032f01461027d57600080fd5b8063c480e039146101c2578063ce1753a9146101d5578063cffbc297146101e857600080fd5b8063715018a6116100bd578063715018a61461017f5780638da5cb5b14610187578063a34fa0ea146101a557600080fd5b8063510ae615146100e457806355394c351461014757806364ad167b1461016a575b600080fd5b61011d6100f2366004610733565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600560205260409020541690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b600154600254610155919082565b6040805192835260208301919091520161013e565b61017d610178366004610765565b6102b3565b005b61017d61046e565b60005473ffffffffffffffffffffffffffffffffffffffff1661011d565b6003546101b29060ff1681565b604051901515815260200161013e565b61017d6101d03660046107a8565b610482565b61017d6101e33660046107c3565b6104bb565b61011d6101f6366004610733565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6101b261022c3660046107e5565b6104d1565b61011d61023f366004610733565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600460205260409020541690565b61017d610278366004610733565b61050d565b61011d61028b366004610733565b60056020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6102bb610576565b73ffffffffffffffffffffffffffffffffffffffff83811660009081526004602052604090205416158015906102ef575080155b15610326576040517fef00d19400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610374575073ffffffffffffffffffffffffffffffffffffffff8316155b80610393575073ffffffffffffffffffffffffffffffffffffffff8216155b156103ca576040517f74003c0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff838116600081815260046020908152604080832080549588167fffffffffffffffffffffffff0000000000000000000000000000000000000000968716811790915580845260058352928190208054909516841790945583519283528201527fd3c9a450c66e239bbb5e0bb3241df763f27ada229d58dde7490776c26436d3ec910160405180910390a1505050565b610476610576565b61048060006105c9565b565b61048a610576565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b6104c3610576565b6104cd828261063e565b5050565b60035460009060ff166104e657506001919050565b6001548210801590610507575060025460015461050391906107fe565b8211155b92915050565b610515610576565b73ffffffffffffffffffffffffffffffffffffffff811661056a576040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600060048201526024015b60405180910390fd5b610573816105c9565b50565b60005473ffffffffffffffffffffffffffffffffffffffff163314610480576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610561565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b81600003610678576040517fe290842b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000036106b2576040517fba32346200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051808201825283815260209081018390526001849055600283905581518481529081018390527fd69be7382d4da9206cec2b156106c174cd7a198f2d7a73be19026424e3d376ea910160405180910390a15050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461072e57600080fd5b919050565b60006020828403121561074557600080fd5b61074e8261070a565b9392505050565b8035801515811461072e57600080fd5b60008060006060848603121561077a57600080fd5b6107838461070a565b92506107916020850161070a565b915061079f60408501610755565b90509250925092565b6000602082840312156107ba57600080fd5b61074e82610755565b600080604083850312156107d657600080fd5b50508035926020909101359150565b6000602082840312156107f757600080fd5b5035919050565b80820180821115610507577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fdfea2646970667358221220b19ba935d391835521bf4ff8020a46cf7f7f912a9caa2080874920a41835c96164736f6c63430008140033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000639ebd317364962ce8f785d3d523118841c2b81f

-----Decoded View---------------
Arg [0] : unlockWindowStart (uint256): 0
Arg [1] : unlockWindowDuration (uint256): 1
Arg [2] : isUnlockWindowActive_ (bool): False
Arg [3] : owner (address): 0x639ebD317364962Ce8F785D3d523118841C2b81F

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [3] : 000000000000000000000000639ebd317364962ce8f785d3d523118841c2b81f


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.