FRAX Price: $0.98 (+1.42%)

Contract

0xF5cA906f05cafa944c27c6881bed3DFd3a785b6A

Overview

FRAX Balance | FXTL Balance

0 FRAX | 0 FXTL

FRAX Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Bulk Set Delegat...42411982024-05-09 22:18:27624 days ago1715293107IN
0xF5cA906f...d3a785b6A
0 FRAX0.000073130.10000025
Set Delegation23192562024-03-26 10:33:43669 days ago1711449223IN
0xF5cA906f...d3a785b6A
0 FRAX0.000002980.00001692
Set Delegation23192352024-03-26 10:33:01669 days ago1711449181IN
0xF5cA906f...d3a785b6A
0 FRAX0.000008350.10000025
Set Delegation F...22537642024-03-24 22:10:39670 days ago1711318239IN
0xF5cA906f...d3a785b6A
0 FRAX0.00000210.00010025
Bulk Set Delegat...22143712024-03-24 0:17:33671 days ago1711239453IN
0xF5cA906f...d3a785b6A
0 FRAX0.001103281.50000025
Bulk Set Delegat...18257862024-03-15 0:24:43680 days ago1710462283IN
0xF5cA906f...d3a785b6A
0 FRAX0.004267211.50000025
Add Frax Contrib...18253142024-03-15 0:08:59680 days ago1710461339IN
0xF5cA906f...d3a785b6A
0 FRAX0.000009790.10000025

View more zero value Internal Transactions in Advanced View mode

Advanced mode:

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DelegationRegistry

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 10000 runs

Other Settings:
paris EvmVersion
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.8.0;

// ====================================================================
// |     ______                   _______                             |
// |    / _____________ __  __   / ____(_____  ____ _____  ________   |
// |   / /_  / ___/ __ `| |/_/  / /_  / / __ \/ __ `/ __ \/ ___/ _ \  |
// |  / __/ / /  / /_/ _>  <   / __/ / / / / / /_/ / / / / /__/  __/  |
// | /_/   /_/   \__,_/_/|_|  /_/   /_/_/ /_/\__,_/_/ /_/\___/\___/   |
// |                                                                  |
// ====================================================================
// ======================= Delegation Registry ========================
// ====================================================================

import { OwnedV2 } from "src/contracts/VestedFXS-and-Flox/VestedFXS/OwnedV2.sol";
import { IDelegationRegistryEvents } from "./IDelegationRegistryEvents.sol";

/**
 * @title DelegationRegistry
 * @author Frax Finance
 * @notice The DelegationRegistry contract is used to manage delegations of Frax incentives and points.
 */
