ETH Price: $2,935.32 (-1.63%)

Contract

0xa2A09f15c2ec6aF1b8f9413c148334b231410bd8

Overview

ETH Balance

Linea Mainnet LogoLinea Mainnet LogoLinea Mainnet Logo0 ETH

ETH Value

$0.00

Token Holdings

More Info

Private Name Tags

Transaction Hash
Block
From
To
Accept Ownership270090662025-12-23 20:13:2830 days ago1766520808IN
SyncSwap: Fee Recipient
0 ETH0.000001070.03805142
Transfer Ownersh...270090602025-12-23 20:13:0230 days ago1766520782IN
SyncSwap: Fee Recipient
0 ETH0.000001790.03736462
Distribute Fees193425982025-05-25 13:02:19242 days ago1748178139IN
SyncSwap: Fee Recipient
0 ETH0.000079980.089523
Distribute Fees181004852025-04-16 17:28:31281 days ago1744824511IN
SyncSwap: Fee Recipient
0 ETH0.000266720.245344
Distribute Fees124893662024-11-24 20:13:51424 days ago1732479231IN
SyncSwap: Fee Recipient
0 ETH0.000653190.70231081
Distribute Fees114230392024-10-30 17:56:50449 days ago1730311010IN
SyncSwap: Fee Recipient
0 ETH0.000417320.41629639
Distribute Fees60386252024-06-27 9:19:40575 days ago1719479980IN
SyncSwap: Fee Recipient
0 ETH0.000052750.06
Distribute Fees51037682024-06-02 20:24:13599 days ago1717359853IN
SyncSwap: Fee Recipient
0 ETH0.000055870.07340831
Set Fee Registry49619462024-05-28 20:54:37604 days ago1716929677IN
SyncSwap: Fee Recipient
0 ETH0.000002540.084
Distribute Fees47863072024-05-22 18:31:39610 days ago1716402699IN
SyncSwap: Fee Recipient
0 ETH0.000045670.09200363
Set Fee Registry45809832024-05-15 15:24:03617 days ago1715786643IN
SyncSwap: Fee Recipient
0 ETH0.00000210.06952551
Distribute Fees35136142024-04-08 13:47:29654 days ago1712584049IN
SyncSwap: Fee Recipient
0 ETH0.000032160.1262876
Distribute Fees26019012024-03-01 3:58:45693 days ago1709265525IN
SyncSwap: Fee Recipient
0 ETH0.000574211.52702508
Set Fee Registry22180842024-02-12 9:05:54711 days ago1707728754IN
SyncSwap: Fee Recipient
0 ETH0.00006021.9878836
Distribute Fees16247472024-01-12 11:24:56742 days ago1705058696IN
SyncSwap: Fee Recipient
0 ETH0.00078622.01739248
Distribute Fees13038172023-12-21 4:25:27764 days ago1703132727IN
SyncSwap: Fee Recipient
0 ETH0.001561592.94284846
Distribute Fees9168842023-11-20 14:28:15794 days ago1700490495IN
SyncSwap: Fee Recipient
0 ETH0.000350122.40509032
Distribute Fees9016282023-11-19 4:34:07796 days ago1700368447IN
SyncSwap: Fee Recipient
0 ETH0.000232411.2928215
Distribute Fees6551882023-10-17 18:28:58828 days ago1697567338IN
SyncSwap: Fee Recipient
0 ETH0.000154221.02216727

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
282161002026-01-23 9:49:402 hrs ago1769161780
SyncSwap: Fee Recipient
0 ETH
282161002026-01-23 9:49:402 hrs ago1769161780
SyncSwap: Fee Recipient
0 ETH
282139602026-01-23 8:34:463 hrs ago1769157286
SyncSwap: Fee Recipient
0 ETH
282139602026-01-23 8:34:463 hrs ago1769157286
SyncSwap: Fee Recipient
0 ETH
282139592026-01-23 8:34:443 hrs ago1769157284
SyncSwap: Fee Recipient
0 ETH
282139592026-01-23 8:34:443 hrs ago1769157284
SyncSwap: Fee Recipient
0 ETH
282139562026-01-23 8:34:383 hrs ago1769157278
SyncSwap: Fee Recipient
0 ETH
282139562026-01-23 8:34:383 hrs ago1769157278
SyncSwap: Fee Recipient
0 ETH
282130372026-01-23 8:00:463 hrs ago1769155246
SyncSwap: Fee Recipient
0 ETH
282130372026-01-23 8:00:463 hrs ago1769155246
SyncSwap: Fee Recipient
0 ETH
282122612026-01-23 7:32:544 hrs ago1769153574
SyncSwap: Fee Recipient
0 ETH
282122612026-01-23 7:32:544 hrs ago1769153574
SyncSwap: Fee Recipient
0 ETH
282121032026-01-23 7:27:204 hrs ago1769153240
SyncSwap: Fee Recipient
0 ETH
282121032026-01-23 7:27:204 hrs ago1769153240
SyncSwap: Fee Recipient
0 ETH
282104782026-01-23 6:27:565 hrs ago1769149676
SyncSwap: Fee Recipient
0 ETH
282104782026-01-23 6:27:565 hrs ago1769149676
SyncSwap: Fee Recipient
0 ETH
282094542026-01-23 5:48:106 hrs ago1769147290
SyncSwap: Fee Recipient
0 ETH
282094542026-01-23 5:48:106 hrs ago1769147290
SyncSwap: Fee Recipient
0 ETH
282068772026-01-23 4:15:307 hrs ago1769141730
SyncSwap: Fee Recipient
0 ETH
282068772026-01-23 4:15:307 hrs ago1769141730
SyncSwap: Fee Recipient
0 ETH
282022432026-01-23 1:40:1610 hrs ago1769132416
SyncSwap: Fee Recipient
0 ETH
282022432026-01-23 1:40:1610 hrs ago1769132416
SyncSwap: Fee Recipient
0 ETH
282019412026-01-23 1:30:1210 hrs ago1769131812
SyncSwap: Fee Recipient
0 ETH
282019412026-01-23 1:30:1210 hrs ago1769131812
SyncSwap: Fee Recipient
0 ETH
281980032026-01-22 23:16:1012 hrs ago1769123770
SyncSwap: Fee Recipient
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SyncSwapFeeRecipient

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

