S Price: $0.067538 (-3.97%)
Gas: 55 Gwei

Contract

0xC7262D6Cd7d748Df8577D29f1e03059FF62b62CC

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To

There are no matching entries

1 Internal Transaction found.

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
568427592025-12-01 11:26:0656 days ago1764588366  Contract Creation0 S
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ConstantsManager

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
Yes with 200 runs

Other Settings:
cancun EvmVersion
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.27;

import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {Decimal} from "../common/Decimal.sol";

/**
 * @custom:security-contact [email protected]
 */
contract ConstantsManager is Ownable {
    // Minimum amount of stake for a validator, i.e., 500000 FTM
    uint256 public minSelfStake;
    // Maximum ratio of delegations a validator can have, say, 15 times of self-stake
    uint256 public maxDelegatedRatio;
    // The commission fee in percentage a validator will get from a delegation, e.g., 15%
    uint256 public validatorCommission;
    // The percentage of fees to burn, e.g., 20%
    uint256 public burntFeeShare;
    // The percentage of fees to transfer to treasury address, e.g., 10%
    uint256 public treasuryFeeShare;
    // The percentage of extra rewards to be burned, e.g. 60%
    uint256 public extraRewardsBurnRatio;
    // the number of epochs that undelegated stake is locked for
    uint256 public withdrawalPeriodEpochs;
    // the number of seconds that undelegated stake is locked for
    uint256 public withdrawalPeriodTime;
    // The max amount of rewards released by the network to its stakers every second
    uint256 public baseRewardPerSecond;
    // The max number of consecutive confirmed blocks a validator can be inactive before irreversibly deactivated
    uint256 public offlinePenaltyThresholdBlocksNum;
    // The max number of seconds a validator can be inactive before irreversibly deactivated
    uint256 public offlinePenaltyThresholdTime;

    // The number of epochs to calculate the average uptime ratio from, acceptable bound [10, 87600].
    // Is also the minimum number of epochs necessary for deactivation of offline validators.
    uint32 public averageUptimeEpochWindow;

    // Minimum average uptime ratio in fixed-point format; acceptable bounds [0,0.9].
    // Zero to disable validators deactivation by this metric.
    uint64 public minAverageUptime;

    // The address of the recipient that receives issued tokens
    // as a counterparty to the burnt S tokens
    address public issuedTokensRecipient;

    /**
     * @dev Given value is too small
     */
    error ValueTooSmall();

    /**
     * @dev Given value is too large
     */
    error ValueTooLarge();

    constructor(address owner) Ownable(owner) {}

    function updateMinSelfStake(uint256 v) external virtual onlyOwner {
        if (v < 100000 * Decimal.unit()) {
            revert ValueTooSmall();
        }
        if (v > 10000000 * Decimal.unit()) {
            revert ValueTooLarge();
        }
        minSelfStake = v;
    }

    function updateMaxDelegatedRatio(uint256 v) external onlyOwner {
        if (v < Decimal.unit()) {
            revert ValueTooSmall();
        }
        if (v > 31 * Decimal.unit()) {
            revert ValueTooLarge();
        }
        maxDelegatedRatio = v;
    }

    function updateValidatorCommission(uint256 v) external onlyOwner {
        if (v > Decimal.unit() / 2) {
            revert ValueTooLarge();
        }
        validatorCommission = v;
    }

    function updateBurntFeeShare(uint256 v) external onlyOwner {
        if (v + treasuryFeeShare > Decimal.unit()) {
            revert ValueTooLarge();
        }
        burntFeeShare = v;
    }

    function updateTreasuryFeeShare(uint256 v) external onlyOwner {
        if (v + burntFeeShare > Decimal.unit()) {
            revert ValueTooLarge();
        }
        treasuryFeeShare = v;
    }

    function updateExtraRewardsBurnRatio(uint256 v) external virtual onlyOwner {
        if (v > Decimal.unit()) {
            revert ValueTooLarge();
        }
        extraRewardsBurnRatio = v;
    }

    function updateWithdrawalPeriodEpochs(uint256 v) external onlyOwner {
        if (v < 2) {
            revert ValueTooSmall();
        }
        if (v > 100) {
            revert ValueTooLarge();
        }
        withdrawalPeriodEpochs = v;
    }

    function updateWithdrawalPeriodTime(uint256 v) external onlyOwner {
        if (v < 3600) {
            revert ValueTooSmall();
        }
        if (v > 30 * 86400) {
            revert ValueTooLarge();
        }
        withdrawalPeriodTime = v;
    }

    function updateBaseRewardPerSecond(uint256 v) external virtual onlyOwner {
        if (v > 32 * Decimal.unit()) {
            revert ValueTooLarge();
        }
        baseRewardPerSecond = v;
    }

    function updateOfflinePenaltyThresholdTime(uint256 v) external virtual onlyOwner {
        if (v < 86400) {
            revert ValueTooSmall();
        }
        if (v > 10 * 86400) {
            revert ValueTooLarge();
        }
        offlinePenaltyThresholdTime = v;
    }

    function updateOfflinePenaltyThresholdBlocksNum(uint256 v) external onlyOwner {
        if (v < 100) {
            revert ValueTooSmall();
        }
        if (v > 1000000) {
            revert ValueTooLarge();
        }
        offlinePenaltyThresholdBlocksNum = v;
    }

    function updateAverageUptimeEpochWindow(uint32 v) external onlyOwner {
        if (v < 10) {
            // needs to be long enough to allow permissible downtime for validators maintenance
            revert ValueTooSmall();
        }
        if (v > 87600) {
            revert ValueTooLarge();
        }
        averageUptimeEpochWindow = v;
    }

    function updateMinAverageUptime(uint64 v) external onlyOwner {
        if (v > ((Decimal.unit() * 9) / 10)) {
            revert ValueTooLarge();
        }
        minAverageUptime = v;
    }

    function updateIssuedTokensRecipient(address v) external onlyOwner {
        issuedTokensRecipient = v;
    }
}