contract DelegationRegistry is OwnedV2, IDelegationRegistryEvents {
    mapping(address => bool) public isFraxContributor;
    mapping(address => bool) public selfManagingDelegations;
    mapping(address => bool) public delegationManagementDisabled;
    mapping(address => address) internal delegations;

    /**
     * @notice Used to initialize the smart contract.
     * @dev The initial owner is set as the deployer of the smart contract.
     */
    constructor() OwnedV2(msg.sender) {}

    /**
     * @notice Sets the delegation for the caller.
     * @dev Once the delegation is set for self, the Frax contributors and delegatees can no longer manage the
     *  delegation of that address.
     * @param delegatee Address to delegate to
     */
    function setDelegationForSelf(address delegatee) external {
        if (!selfManagingDelegations[msg.sender]) selfManagingDelegations[msg.sender] = true;

        address previousDelegatee = delegations[msg.sender];
        delegations[msg.sender] = delegatee;
        emit DelegationUpdated(msg.sender, previousDelegatee, delegatee);
    }

    /**
     * @notice Removes the delegation for the caller.
     * @dev Once the delegation is removed for self, the Frax contributors and delegatees can no longer manage the
     *  delegation of that address.
     * @dev The delegation is removed by setting the delegatee to the zero address.
     */
    function removeDelegationForSelf() external {
        if (!selfManagingDelegations[msg.sender]) selfManagingDelegations[msg.sender] = true;

        address delegatee = delegations[msg.sender];
        delete delegations[msg.sender];
        emit DelegationUpdated(msg.sender, delegatee, address(0));
    }

    /**
     * @notice Disables self-managing delegations for the caller.
     * @dev Once the self-managing delegations are disabled for the caller, the Frax contributors and delegatees can
     *  manage the delegations of that address.
     */
    function disableSelfManagingDelegations() external {
        if (!selfManagingDelegations[msg.sender]) revert SelfManagingDelegationsDisabled();
        selfManagingDelegations[msg.sender] = false;
    }

    /**
     * @notice Disables delegation management for the caller.
     * @dev Once the delegation management is disabled for the caller, the Frax contributors and delegatees can no
     *  longer manage the delegations of that address. The delegations can not be managed by the caller either.
     * @dev The operation will be reverted if the delegation management is already disabled for the caller.
     */
    function disableDelegationManagement() external {
        if (delegationManagementDisabled[msg.sender]) revert DelegationManagementDisabled();
        delegationManagementDisabled[msg.sender] = true;
    }

    /**
     * @notice Sets the delegation for a delegator.
     * @dev This can be used by Frax contributors and delegatees to manage the delegations of other addresses until the
     *  delegator sets or removes the delegation for self.
     * @param delegator Address to set the delegation for
     * @param delegatee Address to delegate to
     */
    function setDelegation(address delegator, address delegatee) external {
        if (selfManagingDelegations[delegator]) revert SelfManagingDelegations();
        if (!isFraxContributor[msg.sender] && delegations[delegator] != msg.sender) {
            revert NotFraxContributorOrDelegatee();
        }
        if (delegationManagementDisabled[delegator]) revert DelegationManagementDisabled();

        address previousDelegatee = delegations[delegator];
        delegations[delegator] = delegatee;
        emit DelegationUpdated(delegator, previousDelegatee, delegatee);
    }

    /**
     * @notice Removes the delegation for a delegator.
     * @dev This can be used by Frax contributors and delegatees to remove the delegations of other addresses until the
     *  delegator sets or removes the delegation for self.
     * @dev The delegation is removed by setting the delegatee to the zero address.
     * @param delegator Address to remove the delegation for
     */
    function removeDelegation(address delegator) external {
        if (selfManagingDelegations[delegator]) revert SelfManagingDelegations();
        if (!isFraxContributor[msg.sender] && delegations[delegator] != msg.sender) {
            revert NotFraxContributorOrDelegatee();
        }
        if (delegationManagementDisabled[delegator]) revert DelegationManagementDisabled();

        address delegatee = delegations[delegator];
        delete delegations[delegator];
        emit DelegationUpdated(delegator, delegatee, address(0));
    }

    /**
     * @notice Sets delegations for multiple delegators as Frax contributor.
     * @dev This can be used by Frax contributors to manage the delegations of multiple addresses until they set or
     *  remove delegations for self.
     * @dev The `delegators` and `delegatees` arrays must be the same length.
     * @dev If any of the `delegators` are self-managing, the operation will be reverted.
     * @param delegators An array of addresses to set the delegations for
     * @param delegatees An array of addresses to delegate to
     */
    function bulkSetDelegationsAsFraxContributor(address[] memory delegators, address[] memory delegatees) external {
        _onlyFraxContributor();
        if (delegators.length != delegatees.length) revert ArrayLengthMismatch();

        address previousDelegatee;
        for (uint256 i; i < delegators.length; ) {
            if (selfManagingDelegations[delegators[i]]) revert SelfManagingDelegations();
            if (delegationManagementDisabled[delegators[i]]) revert DelegationManagementDisabled();

            previousDelegatee = delegations[delegators[i]];
            delegations[delegators[i]] = delegatees[i];
            emit DelegationUpdated(delegators[i], previousDelegatee, delegatees[i]);

            unchecked {
                ++i;
            }
        }
    }

    /**
     * @notice Removes delegations for multiple delegators as Frax contributor.
     * @dev This can be used by Frax contributors to remove the delegations of multiple addresses until they set or
     *  remove the delegations for self.
     * @dev If any of the `delegators` are self-managing, the operation will be reverted.
     * @param delegators An array of addresses to remove the delegations for
     */
    function bulkRemoveDelegationsAsFraxContributor(address[] memory delegators) external {
        _onlyFraxContributor();

        address delegatee;
        for (uint256 i; i < delegators.length; ) {
            if (selfManagingDelegations[delegators[i]]) revert SelfManagingDelegations();
            if (delegationManagementDisabled[delegators[i]]) revert DelegationManagementDisabled();

            delegatee = delegations[delegators[i]];
            delete delegations[delegators[i]];
            emit DelegationUpdated(delegators[i], delegatee, address(0));

            unchecked {
                ++i;
            }
        }
    }

    /**
     * @notice Sets delegations for multiple delegators as delegatee.
     * @dev This can be used by delegatee to manage the delegations of multiple addresses until they set or remove
     *  delegations for self.
     * @dev The `delegators` and `delegatees` arrays must be the same length.
     * @dev If any of the `delegators` are self-managing, the operation will be reverted.
     * @param delegators An array of addresses to set the delegations for
     * @param delegatees An array of addresses to delegate to
     */
    function bulkSetDelegationsAsDelegatee(address[] memory delegators, address[] memory delegatees) external {
        if (delegators.length != delegatees.length) revert ArrayLengthMismatch();

        address previousDelegatee;
        for (uint256 i; i < delegators.length; ) {
            if (selfManagingDelegations[delegators[i]]) revert SelfManagingDelegations();
            if (msg.sender != delegations[delegators[i]]) revert NotDelegatee();
            if (delegationManagementDisabled[delegators[i]]) revert DelegationManagementDisabled();

            previousDelegatee = delegations[delegators[i]];
            delegations[delegators[i]] = delegatees[i];
            emit DelegationUpdated(delegators[i], previousDelegatee, delegatees[i]);

            unchecked {
                ++i;
            }
        }
    }

    /**
     * @notice Removes delegations for multiple delegators as delegatee.
     * @dev This can be used by delegatee to remove the delegations of multiple addresses until they set or remove the
     *  delegations for self.
     * @dev If any of the `delegators` are self-managing, the operation will be reverted.
     * @param delegators An array of addresses to remove the delegations for
     */
    function bulkRemoveDelegationsAsDelegatee(address[] memory delegators) external {
        address delegatee;
        for (uint256 i; i < delegators.length; ) {
            if (selfManagingDelegations[delegators[i]]) revert SelfManagingDelegations();
            if (msg.sender != delegations[delegators[i]]) revert NotDelegatee();
            if (delegationManagementDisabled[delegators[i]]) revert DelegationManagementDisabled();

            delegatee = delegations[delegators[i]];
            delete delegations[delegators[i]];
            emit DelegationUpdated(delegators[i], delegatee, address(0));

            unchecked {
                ++i;
            }
        }
    }

    /**
     * @notice Adds an address as a Frax contributor.
     * @dev This can only be called by the owner of the smart contract.
     * @dev The operation will be reverted if the address is already a Frax contributor.
     * @param contributor Address to add as a Frax contributor
     */
    function addFraxContributor(address contributor) external {
        _onlyOwner();

        if (isFraxContributor[contributor]) revert AlreadyFraxContributor();

        isFraxContributor[contributor] = true;
        emit FraxContributorAdded(contributor);
    }

    /**
     * @notice Removes an address as a Frax contributor.
     * @dev This can only be called by the owner of the smart contract.
     * @dev The operation will be reverted if the address is not a Frax contributor.
     * @param contributor Address to remove as a Frax contributor
     */
    function removeFraxContributor(address contributor) external {
        _onlyOwner();

        if (!isFraxContributor[contributor]) revert NotFraxContributor();

        isFraxContributor[contributor] = false;
        emit FraxContributorRemoved(contributor);
    }

    /**
     * @notice Re-enables delegation management for an address.
     * @dev This can only be called by a Frax contributor.
     * @dev The operation will be reverted if the delegation management is already enabled for the address.
     * @dev This function is intended to be called in the occasion that the delegation management was disabled by
     *  mistake or if the delegatee address was compromised.
     * @dev If you require to re-enable the delegation management for an address, please contact the Frax team.
     * @param delegator Address to re-enable the delegation management for
     */
    function reenableDelegationManagement(address delegator) external {
        _onlyFraxContributor();

        if (!delegationManagementDisabled[delegator]) revert DelegationManagementEnabled();

        delegationManagementDisabled[delegator] = false;
    }

    /**
     * @notice Gets the delegation for a delegator.
     * @dev If the delegation is not set for the delegator, the delegator is the delegatee.
     * @param delegator Address to get the delegation for
     * @return Address that the delegator is delegating to
     */
    function delegationsOf(address delegator) external view returns (address) {
        address delegatee;

        delegatee = delegations[delegator] == address(0) ? delegator : delegations[delegator];

        return delegatee;
    }

    /**
     * @notice Gets the delegations for multiple delegators.
     * @dev If the delegation is not set for a delegator, the delegator is the delegatee.
     * @param delegators An array of addresses to get the delegations for
     * @return An array of addresses that the delegators are delegating to
     */
    function bulkDelegationsOf(address[] memory delegators) external view returns (address[] memory) {
        address[] memory delegatees = new address[](delegators.length);

        for (uint256 i; i < delegators.length; ) {
            delegatees[i] = delegations[delegators[i]] == address(0) ? delegators[i] : delegations[delegators[i]];

            unchecked {
                ++i;
            }
        }

        return delegatees;
    }

    /**
     * @notice Checks if the msg sender is a Frax contributor.
     * @dev It the msg.sender is not a Frax contributor, the operation will be reverted.
     */
    function _onlyFraxContributor() internal view {
        if (!isFraxContributor[msg.sender]) revert NotFraxContributor();
    }

    /// @notice The address is already a Frax contributor
    error AlreadyFraxContributor();

    /// @notice The array lengths are mismatched
    error ArrayLengthMismatch();

    /// @notice The delegation management is already disabled
    error DelegationManagementDisabled();

    /// @notice The delegation management is already enabled
    error DelegationManagementEnabled();

    /// @notice Only the delegatee is allowed to perform this action
    error NotDelegatee();

    /// @notice Only a Frax contributor is allowed to perform this action
    error NotFraxContributor();

    /// @notice Only a Frax contributor or delegatee is allowed to perform this action
    error NotFraxContributorOrDelegatee();

    /// @notice The delegator is managing their own delegations and is the only address allowed to perform this action
    error SelfManagingDelegations();

    /// @notice The delegator is not managing their own delegations
    error SelfManagingDelegationsDisabled();
}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.8.0;