import "../interfaces/token/IERC20.sol";
import "../interfaces/master/IFeeRegistry.sol";
import "../interfaces/master/IFeeRecipient.sol";

import "../libraries/Ownable2Step.sol";
import "../libraries/TransferHelper.sol";

error InvalidFeeSender();

contract SyncSwapFeeRecipient is IFeeRecipient, Ownable2Step {

    uint public epochDuration = 1 days;

    /// @dev The registry for fee senders.
    address public feeRegistry;

    /// @dev The epoch fees of each token.
    mapping(uint => mapping(address => uint)) public fees; // epoch => token => amount

    /// @dev The fees tokens in each epoch.
    mapping(uint => address[]) public feeTokens;

    /// @dev Whether the address is a fee distributor.
    mapping(address => bool) public isFeeDistributor;

    /// @dev The fee distributors.
    address[] public feeDistributors; // for inspection only

    struct FeeTokenData {
        // The start time of a fee token from a sender.
        uint startTime;

        // The accumulated fee amount since start time.
        uint amount;
    }

    /// @dev The fee token data of a sender.
    mapping(address => mapping(address => FeeTokenData)) public feeTokenData; // sender => token => time

    event NotifyFees(address indexed sender, uint16 indexed feeType, address indexed token, uint amount, uint feeRate);
    event AddFeeDistributor(address indexed distributor);
    event RemoveFeeDistributor(address indexed distributor);
    event SetFeeRegistry(address indexed feeRegistry);
    event SetEpochDuration(uint epochDuration);

    constructor(address _feeRegistry) {
        feeRegistry = _feeRegistry;
    }

    function feeTokensLength(uint epoch) external view returns (uint) {
        return feeTokens[epoch].length;
    }

    function feeDistributorsLength() external view returns (uint) {
        return feeDistributors.length;
    }

    function getEpochStart(uint ts) public view returns (uint) {
        return ts - (ts % epochDuration);
    }

    /// @dev Notifies the fee recipient after sent fees.
    function notifyFees(
        uint16 feeType,
        address token,
        uint amount,
        uint feeRate,
        bytes calldata /*data*/
    ) external override {
        if (!IFeeRegistry(feeRegistry).isFeeSender(msg.sender)) {
            revert InvalidFeeSender();
        }

        uint epoch = getEpochStart(block.timestamp);
        uint epochTokenFees = fees[epoch][token];

        // Unchecked to avoid potential overflow, since fees are only for inspection.
        unchecked {
            if (epochTokenFees == 0) {
                // Pushes new tokens to array.
                feeTokens[epoch].push(token);

                // Updates epoch fees for the token.
                fees[epoch][token] = amount;

                // Updates fee token data for sender.
                feeTokenData[msg.sender][token] = FeeTokenData({
                    startTime: block.timestamp,
                    amount: amount
                });
            } else {
                // Updates epoch fees for the token.
                fees[epoch][token] = (epochTokenFees + amount);

                // Updates fee token data for sender.
                feeTokenData[msg.sender][token].amount += amount;
            }
        }

        emit NotifyFees(msg.sender, feeType, token, amount, feeRate);
    }

    /// @dev Distributes fees to the recipient.
    function distributeFees(address to, address[] calldata tokens, uint[] calldata amounts) external {
        require(isFeeDistributor[msg.sender] || msg.sender == owner(), "No perms");
        require(tokens.length == amounts.length, "Wrong length");

        uint n = tokens.length;
        address token; uint amount;

        for (uint i; i < n; ) {
            token = tokens[i];
            amount = amounts[i];

            if (token == address(0)) { // ETH
                if (amount == 0) {
                    amount = address(this).balance;
                }
                TransferHelper.safeTransferETH(to, amount);
            } else {
                if (amount == 0) {
                    amount = IERC20(token).balanceOf(address(this));
                }
                TransferHelper.safeTransfer(token, to, amount);
            }

            unchecked {
                ++i;
            }
        }
    }

    /// @dev Adds a new fee distributor.
    function addFeeDistributor(address distributor) external onlyOwner {
        require(distributor != address(0), "Invalid address");
        require(!isFeeDistributor[distributor], "Already set");
        isFeeDistributor[distributor] = true;
        feeDistributors.push(distributor);
        emit AddFeeDistributor(distributor);
    }

    /// @dev Removes a new fee distributor.
    function removeFeeDistributor(address distributor, bool updateArray) external onlyOwner {
        require(isFeeDistributor[distributor], "Not set");
        delete isFeeDistributor[distributor];
        if (updateArray) {
            uint n = feeDistributors.length;
            for (uint i; i < n; ) {
                if (feeDistributors[i] == distributor) {
                    feeDistributors[i] = feeDistributors[n - 1];
                    feeDistributors[n - 1] = distributor;
                    feeDistributors.pop();
                    break;
                }

                unchecked {
                    ++i;
                }
            }
        }
        emit RemoveFeeDistributor(distributor);
    }

    /// @dev Sets a new fee registry.
    function setFeeRegistry(address _feeRegistry) external onlyOwner {
        require(_feeRegistry != address(0), "Invalid address");
        feeRegistry = _feeRegistry;
        emit SetFeeRegistry(_feeRegistry);
    }

    function setEpochDuration(uint _epochDuration) external onlyOwner {
        require(_epochDuration != 0, "Invalid duration");
        epochDuration = _epochDuration;
        emit SetEpochDuration(_epochDuration);
    }

    function withdrawERC20(address token, address to, uint amount) external onlyOwner {
        if (amount == 0) {
            amount = IERC20(token).balanceOf(address(this));
        }
        TransferHelper.safeTransfer(token, to, amount);
    }

    function withdrawETH(address to, uint amount) external onlyOwner {
        if (amount == 0) {
            amount = address(this).balance;
        }
        TransferHelper.safeTransferETH(to, amount);
    }
}