// 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;
    }
}

File 4 of 4 : Decimal.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.27;

/**
 * @custom:security-contact [email protected]
 */
library Decimal {
    // unit is used for decimals, e.g. 0.123456
    function unit() internal pure returns (uint256) {
        return 1e18;
    }
}

Settings
{
  "evmVersion": "cancun",
  "optimizer": {
    "enabled": true,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"ValueTooLarge","type":"error"},{"inputs":[],"name":"ValueTooSmall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"averageUptimeEpochWindow","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseRewardPerSecond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burntFeeShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"extraRewardsBurnRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"issuedTokensRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDelegatedRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minAverageUptime","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSelfStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"offlinePenaltyThresholdBlocksNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"offlinePenaltyThresholdTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasuryFeeShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint32","name":"v","type":"uint32"}],"name":"updateAverageUptimeEpochWindow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"v","type":"uint256"}],"name":"updateBaseRewardPerSecond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"v","type":"uint256"}],"name":"updateBurntFeeShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"v","type":"uint256"}],"name":"updateExtraRewardsBurnRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"v","type":"address"}],"name":"updateIssuedTokensRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"v","type":"uint256"}],"name":"updateMaxDelegatedRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"v","type":"uint64"}],"name":"updateMinAverageUptime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"v","type":"uint256"}],"name":"updateMinSelfStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"v","type":"uint256"}],"name":"updateOfflinePenaltyThresholdBlocksNum","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"v","type":"uint256"}],"name":"updateOfflinePenaltyThresholdTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"v","type":"uint256"}],"name":"updateTreasuryFeeShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"v","type":"uint256"}],"name":"updateValidatorCommission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"v","type":"uint256"}],"name":"updateWithdrawalPeriodEpochs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"v","type":"uint256"}],"name":"updateWithdrawalPeriodTime","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"validatorCommission","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawalPeriodEpochs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawalPeriodTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052348015600e575f5ffd5b50604051610b8e380380610b8e833981016040819052602b9160b4565b806001600160a01b038116605857604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b605f816065565b505060df565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121560c3575f5ffd5b81516001600160a01b038116811460d8575f5ffd5b9392505050565b610aa2806100ec5f395ff3fe608060405234801561000f575f5ffd5b50600436106101db575f3560e01c8063754e92e311610109578063b6d9edd51161009e578063d475aa941161006e578063d475aa94146103e0578063d9a7c1f9146103e9578063f2fde38b146103f2578063f8d5177e14610405575f5ffd5b8063b6d9edd5146103b2578063b82b8427146103c5578063c5f530af146103ce578063c74dd621146103d7575f5ffd5b80638da5cb5b116100d95780638da5cb5b1461037d5780638f078bfa1461038d57806394c3e914146103a0578063a7786515146103a9575f5ffd5b8063754e92e31461031257806375840fab1461032557806381ffcdf114610357578063866c4b171461036a575f5ffd5b80632e84e8e61161017f5780635a68f01a1161014f5780635a68f01a146102e55780636348ebb8146102ee578063650acd6614610301578063715018a61461030a575f5ffd5b80632e84e8e6146102875780632ee711321461029a5780633fa22548146102ad578063455366a4146102d2575f5ffd5b80632265f284116101ba5780632265f28414610245578063230ec5f71461024e578063256dc572146102615780632bb9fe8d14610274575f5ffd5b8062cc7f83146101df578063165e2639146101fb5780631c25433714610210575b5f5ffd5b6101e8600b5481565b6040519081526020015b60405180910390f35b61020e61020936600461097b565b610418565b005b600c5461022c90640100000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101f2565b6101e860025481565b61020e61025c3660046109a9565b610499565b61020e61026f3660046109c0565b6104cf565b61020e6102823660046109a9565b610545565b61020e6102953660046109a9565b610587565b61020e6102a83660046109a9565b6105da565b600c546102bd9063ffffffff1681565b60405163ffffffff90911681526020016101f2565b61020e6102e03660046109a9565b61061a565b6101e8600a5481565b61020e6102fc3660046109a9565b61066e565b6101e860075481565b61020e6106c3565b61020e6103203660046109e3565b6106d6565b600c5461033f90600160601b90046001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b61020e6103653660046109a9565b61070b565b61020e6103783660046109a9565b610774565b5f546001600160a01b031661033f565b61020e61039b3660046109a9565b6107eb565b6101e860055481565b6101e860035481565b61020e6103c03660046109a9565b61083c565b6101e860085481565b6101e860015481565b6101e860045481565b6101e860065481565b6101e860095481565b61020e6104003660046109e3565b61087c565b61020e6104133660046109a9565b6108be565b610420610900565b600a610435670de0b6b3a76400006009610a1d565b61043f9190610a3a565b8167ffffffffffffffff16111561046957604051632ad907fb60e01b815260040160405180910390fd5b600c805467ffffffffffffffff909216640100000000026bffffffffffffffff0000000019909216919091179055565b6104a1610900565b670de0b6b3a76400008111156104ca57604051632ad907fb60e01b815260040160405180910390fd5b600655565b6104d7610900565b600a8163ffffffff1610156104ff57604051639a721da360e01b815260040160405180910390fd5b620156308163ffffffff16111561052957604051632ad907fb60e01b815260040160405180910390fd5b600c805463ffffffff191663ffffffff92909216919091179055565b61054d610900565b670de0b6b3a76400006005546105639083610a59565b111561058257604051632ad907fb60e01b815260040160405180910390fd5b600455565b61058f610900565b60648110156105b157604051639a721da360e01b815260040160405180910390fd5b620f42408111156105d557604051632ad907fb60e01b815260040160405180910390fd5b600a55565b6105e2610900565b6105f56002670de0b6b3a7640000610a3a565b81111561061557604051632ad907fb60e01b815260040160405180910390fd5b600355565b610622610900565b610e1081101561064557604051639a721da360e01b815260040160405180910390fd5b62278d0081111561066957604051632ad907fb60e01b815260040160405180910390fd5b600855565b610676610900565b6201518081101561069a57604051639a721da360e01b815260040160405180910390fd5b620d2f008111156106be57604051632ad907fb60e01b815260040160405180910390fd5b600b55565b6106cb610900565b6106d45f61092c565b565b6106de610900565b600c80546001600160a01b03909216600160601b026bffffffffffffffffffffffff909216919091179055565b610713610900565b670de0b6b3a764000081101561073c57604051639a721da360e01b815260040160405180910390fd5b61074f670de0b6b3a7640000601f610a1d565b81111561076f57604051632ad907fb60e01b815260040160405180910390fd5b600255565b61077c610900565b610791670de0b6b3a7640000620186a0610a1d565b8110156107b157604051639a721da360e01b815260040160405180910390fd5b6107c6670de0b6b3a764000062989680610a1d565b8111156107e657604051632ad907fb60e01b815260040160405180910390fd5b600155565b6107f3610900565b600281101561081557604051639a721da360e01b815260040160405180910390fd5b606481111561083757604051632ad907fb60e01b815260040160405180910390fd5b600755565b610844610900565b610857670de0b6b3a76400006020610a1d565b81111561087757604051632ad907fb60e01b815260040160405180910390fd5b600955565b610884610900565b6001600160a01b0381166108b257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6108bb8161092c565b50565b6108c6610900565b670de0b6b3a76400006004546108dc9083610a59565b11156108fb57604051632ad907fb60e01b815260040160405180910390fd5b600555565b5f546001600160a01b031633146106d45760405163118cdaa760e01b81523360048201526024016108a9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121561098b575f5ffd5b813567ffffffffffffffff811681146109a2575f5ffd5b9392505050565b5f602082840312156109b9575f5ffd5b5035919050565b5f602082840312156109d0575f5ffd5b813563ffffffff811681146109a2575f5ffd5b5f602082840312156109f3575f5ffd5b81356001600160a01b03811681146109a2575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a3457610a34610a09565b92915050565b5f82610a5457634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a3457610a34610a0956fea2646970667358221220b3d86c1328aca45393e8769dcacb082c5afeb5509a47e80e109f0774a1c2147864736f6c634300081b0033000000000000000000000000372798c2df95a615a96aa1b3ba2abacac0da6eac