// https://docs.synthetix.io/contracts/Owned
contract OwnedV2 {
    error OwnerCannotBeZero();
    error InvalidOwnershipAcceptance();
    error OnlyOwner();

    address public owner;
    address public nominatedOwner;

    constructor(address _owner) {
        // require(_owner != address(0), "Owner address cannot be 0");
        if (_owner == address(0)) revert OwnerCannotBeZero();
        owner = _owner;
        emit OwnerChanged(address(0), _owner);
    }

    function nominateNewOwner(address _owner) external onlyOwner {
        nominatedOwner = _owner;
        emit OwnerNominated(_owner);
    }

    function acceptOwnership() external {
        // require(msg.sender == nominatedOwner, "You must be nominated before you can accept ownership");
        if (msg.sender != nominatedOwner) revert InvalidOwnershipAcceptance();
        emit OwnerChanged(owner, nominatedOwner);
        owner = nominatedOwner;
        nominatedOwner = address(0);
    }

    modifier onlyOwner() {
        // require(msg.sender == owner, "Only the contract owner may perform this action");
        if (msg.sender != owner) revert OnlyOwner();
        _;
    }

    function _onlyOwner() internal view {
        if (msg.sender != owner) revert OnlyOwner();
    }

    event OwnerNominated(address newOwner);
    event OwnerChanged(address oldOwner, address newOwner);
}