File 2 of 8 : IFeeRecipient.sol
// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity >=0.5.0;

interface IFeeRecipient {
    /// @dev Notifies the fee recipient after sent fees.
    function notifyFees(
        uint16 feeType,
        address token,
        uint amount,
        uint feeRate,
        bytes calldata data
    ) external;
}

// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity >=0.5.0;

interface IFeeRegistry {
    function isFeeSender(address sender) external view returns (bool);
}

// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity >=0.5.0;

import "./IERC20Base.sol";

interface IERC20 is IERC20Base {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity >=0.5.0;

interface IERC20Base {
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint amount) external returns (bool);
    function transfer(address to, uint amount) external returns (bool);
    function transferFrom(address from, address to, uint amount) external returns (bool);
    
    event Approval(address indexed owner, address indexed spender, uint amount);
    event Transfer(address indexed from, address indexed to, uint amount);
}

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

pragma solidity ^0.8.0;

/**
 * @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.
 *
 * By default, the owner account will be the one that deploys the contract. 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 {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(msg.sender);
    }

    /**
     * @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 {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
    }

    /**
     * @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 {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _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 v4.8.0) (access/Ownable2Step.sol)

pragma solidity ^0.8.0;

import "./Ownable.sol";

/**
 * @dev Contract module which provides access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership} and {acceptOwnership}.
 *
 * This module is used through inheritance. It will make available all functions
 * from parent (Ownable).
 */
abstract contract Ownable2Step is Ownable {
    address private _pendingOwner;

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

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

    /**
     * @dev Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one.
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual override onlyOwner {
        _pendingOwner = newOwner;
        emit OwnershipTransferStarted(owner(), newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`) and deletes any pending owner.
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual override {
        delete _pendingOwner;
        super._transferOwnership(newOwner);
    }

    /**
     * @dev The new owner accepts the ownership transfer.
     */
    function acceptOwnership() public virtual {
        require(pendingOwner() == msg.sender, "Ownable2Step: caller is not the new owner");
        _transferOwnership(msg.sender);
    }
}

// SPDX-License-Identifier: AGPL-3.0-or-later

pragma solidity ^0.8.0;

/// @dev The ETH transfer has failed.
error ETHTransferFailed();

/// @dev The ERC20 `transferFrom` has failed.
error TransferFromFailed();

/// @dev The ERC20 `transfer` has failed.
error TransferFailed();

/// @dev The ERC20 `approve` has failed.
error ApproveFailed();