Deployed Bytecode

0x608060405234801561000f575f5ffd5b50600436106101db575f3560e01c8063754e92e311610109578063b6d9edd51161009e578063d475aa941161006e578063d475aa94146103e0578063d9a7c1f9146103e9578063f2fde38b146103f2578063f8d5177e14610405575f5ffd5b8063b6d9edd5146103b2578063b82b8427146103c5578063c5f530af146103ce578063c74dd621146103d7575f5ffd5b80638da5cb5b116100d95780638da5cb5b1461037d5780638f078bfa1461038d57806394c3e914146103a0578063a7786515146103a9575f5ffd5b8063754e92e31461031257806375840fab1461032557806381ffcdf114610357578063866c4b171461036a575f5ffd5b80632e84e8e61161017f5780635a68f01a1161014f5780635a68f01a146102e55780636348ebb8146102ee578063650acd6614610301578063715018a61461030a575f5ffd5b80632e84e8e6146102875780632ee711321461029a5780633fa22548146102ad578063455366a4146102d2575f5ffd5b80632265f284116101ba5780632265f28414610245578063230ec5f71461024e578063256dc572146102615780632bb9fe8d14610274575f5ffd5b8062cc7f83146101df578063165e2639146101fb5780631c25433714610210575b5f5ffd5b6101e8600b5481565b6040519081526020015b60405180910390f35b61020e61020936600461097b565b610418565b005b600c5461022c90640100000000900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101f2565b6101e860025481565b61020e61025c3660046109a9565b610499565b61020e61026f3660046109c0565b6104cf565b61020e6102823660046109a9565b610545565b61020e6102953660046109a9565b610587565b61020e6102a83660046109a9565b6105da565b600c546102bd9063ffffffff1681565b60405163ffffffff90911681526020016101f2565b61020e6102e03660046109a9565b61061a565b6101e8600a5481565b61020e6102fc3660046109a9565b61066e565b6101e860075481565b61020e6106c3565b61020e6103203660046109e3565b6106d6565b600c5461033f90600160601b90046001600160a01b031681565b6040516001600160a01b0390911681526020016101f2565b61020e6103653660046109a9565b61070b565b61020e6103783660046109a9565b610774565b5f546001600160a01b031661033f565b61020e61039b3660046109a9565b6107eb565b6101e860055481565b6101e860035481565b61020e6103c03660046109a9565b61083c565b6101e860085481565b6101e860015481565b6101e860045481565b6101e860065481565b6101e860095481565b61020e6104003660046109e3565b61087c565b61020e6104133660046109a9565b6108be565b610420610900565b600a610435670de0b6b3a76400006009610a1d565b61043f9190610a3a565b8167ffffffffffffffff16111561046957604051632ad907fb60e01b815260040160405180910390fd5b600c805467ffffffffffffffff909216640100000000026bffffffffffffffff0000000019909216919091179055565b6104a1610900565b670de0b6b3a76400008111156104ca57604051632ad907fb60e01b815260040160405180910390fd5b600655565b6104d7610900565b600a8163ffffffff1610156104ff57604051639a721da360e01b815260040160405180910390fd5b620156308163ffffffff16111561052957604051632ad907fb60e01b815260040160405180910390fd5b600c805463ffffffff191663ffffffff92909216919091179055565b61054d610900565b670de0b6b3a76400006005546105639083610a59565b111561058257604051632ad907fb60e01b815260040160405180910390fd5b600455565b61058f610900565b60648110156105b157604051639a721da360e01b815260040160405180910390fd5b620f42408111156105d557604051632ad907fb60e01b815260040160405180910390fd5b600a55565b6105e2610900565b6105f56002670de0b6b3a7640000610a3a565b81111561061557604051632ad907fb60e01b815260040160405180910390fd5b600355565b610622610900565b610e1081101561064557604051639a721da360e01b815260040160405180910390fd5b62278d0081111561066957604051632ad907fb60e01b815260040160405180910390fd5b600855565b610676610900565b6201518081101561069a57604051639a721da360e01b815260040160405180910390fd5b620d2f008111156106be57604051632ad907fb60e01b815260040160405180910390fd5b600b55565b6106cb610900565b6106d45f61092c565b565b6106de610900565b600c80546001600160a01b03909216600160601b026bffffffffffffffffffffffff909216919091179055565b610713610900565b670de0b6b3a764000081101561073c57604051639a721da360e01b815260040160405180910390fd5b61074f670de0b6b3a7640000601f610a1d565b81111561076f57604051632ad907fb60e01b815260040160405180910390fd5b600255565b61077c610900565b610791670de0b6b3a7640000620186a0610a1d565b8110156107b157604051639a721da360e01b815260040160405180910390fd5b6107c6670de0b6b3a764000062989680610a1d565b8111156107e657604051632ad907fb60e01b815260040160405180910390fd5b600155565b6107f3610900565b600281101561081557604051639a721da360e01b815260040160405180910390fd5b606481111561083757604051632ad907fb60e01b815260040160405180910390fd5b600755565b610844610900565b610857670de0b6b3a76400006020610a1d565b81111561087757604051632ad907fb60e01b815260040160405180910390fd5b600955565b610884610900565b6001600160a01b0381166108b257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6108bb8161092c565b50565b6108c6610900565b670de0b6b3a76400006004546108dc9083610a59565b11156108fb57604051632ad907fb60e01b815260040160405180910390fd5b600555565b5f546001600160a01b031633146106d45760405163118cdaa760e01b81523360048201526024016108a9565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f6020828403121561098b575f5ffd5b813567ffffffffffffffff811681146109a2575f5ffd5b9392505050565b5f602082840312156109b9575f5ffd5b5035919050565b5f602082840312156109d0575f5ffd5b813563ffffffff811681146109a2575f5ffd5b5f602082840312156109f3575f5ffd5b81356001600160a01b03811681146109a2575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a3457610a34610a09565b92915050565b5f82610a5457634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a3457610a34610a0956fea2646970667358221220b3d86c1328aca45393e8769dcacb082c5afeb5509a47e80e109f0774a1c2147864736f6c634300081b0033

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

000000000000000000000000372798c2df95a615a96aa1b3ba2abacac0da6eac

-----Decoded View---------------
Arg [0] : owner (address): 0x372798c2dF95a615a96AA1b3bA2AbaCAC0da6eaC

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000372798c2df95a615a96aa1b3ba2abacac0da6eac


Block Transaction Gas Used Reward
view all blocks ##produced##

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.