File 3 of 3 : IDelegationRegistryEvents.sol
// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.8.0;

// ====================================================================
// |     ______                   _______                             |
// |    / _____________ __  __   / ____(_____  ____ _____  ________   |
// |   / /_  / ___/ __ `| |/_/  / /_  / / __ \/ __ `/ __ \/ ___/ _ \  |
// |  / __/ / /  / /_/ _>  <   / __/ / / / / / /_/ / / / / /__/  __/  |
// | /_/   /_/   \__,_/_/|_|  /_/   /_/_/ /_/\__,_/_/ /_/\___/\___/   |
// |                                                                  |
// ====================================================================
// ==================== IDelegationRegistryEvents =====================
// ====================================================================

/**
 * @title IDelegationRegistryEvents
 * @author Frax Finance
 * @notice A collection of events used by the Flox DelegationRegistry
 */
contract IDelegationRegistryEvents {
    /**
     * @notice Emitted when a delegator updates their delegation settings.
     * @param delegator Address delegating their points
     * @param previousDelegatee Address that the delegator delegated to before
     * @param newDelegatee Address that the delegator is delegating to now
     */
    event DelegationUpdated(address indexed delegator, address indexed previousDelegatee, address indexed newDelegatee);
    /**
     * @notice Emitted when a new address is added as a Frax Contributor.
     * @param contributor The address added as the contributor
     */
    event FraxContributorAdded(address indexed contributor);
    /**
     * @notice Emitted when an address is removed as a Frax Contributor.
     * @param contributor The address removed as the contributor
     */
    event FraxContributorRemoved(address indexed contributor);
}