/// @dev Helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true / false.
library TransferHelper {
    function safeApprove(
        address token,
        address to,
        uint value
    ) internal {
        // bytes4(keccak256(bytes("approve(address,uint256)")));
        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));

        if (!success || (data.length != 0 && !abi.decode(data, (bool)))) {
            revert ApproveFailed();
        }
    }

    function safeTransfer(
        address token,
        address to,
        uint value
    ) internal {
        // bytes4(keccak256(bytes("transfer(address,uint256)")));
        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));

        if (!success || (data.length != 0 && !abi.decode(data, (bool)))) {
            revert TransferFailed();
        }
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint value
    ) internal {
        // bytes4(keccak256(bytes("transferFrom(address,address,uint256)")));
        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));

        if (!success || (data.length != 0 && !abi.decode(data, (bool)))) {
            revert TransferFromFailed();
        }
    }

    function safeTransferETH(address to, uint value) internal {
        // solhint-disable-next-line avoid-low-level-calls
        (bool success, ) = to.call{value: value}("");

        if (!success) {
            revert ETHTransferFailed();
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 200,
    "details": {
      "yul": false
    }
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_feeRegistry","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ETHTransferFailed","type":"error"},{"inputs":[],"name":"InvalidFeeSender","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"distributor","type":"address"}],"name":"AddFeeDistributor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"uint16","name":"feeType","type":"uint16"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeRate","type":"uint256"}],"name":"NotifyFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferStarted","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":true,"internalType":"address","name":"distributor","type":"address"}],"name":"RemoveFeeDistributor","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"epochDuration","type":"uint256"}],"name":"SetEpochDuration","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"feeRegistry","type":"address"}],"name":"SetFeeRegistry","type":"event"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"}],"name":"addFeeDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"distributeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"epochDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"feeDistributors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDistributorsLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeRegistry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"feeTokenData","outputs":[{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"feeTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"name":"feeTokensLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"fees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ts","type":"uint256"}],"name":"getEpochStart","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeDistributor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"feeType","type":"uint16"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"feeRate","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"notifyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"distributor","type":"address"},{"internalType":"bool","name":"updateArray","type":"bool"}],"name":"removeFeeDistributor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_epochDuration","type":"uint256"}],"name":"setEpochDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeRegistry","type":"address"}],"name":"setFeeRegistry","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052620151806002553480156200001857600080fd5b506040516200174a3803806200174a8339810160408190526200003b916200011d565b62000046336200006c565b600380546001600160a01b0319166001600160a01b03929092169190911790556200014a565b600180546001600160a01b0319169055620000938162000096602090811b62000c8717901c565b50565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006001600160a01b0382165b92915050565b6200010481620000e6565b81146200009357600080fd5b8051620000f381620000f9565b600060208284031215620001345762000134600080fd5b600062000142848462000110565b949350505050565b6115f0806200015a6000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c806379ba5097116100c3578063acdad7d01161007c578063acdad7d0146102ef578063b3a408b814610302578063b7c6d43714610315578063dfcfa80514610328578063e30c397814610348578063f2fde38b1461035957600080fd5b806379ba50971461025d5780637b364e6c14610265578063843e8218146102a55780638da5cb5b146102b85780639dc0f2e8146102c9578063a6db0aa4146102dc57600080fd5b80634ff0876a116101155780634ff0876a146101e15780635286ad60146101ea5780635397401b146101f2578063641c9eaa146102225780637118c6d714610235578063715018a61461025557600080fd5b80630175e23b1461015257806330024dfe1461017b57806333c373771461019057806344004cc1146101bb5780634782f779146101ce575b600080fd5b610165610160366004610eb4565b61036c565b6040516101729190610ee5565b60405180910390f35b61018e610189366004610eb4565b61038c565b005b61016561019e366004610f18565b600460209081526000928352604080842090915290825290205481565b61018e6101c9366004610f55565b6103fd565b61018e6101dc366004610fa5565b61048d565b61016560025481565b600754610165565b610215610200366004610fd8565b60066020526000908152604090205460ff1681565b6040516101729190611001565b61018e610230366004611061565b6104ae565b6102486102433660046110f1565b610624565b604051610172919061111c565b61018e61065c565b61018e610670565b61029761027336600461112a565b60086020908152600092835260408084209091529082529020805460019091015482565b60405161017292919061114c565b61018e6102b33660046111ce565b6106b2565b6000546001600160a01b0316610248565b61018e6102d7366004611277565b61089d565b61018e6102ea366004610fd8565b610a81565b61018e6102fd366004610fd8565b610b74565b600354610248906001600160a01b031681565b610248610323366004610eb4565b610bec565b610165610336366004610eb4565b60009081526005602052604090205490565b6001546001600160a01b0316610248565b61018e610367366004610fd8565b610c16565b60006002548261037c91906112c0565b61038690836112ea565b92915050565b610394610cd7565b806000036103bd5760405162461bcd60e51b81526004016103b49061132b565b60405180910390fd5b60028190556040517f5bce98672bb5217cce91d9b398e088c3e74809346b9c3348f45cf509038504fc906103f2908390610ee5565b60405180910390a150565b610405610cd7565b8060000361047d576040516370a0823160e01b81526001600160a01b038416906370a082319061043990309060040161111c565b602060405180830381865afa158015610456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047a9190611346565b90505b610488838383610d10565b505050565b610495610cd7565b806000036104a05750475b6104aa8282610e03565b5050565b3360009081526006602052604090205460ff16806104d657506000546001600160a01b031633145b6104f25760405162461bcd60e51b81526004016103b490611386565b8281146105115760405162461bcd60e51b81526004016103b4906113b9565b82600080805b8381101561061957878782818110610531576105316113c9565b90506020020160208101906105469190610fd8565b925085858281811061055a5761055a6113c9565b60200291909101359250506001600160a01b03831661058e578160000361057f574791505b6105898983610e03565b610611565b81600003610606576040516370a0823160e01b81526001600160a01b038416906370a08231906105c290309060040161111c565b602060405180830381865afa1580156105df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106039190611346565b91505b610611838a84610d10565b600101610517565b505050505050505050565b6005602052816000526040600020818154811061064057600080fd5b6000918252602090912001546001600160a01b03169150829050565b610664610cd7565b61066e6000610e80565b565b336106836001546001600160a01b031690565b6001600160a01b0316146106a95760405162461bcd60e51b81526004016103b4906113df565b61066e33610e80565b60035460405163fe47d6e160e01b81526001600160a01b039091169063fe47d6e1906106e290339060040161111c565b602060405180830381865afa1580156106ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107239190611437565b61074057604051635ae3252d60e11b815260040160405180910390fd5b600061074b4261036c565b60008181526004602090815260408083206001600160a01b038b1684529091528120549192508190036107fc5760008281526005602090815260408083208054600180820183559185528385200180546001600160a01b0319166001600160a01b038d169081179091558685526004845282852081865284528285208b9055825180840184524281528085018c81523387526008865284872092875291909452919093209151825551910155610841565b60008281526004602090815260408083206001600160a01b038b16808552908352818420858b0190553384526008835281842090845290915290206001018054870190555b866001600160a01b03168861ffff16336001600160a01b03167fd9cc3fd2bd703eb089f05b4dc0c28c75957d1775a1a2f72bff0e235a4dd710a6898960405161088b92919061114c565b60405180910390a45050505050505050565b6108a5610cd7565b6001600160a01b03821660009081526006602052604090205460ff166108dd5760405162461bcd60e51b81526004016103b490611476565b6001600160a01b0382166000908152600660205260409020805460ff191690558015610a495760075460005b81811015610a4657836001600160a01b03166007828154811061092e5761092e6113c9565b6000918252602090912001546001600160a01b031603610a3e5760076109556001846112ea565b81548110610965576109656113c9565b600091825260209091200154600780546001600160a01b039092169183908110610991576109916113c9565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790558360076109c86001856112ea565b815481106109d8576109d86113c9565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506007805480610a1757610a17611486565b600082815260209020810160001990810180546001600160a01b0319169055019055610a46565b600101610909565b50505b6040516001600160a01b038316907f26b772cce7966f2cbf620e2f87b81c664ac00ac028b0d245e1138823526a779990600090a25050565b610a89610cd7565b6001600160a01b038116610aaf5760405162461bcd60e51b81526004016103b4906114c2565b6001600160a01b03811660009081526006602052604090205460ff1615610ae85760405162461bcd60e51b81526004016103b4906114f4565b6001600160a01b038116600081815260066020526040808220805460ff1916600190811790915560078054918201815583527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b03191684179055517f9bb88b21f52273267cddc0cbdd9f83415b89e652b819d3cfe37ad9ed833bc2499190a250565b610b7c610cd7565b6001600160a01b038116610ba25760405162461bcd60e51b81526004016103b4906114c2565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f38cb9250f3682ece75ce5c2f1477a9f818ace4522e65517be27af55c2862197f90600090a250565b60078181548110610bfc57600080fd5b6000918252602090912001546001600160a01b0316905081565b610c1e610cd7565b600180546001600160a01b0383166001600160a01b03199091168117909155610c4f6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b33610cea6000546001600160a01b031690565b6001600160a01b03161461066e5760405162461bcd60e51b81526004016103b490611536565b600080846001600160a01b031663a9059cbb8585604051602401610d35929190611546565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051610d6e91906115a6565b6000604051808303816000865af19150503d8060008114610dab576040519150601f19603f3d011682016040523d82523d6000602084013e610db0565b606091505b5091509150811580610dde5750805115801590610dde575080806020019051810190610ddc9190611437565b155b15610dfc576040516312171d8360e31b815260040160405180910390fd5b5050505050565b6000826001600160a01b031682604051610e1c906115b2565b60006040518083038185875af1925050503d8060008114610e59576040519150601f19603f3d011682016040523d82523d6000602084013e610e5e565b606091505b50509050806104885760405163b12d13eb60e01b815260040160405180910390fd5b600180546001600160a01b0319169055610e9981610c87565b50565b805b8114610e9957600080fd5b803561038681610e9c565b600060208284031215610ec957610ec9600080fd5b6000610ed58484610ea9565b949350505050565b805b82525050565b602081016103868284610edd565b60006001600160a01b038216610386565b610e9e81610ef3565b803561038681610f04565b60008060408385031215610f2e57610f2e600080fd5b6000610f3a8585610ea9565b9250506020610f4b85828601610f0d565b9150509250929050565b600080600060608486031215610f6d57610f6d600080fd5b6000610f798686610f0d565b9350506020610f8a86828701610f0d565b9250506040610f9b86828701610ea9565b9150509250925092565b60008060408385031215610fbb57610fbb600080fd5b6000610fc78585610f0d565b9250506020610f4b85828601610ea9565b600060208284031215610fed57610fed600080fd5b6000610ed58484610f0d565b801515610edf565b602081016103868284610ff9565b60008083601f84011261102457611024600080fd5b50813567ffffffffffffffff81111561103f5761103f600080fd5b60208301915083602082028301111561105a5761105a600080fd5b9250929050565b60008060008060006060868803121561107c5761107c600080fd5b60006110888888610f0d565b955050602086013567ffffffffffffffff8111156110a8576110a8600080fd5b6110b48882890161100f565b9450945050604086013567ffffffffffffffff8111156110d6576110d6600080fd5b6110e28882890161100f565b92509250509295509295909350565b6000806040838503121561110757611107600080fd5b6000610fc78585610ea9565b610edf81610ef3565b602081016103868284611113565b6000806040838503121561114057611140600080fd5b6000610f3a8585610f0d565b6040810161115a8285610edd565b6111676020830184610edd565b9392505050565b61ffff8116610e9e565b80356103868161116e565b60008083601f84011261119857611198600080fd5b50813567ffffffffffffffff8111156111b3576111b3600080fd5b60208301915083600182028301111561105a5761105a600080fd5b60008060008060008060a087890312156111ea576111ea600080fd5b60006111f68989611178565b965050602061120789828a01610f0d565b955050604061121889828a01610ea9565b945050606061122989828a01610ea9565b935050608087013567ffffffffffffffff81111561124957611249600080fd5b61125589828a01611183565b92509250509295509295509295565b801515610e9e565b803561038681611264565b6000806040838503121561128d5761128d600080fd5b60006112998585610f0d565b9250506020610f4b8582860161126c565b634e487b7160e01b600052601260045260246000fd5b6000826112cf576112cf6112aa565b500690565b634e487b7160e01b600052601160045260246000fd5b6000828210156112fc576112fc6112d4565b500390565b601081526000602082016f24b73b30b634b210323ab930ba34b7b760811b815291505b5060200190565b6020808252810161038681611301565b805161038681610e9c565b60006020828403121561135b5761135b600080fd5b6000610ed5848461133b565b60088152600060208201674e6f207065726d7360c01b81529150611324565b6020808252810161038681611367565b600c81526000602082016b0aee4dedcce40d8cadccee8d60a31b81529150611324565b6020808252810161038681611396565b634e487b7160e01b600052603260045260246000fd5b6020808252810161038681602981527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206020820152683732bb9037bbb732b960b91b604082015260600190565b805161038681611264565b60006020828403121561144c5761144c600080fd5b6000610ed5848461142c565b6007815260006020820166139bdd081cd95d60ca1b81529150611324565b6020808252810161038681611458565b634e487b7160e01b600052603160045260246000fd5b600f81526000602082016e496e76616c6964206164647265737360881b81529150611324565b602080825281016103868161149c565b600b81526000602082016a105b1c9958591e481cd95d60aa1b81529150611324565b60208082528101610386816114d2565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000611324565b6020808252810161038681611504565b6040810161115a8285611113565b60005b8381101561156f578181015183820152602001611557565b8381111561157e576000848401525b50505050565b600061158e825190565b61159c818560208601611554565b9290920192915050565b60006111678284611584565b60008161038656fea264697066735822122094e8d7a68debfa7973dee226fba77cbf702e6ce566b2a03e5af9863c1870618a64736f6c634300080f00330000000000000000000000008cdf4ec0d5ee197b00467a720660c44480b3ec60

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061014d5760003560e01c806379ba5097116100c3578063acdad7d01161007c578063acdad7d0146102ef578063b3a408b814610302578063b7c6d43714610315578063dfcfa80514610328578063e30c397814610348578063f2fde38b1461035957600080fd5b806379ba50971461025d5780637b364e6c14610265578063843e8218146102a55780638da5cb5b146102b85780639dc0f2e8146102c9578063a6db0aa4146102dc57600080fd5b80634ff0876a116101155780634ff0876a146101e15780635286ad60146101ea5780635397401b146101f2578063641c9eaa146102225780637118c6d714610235578063715018a61461025557600080fd5b80630175e23b1461015257806330024dfe1461017b57806333c373771461019057806344004cc1146101bb5780634782f779146101ce575b600080fd5b610165610160366004610eb4565b61036c565b6040516101729190610ee5565b60405180910390f35b61018e610189366004610eb4565b61038c565b005b61016561019e366004610f18565b600460209081526000928352604080842090915290825290205481565b61018e6101c9366004610f55565b6103fd565b61018e6101dc366004610fa5565b61048d565b61016560025481565b600754610165565b610215610200366004610fd8565b60066020526000908152604090205460ff1681565b6040516101729190611001565b61018e610230366004611061565b6104ae565b6102486102433660046110f1565b610624565b604051610172919061111c565b61018e61065c565b61018e610670565b61029761027336600461112a565b60086020908152600092835260408084209091529082529020805460019091015482565b60405161017292919061114c565b61018e6102b33660046111ce565b6106b2565b6000546001600160a01b0316610248565b61018e6102d7366004611277565b61089d565b61018e6102ea366004610fd8565b610a81565b61018e6102fd366004610fd8565b610b74565b600354610248906001600160a01b031681565b610248610323366004610eb4565b610bec565b610165610336366004610eb4565b60009081526005602052604090205490565b6001546001600160a01b0316610248565b61018e610367366004610fd8565b610c16565b60006002548261037c91906112c0565b61038690836112ea565b92915050565b610394610cd7565b806000036103bd5760405162461bcd60e51b81526004016103b49061132b565b60405180910390fd5b60028190556040517f5bce98672bb5217cce91d9b398e088c3e74809346b9c3348f45cf509038504fc906103f2908390610ee5565b60405180910390a150565b610405610cd7565b8060000361047d576040516370a0823160e01b81526001600160a01b038416906370a082319061043990309060040161111c565b602060405180830381865afa158015610456573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047a9190611346565b90505b610488838383610d10565b505050565b610495610cd7565b806000036104a05750475b6104aa8282610e03565b5050565b3360009081526006602052604090205460ff16806104d657506000546001600160a01b031633145b6104f25760405162461bcd60e51b81526004016103b490611386565b8281146105115760405162461bcd60e51b81526004016103b4906113b9565b82600080805b8381101561061957878782818110610531576105316113c9565b90506020020160208101906105469190610fd8565b925085858281811061055a5761055a6113c9565b60200291909101359250506001600160a01b03831661058e578160000361057f574791505b6105898983610e03565b610611565b81600003610606576040516370a0823160e01b81526001600160a01b038416906370a08231906105c290309060040161111c565b602060405180830381865afa1580156105df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106039190611346565b91505b610611838a84610d10565b600101610517565b505050505050505050565b6005602052816000526040600020818154811061064057600080fd5b6000918252602090912001546001600160a01b03169150829050565b610664610cd7565b61066e6000610e80565b565b336106836001546001600160a01b031690565b6001600160a01b0316146106a95760405162461bcd60e51b81526004016103b4906113df565b61066e33610e80565b60035460405163fe47d6e160e01b81526001600160a01b039091169063fe47d6e1906106e290339060040161111c565b602060405180830381865afa1580156106ff573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107239190611437565b61074057604051635ae3252d60e11b815260040160405180910390fd5b600061074b4261036c565b60008181526004602090815260408083206001600160a01b038b1684529091528120549192508190036107fc5760008281526005602090815260408083208054600180820183559185528385200180546001600160a01b0319166001600160a01b038d169081179091558685526004845282852081865284528285208b9055825180840184524281528085018c81523387526008865284872092875291909452919093209151825551910155610841565b60008281526004602090815260408083206001600160a01b038b16808552908352818420858b0190553384526008835281842090845290915290206001018054870190555b866001600160a01b03168861ffff16336001600160a01b03167fd9cc3fd2bd703eb089f05b4dc0c28c75957d1775a1a2f72bff0e235a4dd710a6898960405161088b92919061114c565b60405180910390a45050505050505050565b6108a5610cd7565b6001600160a01b03821660009081526006602052604090205460ff166108dd5760405162461bcd60e51b81526004016103b490611476565b6001600160a01b0382166000908152600660205260409020805460ff191690558015610a495760075460005b81811015610a4657836001600160a01b03166007828154811061092e5761092e6113c9565b6000918252602090912001546001600160a01b031603610a3e5760076109556001846112ea565b81548110610965576109656113c9565b600091825260209091200154600780546001600160a01b039092169183908110610991576109916113c9565b600091825260209091200180546001600160a01b0319166001600160a01b03929092169190911790558360076109c86001856112ea565b815481106109d8576109d86113c9565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506007805480610a1757610a17611486565b600082815260209020810160001990810180546001600160a01b0319169055019055610a46565b600101610909565b50505b6040516001600160a01b038316907f26b772cce7966f2cbf620e2f87b81c664ac00ac028b0d245e1138823526a779990600090a25050565b610a89610cd7565b6001600160a01b038116610aaf5760405162461bcd60e51b81526004016103b4906114c2565b6001600160a01b03811660009081526006602052604090205460ff1615610ae85760405162461bcd60e51b81526004016103b4906114f4565b6001600160a01b038116600081815260066020526040808220805460ff1916600190811790915560078054918201815583527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b03191684179055517f9bb88b21f52273267cddc0cbdd9f83415b89e652b819d3cfe37ad9ed833bc2499190a250565b610b7c610cd7565b6001600160a01b038116610ba25760405162461bcd60e51b81526004016103b4906114c2565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f38cb9250f3682ece75ce5c2f1477a9f818ace4522e65517be27af55c2862197f90600090a250565b60078181548110610bfc57600080fd5b6000918252602090912001546001600160a01b0316905081565b610c1e610cd7565b600180546001600160a01b0383166001600160a01b03199091168117909155610c4f6000546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b33610cea6000546001600160a01b031690565b6001600160a01b03161461066e5760405162461bcd60e51b81526004016103b490611536565b600080846001600160a01b031663a9059cbb8585604051602401610d35929190611546565b6040516020818303038152906040529060e01b6020820180516001600160e01b038381831617835250505050604051610d6e91906115a6565b6000604051808303816000865af19150503d8060008114610dab576040519150601f19603f3d011682016040523d82523d6000602084013e610db0565b606091505b5091509150811580610dde5750805115801590610dde575080806020019051810190610ddc9190611437565b155b15610dfc576040516312171d8360e31b815260040160405180910390fd5b5050505050565b6000826001600160a01b031682604051610e1c906115b2565b60006040518083038185875af1925050503d8060008114610e59576040519150601f19603f3d011682016040523d82523d6000602084013e610e5e565b606091505b50509050806104885760405163b12d13eb60e01b815260040160405180910390fd5b600180546001600160a01b0319169055610e9981610c87565b50565b805b8114610e9957600080fd5b803561038681610e9c565b600060208284031215610ec957610ec9600080fd5b6000610ed58484610ea9565b949350505050565b805b82525050565b602081016103868284610edd565b60006001600160a01b038216610386565b610e9e81610ef3565b803561038681610f04565b60008060408385031215610f2e57610f2e600080fd5b6000610f3a8585610ea9565b9250506020610f4b85828601610f0d565b9150509250929050565b600080600060608486031215610f6d57610f6d600080fd5b6000610f798686610f0d565b9350506020610f8a86828701610f0d565b9250506040610f9b86828701610ea9565b9150509250925092565b60008060408385031215610fbb57610fbb600080fd5b6000610fc78585610f0d565b9250506020610f4b85828601610ea9565b600060208284031215610fed57610fed600080fd5b6000610ed58484610f0d565b801515610edf565b602081016103868284610ff9565b60008083601f84011261102457611024600080fd5b50813567ffffffffffffffff81111561103f5761103f600080fd5b60208301915083602082028301111561105a5761105a600080fd5b9250929050565b60008060008060006060868803121561107c5761107c600080fd5b60006110888888610f0d565b955050602086013567ffffffffffffffff8111156110a8576110a8600080fd5b6110b48882890161100f565b9450945050604086013567ffffffffffffffff8111156110d6576110d6600080fd5b6110e28882890161100f565b92509250509295509295909350565b6000806040838503121561110757611107600080fd5b6000610fc78585610ea9565b610edf81610ef3565b602081016103868284611113565b6000806040838503121561114057611140600080fd5b6000610f3a8585610f0d565b6040810161115a8285610edd565b6111676020830184610edd565b9392505050565b61ffff8116610e9e565b80356103868161116e565b60008083601f84011261119857611198600080fd5b50813567ffffffffffffffff8111156111b3576111b3600080fd5b60208301915083600182028301111561105a5761105a600080fd5b60008060008060008060a087890312156111ea576111ea600080fd5b60006111f68989611178565b965050602061120789828a01610f0d565b955050604061121889828a01610ea9565b945050606061122989828a01610ea9565b935050608087013567ffffffffffffffff81111561124957611249600080fd5b61125589828a01611183565b92509250509295509295509295565b801515610e9e565b803561038681611264565b6000806040838503121561128d5761128d600080fd5b60006112998585610f0d565b9250506020610f4b8582860161126c565b634e487b7160e01b600052601260045260246000fd5b6000826112cf576112cf6112aa565b500690565b634e487b7160e01b600052601160045260246000fd5b6000828210156112fc576112fc6112d4565b500390565b601081526000602082016f24b73b30b634b210323ab930ba34b7b760811b815291505b5060200190565b6020808252810161038681611301565b805161038681610e9c565b60006020828403121561135b5761135b600080fd5b6000610ed5848461133b565b60088152600060208201674e6f207065726d7360c01b81529150611324565b6020808252810161038681611367565b600c81526000602082016b0aee4dedcce40d8cadccee8d60a31b81529150611324565b6020808252810161038681611396565b634e487b7160e01b600052603260045260246000fd5b6020808252810161038681602981527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206020820152683732bb9037bbb732b960b91b604082015260600190565b805161038681611264565b60006020828403121561144c5761144c600080fd5b6000610ed5848461142c565b6007815260006020820166139bdd081cd95d60ca1b81529150611324565b6020808252810161038681611458565b634e487b7160e01b600052603160045260246000fd5b600f81526000602082016e496e76616c6964206164647265737360881b81529150611324565b602080825281016103868161149c565b600b81526000602082016a105b1c9958591e481cd95d60aa1b81529150611324565b60208082528101610386816114d2565b60208082527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657291019081526000611324565b6020808252810161038681611504565b6040810161115a8285611113565b60005b8381101561156f578181015183820152602001611557565b8381111561157e576000848401525b50505050565b600061158e825190565b61159c818560208601611554565b9290920192915050565b60006111678284611584565b60008161038656fea264697066735822122094e8d7a68debfa7973dee226fba77cbf702e6ce566b2a03e5af9863c1870618a64736f6c634300080f0033

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

0000000000000000000000008cdf4ec0d5ee197b00467a720660c44480b3ec60

-----Decoded View---------------
Arg [0] : _feeRegistry (address): 0x8cDf4Ec0D5ee197B00467A720660C44480B3Ec60

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000008cdf4ec0d5ee197b00467a720660c44480b3ec60


Block Transaction Gas Used Reward
view all blocks sequenced

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  ]
[ 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.