Settings
{
  "remappings": [
    "frax-std/=lib/frax-standard-solidity/src/",
    "@eth-optimism/=lib/optimism/packages/",
    "lib/optimism/packages/contracts-bedrock:src/=lib/optimism/packages/contracts-bedrock/src/",
    "src/=src/",
    "@openzeppelin-4/=node_modules/@openzeppelin-4/",
    "@openzeppelin-5/=node_modules/@openzeppelin-5/",
    "@openzeppelin/=node_modules/@openzeppelin/",
    "@rari-capital/=node_modules/@rari-capital/",
    "clones-with-immutable-args/=lib/optimism/packages/contracts-bedrock/lib/clones-with-immutable-args/src/",
    "ds-test/=lib/frax-standard-solidity/lib/forge-std/lib/ds-test/src/",
    "forge-std/=lib/frax-standard-solidity/lib/forge-std/src/",
    "frax-standard-solidity/=lib/frax-standard-solidity/src/",
    "kontrol-cheatcodes/=lib/optimism/packages/contracts-bedrock/lib/kontrol-cheatcodes/src/",
    "lib-keccak/=lib/optimism/packages/contracts-bedrock/lib/lib-keccak/contracts/",
    "openzeppelin-contracts-upgradeable/=lib/optimism/packages/contracts-bedrock/lib/openzeppelin-contracts-upgradeable/",
    "openzeppelin-contracts/=lib/optimism/packages/contracts-bedrock/lib/openzeppelin-contracts/",
    "optimism/=lib/optimism/",
    "safe-contracts/=lib/optimism/packages/contracts-bedrock/lib/safe-contracts/contracts/",
    "solady/=lib/optimism/packages/contracts-bedrock/lib/solady/",
    "solidity-bytes-utils/=lib/frax-standard-solidity/lib/solidity-bytes-utils/",
    "solmate/=lib/optimism/packages/contracts-bedrock/lib/solmate/src/"
  ],
  "optimizer": {
    "enabled": true,
    "runs": 10000
  },
  "metadata": {
    "useLiteralContent": false,
    "bytecodeHash": "ipfs",
    "appendCBOR": true
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "evmVersion": "paris",
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyFraxContributor","type":"error"},{"inputs":[],"name":"ArrayLengthMismatch","type":"error"},{"inputs":[],"name":"DelegationManagementDisabled","type":"error"},{"inputs":[],"name":"DelegationManagementEnabled","type":"error"},{"inputs":[],"name":"InvalidOwnershipAcceptance","type":"error"},{"inputs":[],"name":"NotDelegatee","type":"error"},{"inputs":[],"name":"NotFraxContributor","type":"error"},{"inputs":[],"name":"NotFraxContributorOrDelegatee","type":"error"},{"inputs":[],"name":"OnlyOwner","type":"error"},{"inputs":[],"name":"OwnerCannotBeZero","type":"error"},{"inputs":[],"name":"SelfManagingDelegations","type":"error"},{"inputs":[],"name":"SelfManagingDelegationsDisabled","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"previousDelegatee","type":"address"},{"indexed":true,"internalType":"address","name":"newDelegatee","type":"address"}],"name":"DelegationUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contributor","type":"address"}],"name":"FraxContributorAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contributor","type":"address"}],"name":"FraxContributorRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnerNominated","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contributor","type":"address"}],"name":"addFraxContributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"}],"name":"bulkDelegationsOf","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"}],"name":"bulkRemoveDelegationsAsDelegatee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"}],"name":"bulkRemoveDelegationsAsFraxContributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"},{"internalType":"address[]","name":"delegatees","type":"address[]"}],"name":"bulkSetDelegationsAsDelegatee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"delegators","type":"address[]"},{"internalType":"address[]","name":"delegatees","type":"address[]"}],"name":"bulkSetDelegationsAsFraxContributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"delegationManagementDisabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"delegationsOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableDelegationManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableSelfManagingDelegations","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFraxContributor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"nominateNewOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"nominatedOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"reenableDelegationManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"}],"name":"removeDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeDelegationForSelf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"contributor","type":"address"}],"name":"removeFraxContributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"selfManagingDelegations","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"address","name":"delegatee","type":"address"}],"name":"setDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"setDelegationForSelf","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50338061003057604051639b15e16f60e01b815260040160405180910390fd5b600080546001600160a01b0319166001600160a01b03831690811782556040805192835260208301919091527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a150611ac3806100976000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c806394b41f91116100d8578063aaa54e0d1161008c578063dbc99d4b11610066578063dbc99d4b14610313578063f0466c7314610336578063feae99c51461034957600080fd5b8063aaa54e0d146102ca578063b41a5258146102dd578063d8d9ec00146102f057600080fd5b8063a1ac4e85116100bd578063a1ac4e851461029c578063a358626c146102af578063a7e68146146102c257600080fd5b806394b41f9114610276578063989d1a871461028957600080fd5b806353a47bb71161013a57806379ba50971161011457806379ba5097146102285780637f880ec7146102305780638da5cb5b1461026357600080fd5b806353a47bb7146101dd5780635f8cdba61461020d5780636889fae21461021557600080fd5b806325ce9a371161016b57806325ce9a37146101af5780634e271772146101b7578063513e0736146101ca57600080fd5b806302b8a21d146101875780631627540c1461019c575b600080fd5b61019a610195366004611830565b610369565b005b61019a6101aa366004611830565b610411565b61019a6104c1565b61019a6101c5366004611830565b610523565b61019a6101d836600461193d565b61059e565b6001546101f0906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61019a610822565b6101f0610223366004611830565b6108c4565b61019a610911565b61025361023e366004611830565b60046020526000908152604090205460ff1681565b6040519015158152602001610204565b6000546101f0906001600160a01b031681565b61019a61028436600461193d565b6109df565b61019a610297366004611830565b610bf0565b61019a6102aa36600461197a565b610c97565b61019a6102bd36600461197a565b610f97565b61019a611223565b61019a6102d83660046119de565b611289565b61019a6102eb366004611830565b61141c565b6102536102fe366004611830565b60026020526000908152604090205460ff1681565b610253610321366004611830565b60036020526000908152604090205460ff1681565b61019a610344366004611830565b6114bf565b61035c61035736600461193d565b61164a565b6040516102049190611a11565b3360009081526003602052604090205460ff1661039b57336000908152600360205260409020805460ff191660011790555b3360008181526005602052604080822080546001600160a01b038681167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093559251921693909284927f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c9190a45050565b6000546001600160a01b03163314610455576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b3360009081526003602052604090205460ff1661050a576040517fed6a321200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600360205260409020805460ff19169055565b61052b611785565b6001600160a01b03811660009081526004602052604090205460ff1661057d576040517f20f57baf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000805b825181101561081d57600360008483815181106105c1576105c1611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161561061f576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600084838151811061063557610635611a5e565b6020908102919091018101516001600160a01b0390811683529082019290925260400160002054163314610695576040517f2b590dc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008483815181106106ab576106ab611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610709576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600084838151811061071f5761071f611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b031691506005600084838151811061077357610773611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154906001600160a01b03021916905560006001600160a01b0316826001600160a01b03168483815181106107d8576107d8611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a46001016105a2565b505050565b3360009081526003602052604090205460ff1661085457336000908152600360205260409020805460ff191660011790555b3360008181526005602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811690915590516001600160a01b039091169283917f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c908490a450565b6001600160a01b03818116600090815260056020526040812054909182911615610908576001600160a01b038084166000908152600560205260409020541661090a565b825b9392505050565b6001546001600160a01b03163314610955576040517fd74b334e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b03841617909155169055565b6109e7611785565b6000805b825181101561081d5760036000848381518110610a0a57610a0a611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610a68576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60046000848381518110610a7e57610a7e611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610adc576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056000848381518110610af257610af2611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b0316915060056000848381518110610b4657610b46611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154906001600160a01b03021916905560006001600160a01b0316826001600160a01b0316848381518110610bab57610bab611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a46001016109eb565b610bf86117d0565b6001600160a01b03811660009081526002602052604090205460ff1615610c4b576040517f70b9b0d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600081815260026020526040808220805460ff19166001179055517fe2d01cc637b0a35c9a2dde2789da012cf2b5d14caa779d280c35209b48c31cf29190a250565b8051825114610cd2576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8351811015610f915760036000858381518110610cf557610cf5611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610d53576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056000858381518110610d6957610d69611a5e565b6020908102919091018101516001600160a01b0390811683529082019290925260400160002054163314610dc9576040517f2b590dc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60046000858381518110610ddf57610ddf611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610e3d576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056000858381518110610e5357610e53611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b03169150828181518110610ea357610ea3611a5e565b602002602001015160056000868481518110610ec157610ec1611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550828181518110610f1f57610f1f611a5e565b60200260200101516001600160a01b0316826001600160a01b0316858381518110610f4c57610f4c611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a4600101610cd6565b50505050565b610f9f611785565b8051825114610fda576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8351811015610f915760036000858381518110610ffd57610ffd611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161561105b576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004600085838151811061107157611071611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16156110cf576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008583815181106110e5576110e5611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b0316915082818151811061113557611135611a5e565b60200260200101516005600086848151811061115357611153611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508281815181106111b1576111b1611a5e565b60200260200101516001600160a01b0316826001600160a01b03168583815181106111de576111de611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a4600101610fde565b3360009081526004602052604090205460ff161561126d576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600460205260409020805460ff19166001179055565b6001600160a01b03821660009081526003602052604090205460ff16156112dc576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526002602052604090205460ff1615801561131657506001600160a01b03828116600090815260056020526040902054163314155b1561134d576040517ff60d93b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205460ff16156113a0576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0380831660008181526005602052604080822080548686167fffffffffffffffffffffffff0000000000000000000000000000000000000000821681179092559151919094169392849290917f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c9190a4505050565b6114246117d0565b6001600160a01b03811660009081526002602052604090205460ff16611476576040517fd56b8a2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600081815260026020526040808220805460ff19169055517f09af5383361cf92f81a21f5147c84aed80ff6d5087bf486623c1d7c43699ab9e9190a250565b6001600160a01b03811660009081526003602052604090205460ff1615611512576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526002602052604090205460ff1615801561154c57506001600160a01b03818116600090815260056020526040902054163314155b15611583576040517ff60d93b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811660009081526004602052604090205460ff16156115d6576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0380821660008181526005602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091559051931692909183917f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c908490a45050565b60606000825167ffffffffffffffff8111156116685761166861184b565b604051908082528060200260200182016040528015611691578160200160208202803683370190505b50905060005b835181101561177e5760006001600160a01b0316600560008684815181106116c1576116c1611a5e565b6020908102919091018101516001600160a01b03908116835290820192909252604001600020541614611731576005600085838151811061170457611704611a5e565b6020908102919091018101516001600160a01b03908116835290820192909252604001600020541661174c565b83818151811061174357611743611a5e565b60200260200101515b82828151811061175e5761175e611a5e565b6001600160a01b0390921660209283029190910190910152600101611697565b5092915050565b3360009081526002602052604090205460ff166117ce576040517fd56b8a2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000546001600160a01b031633146117ce576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461182b57600080fd5b919050565b60006020828403121561184257600080fd5b61090a82611814565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261188b57600080fd5b8135602067ffffffffffffffff808311156118a8576118a861184b565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156118eb576118eb61184b565b604052938452602081870181019490810192508785111561190b57600080fd5b6020870191505b848210156119325761192382611814565b83529183019190830190611912565b979650505050505050565b60006020828403121561194f57600080fd5b813567ffffffffffffffff81111561196657600080fd5b6119728482850161187a565b949350505050565b6000806040838503121561198d57600080fd5b823567ffffffffffffffff808211156119a557600080fd5b6119b18683870161187a565b935060208501359150808211156119c757600080fd5b506119d48582860161187a565b9150509250929050565b600080604083850312156119f157600080fd5b6119fa83611814565b9150611a0860208401611814565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015611a525783516001600160a01b031683529284019291840191600101611a2d565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220a5bb56f29b4b96093ae37f4402945b63d6cecaf6327f19e8d0f82d08d636466c64736f6c63430008170033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101825760003560e01c806394b41f91116100d8578063aaa54e0d1161008c578063dbc99d4b11610066578063dbc99d4b14610313578063f0466c7314610336578063feae99c51461034957600080fd5b8063aaa54e0d146102ca578063b41a5258146102dd578063d8d9ec00146102f057600080fd5b8063a1ac4e85116100bd578063a1ac4e851461029c578063a358626c146102af578063a7e68146146102c257600080fd5b806394b41f9114610276578063989d1a871461028957600080fd5b806353a47bb71161013a57806379ba50971161011457806379ba5097146102285780637f880ec7146102305780638da5cb5b1461026357600080fd5b806353a47bb7146101dd5780635f8cdba61461020d5780636889fae21461021557600080fd5b806325ce9a371161016b57806325ce9a37146101af5780634e271772146101b7578063513e0736146101ca57600080fd5b806302b8a21d146101875780631627540c1461019c575b600080fd5b61019a610195366004611830565b610369565b005b61019a6101aa366004611830565b610411565b61019a6104c1565b61019a6101c5366004611830565b610523565b61019a6101d836600461193d565b61059e565b6001546101f0906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61019a610822565b6101f0610223366004611830565b6108c4565b61019a610911565b61025361023e366004611830565b60046020526000908152604090205460ff1681565b6040519015158152602001610204565b6000546101f0906001600160a01b031681565b61019a61028436600461193d565b6109df565b61019a610297366004611830565b610bf0565b61019a6102aa36600461197a565b610c97565b61019a6102bd36600461197a565b610f97565b61019a611223565b61019a6102d83660046119de565b611289565b61019a6102eb366004611830565b61141c565b6102536102fe366004611830565b60026020526000908152604090205460ff1681565b610253610321366004611830565b60036020526000908152604090205460ff1681565b61019a610344366004611830565b6114bf565b61035c61035736600461193d565b61164a565b6040516102049190611a11565b3360009081526003602052604090205460ff1661039b57336000908152600360205260409020805460ff191660011790555b3360008181526005602052604080822080546001600160a01b038681167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093559251921693909284927f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c9190a45050565b6000546001600160a01b03163314610455576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081179091556040519081527f906a1c6bd7e3091ea86693dd029a831c19049ce77f1dce2ce0bab1cacbabce229060200160405180910390a150565b3360009081526003602052604090205460ff1661050a576040517fed6a321200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600360205260409020805460ff19169055565b61052b611785565b6001600160a01b03811660009081526004602052604090205460ff1661057d576040517f20f57baf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000805b825181101561081d57600360008483815181106105c1576105c1611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161561061f576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600084838151811061063557610635611a5e565b6020908102919091018101516001600160a01b0390811683529082019290925260400160002054163314610695576040517f2b590dc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008483815181106106ab576106ab611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610709576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600084838151811061071f5761071f611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b031691506005600084838151811061077357610773611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154906001600160a01b03021916905560006001600160a01b0316826001600160a01b03168483815181106107d8576107d8611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a46001016105a2565b505050565b3360009081526003602052604090205460ff1661085457336000908152600360205260409020805460ff191660011790555b3360008181526005602052604080822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000811690915590516001600160a01b039091169283917f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c908490a450565b6001600160a01b03818116600090815260056020526040812054909182911615610908576001600160a01b038084166000908152600560205260409020541661090a565b825b9392505050565b6001546001600160a01b03163314610955576040517fd74b334e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600054600154604080516001600160a01b0393841681529290911660208301527fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c910160405180910390a160018054600080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081166001600160a01b03841617909155169055565b6109e7611785565b6000805b825181101561081d5760036000848381518110610a0a57610a0a611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610a68576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60046000848381518110610a7e57610a7e611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610adc576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056000848381518110610af257610af2611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b0316915060056000848381518110610b4657610b46611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154906001600160a01b03021916905560006001600160a01b0316826001600160a01b0316848381518110610bab57610bab611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a46001016109eb565b610bf86117d0565b6001600160a01b03811660009081526002602052604090205460ff1615610c4b576040517f70b9b0d000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600081815260026020526040808220805460ff19166001179055517fe2d01cc637b0a35c9a2dde2789da012cf2b5d14caa779d280c35209b48c31cf29190a250565b8051825114610cd2576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8351811015610f915760036000858381518110610cf557610cf5611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610d53576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056000858381518110610d6957610d69611a5e565b6020908102919091018101516001600160a01b0390811683529082019290925260400160002054163314610dc9576040517f2b590dc000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60046000858381518110610ddf57610ddf611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615610e3d576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60056000858381518110610e5357610e53611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b03169150828181518110610ea357610ea3611a5e565b602002602001015160056000868481518110610ec157610ec1611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550828181518110610f1f57610f1f611a5e565b60200260200101516001600160a01b0316826001600160a01b0316858381518110610f4c57610f4c611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a4600101610cd6565b50505050565b610f9f611785565b8051825114610fda576040517fa24a13a600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000805b8351811015610f915760036000858381518110610ffd57610ffd611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161561105b576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004600085838151811061107157611071611a5e565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff16156110cf576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008583815181106110e5576110e5611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060009054906101000a90046001600160a01b0316915082818151811061113557611135611a5e565b60200260200101516005600086848151811061115357611153611a5e565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508281815181106111b1576111b1611a5e565b60200260200101516001600160a01b0316826001600160a01b03168583815181106111de576111de611a5e565b60200260200101516001600160a01b03167f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c60405160405180910390a4600101610fde565b3360009081526004602052604090205460ff161561126d576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336000908152600460205260409020805460ff19166001179055565b6001600160a01b03821660009081526003602052604090205460ff16156112dc576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526002602052604090205460ff1615801561131657506001600160a01b03828116600090815260056020526040902054163314155b1561134d576040517ff60d93b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03821660009081526004602052604090205460ff16156113a0576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0380831660008181526005602052604080822080548686167fffffffffffffffffffffffff0000000000000000000000000000000000000000821681179092559151919094169392849290917f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c9190a4505050565b6114246117d0565b6001600160a01b03811660009081526002602052604090205460ff16611476576040517fd56b8a2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038116600081815260026020526040808220805460ff19169055517f09af5383361cf92f81a21f5147c84aed80ff6d5087bf486623c1d7c43699ab9e9190a250565b6001600160a01b03811660009081526003602052604090205460ff1615611512576040517f5398f5fa00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3360009081526002602052604090205460ff1615801561154c57506001600160a01b03818116600090815260056020526040902054163314155b15611583576040517ff60d93b300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03811660009081526004602052604090205460ff16156115d6576040517f3cd77c0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0380821660008181526005602052604080822080547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091559051931692909183917f5cbf8b4dd601c76e8851d991825e8d0d29d914f78f40fcc8ebddd97d913f149c908490a45050565b60606000825167ffffffffffffffff8111156116685761166861184b565b604051908082528060200260200182016040528015611691578160200160208202803683370190505b50905060005b835181101561177e5760006001600160a01b0316600560008684815181106116c1576116c1611a5e565b6020908102919091018101516001600160a01b03908116835290820192909252604001600020541614611731576005600085838151811061170457611704611a5e565b6020908102919091018101516001600160a01b03908116835290820192909252604001600020541661174c565b83818151811061174357611743611a5e565b60200260200101515b82828151811061175e5761175e611a5e565b6001600160a01b0390921660209283029190910190910152600101611697565b5092915050565b3360009081526002602052604090205460ff166117ce576040517fd56b8a2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6000546001600160a01b031633146117ce576040517f5fc483c500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80356001600160a01b038116811461182b57600080fd5b919050565b60006020828403121561184257600080fd5b61090a82611814565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600082601f83011261188b57600080fd5b8135602067ffffffffffffffff808311156118a8576118a861184b565b8260051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811084821117156118eb576118eb61184b565b604052938452602081870181019490810192508785111561190b57600080fd5b6020870191505b848210156119325761192382611814565b83529183019190830190611912565b979650505050505050565b60006020828403121561194f57600080fd5b813567ffffffffffffffff81111561196657600080fd5b6119728482850161187a565b949350505050565b6000806040838503121561198d57600080fd5b823567ffffffffffffffff808211156119a557600080fd5b6119b18683870161187a565b935060208501359150808211156119c757600080fd5b506119d48582860161187a565b9150509250929050565b600080604083850312156119f157600080fd5b6119fa83611814565b9150611a0860208401611814565b90509250929050565b6020808252825182820181905260009190848201906040850190845b81811015611a525783516001600160a01b031683529284019291840191600101611a2d565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220a5bb56f29b4b96093ae37f4402945b63d6cecaf6327f19e8d0f82d08d636466c64736f6c63430008170033

Block Transaction Difficulty 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.