ETH Price: $2,516.51 (-0.24%)

Contract

0xd78ab30266110Af8e468B0B2A8f2De50B3634C0e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Claim Dividend152560212022-08-01 10:08:44760 days ago1659348524IN
0xd78ab302...0B3634C0e
0 ETH0.000804097.93301657
Claim Dividend152002212022-07-23 17:28:46769 days ago1658597326IN
0xd78ab302...0B3634C0e
0 ETH0.0023046222.73679727
Claim Dividend151672672022-07-18 14:47:48774 days ago1658155668IN
0xd78ab302...0B3634C0e
0 ETH0.0059566558.76669387
Claim Dividend150037952022-06-21 19:17:27801 days ago1655839047IN
0xd78ab302...0B3634C0e
0 ETH0.004687846.24859351
Claim Dividend149924232022-06-19 19:20:34803 days ago1655666434IN
0xd78ab302...0B3634C0e
0 ETH0.0052717153.05614021
Claim Dividend149896022022-06-19 7:36:18804 days ago1655624178IN
0xd78ab302...0B3634C0e
0 ETH0.0022113721.81677564
Claim Dividend149702392022-06-15 23:44:29807 days ago1655336669IN
0xd78ab302...0B3634C0e
0 ETH0.0030556230.14598888
Claim Dividend149642022022-06-14 22:31:39808 days ago1655245899IN
0xd78ab302...0B3634C0e
0 ETH0.0036536426.95201414
Claim Dividend149557762022-06-13 11:32:41809 days ago1655119961IN
0xd78ab302...0B3634C0e
0 ETH0.01024411101.06567607
Claim Dividend149511912022-06-12 16:41:03810 days ago1655052063IN
0xd78ab302...0B3634C0e
0 ETH0.0090532689.31700837
Claim Dividend149460982022-06-11 19:55:19811 days ago1654977319IN
0xd78ab302...0B3634C0e
0 ETH0.0028287427.9075985
Claim Dividend149369782022-06-10 6:30:49813 days ago1654842649IN
0xd78ab302...0B3634C0e
0 ETH0.0050858550.17569132
Claim Dividend149327782022-06-09 13:14:06813 days ago1654780446IN
0xd78ab302...0B3634C0e
0 ETH0.0039475638.94557102
Claim Dividend149312762022-06-09 7:06:17814 days ago1654758377IN
0xd78ab302...0B3634C0e
0 ETH0.0031772831.34623
Claim Dividend149282772022-06-08 18:47:19814 days ago1654714039IN
0xd78ab302...0B3634C0e
0 ETH0.0079426678.36013224
Claim Dividend149255102022-06-08 7:36:55815 days ago1654673815IN
0xd78ab302...0B3634C0e
0 ETH0.0189215561.66384417
Claim Dividend149251322022-06-08 6:05:34815 days ago1654668334IN
0xd78ab302...0B3634C0e
0 ETH0.0044775844.17459495
Claim Dividend149248872022-06-08 5:04:47815 days ago1654664687IN
0xd78ab302...0B3634C0e
0 ETH0.0063521463.92991913
Claim Dividend149223822022-06-07 18:44:29815 days ago1654627469IN
0xd78ab302...0B3634C0e
0 ETH0.0089372366.91497274
Claim Dividend149223732022-06-07 18:43:06815 days ago1654627386IN
0xd78ab302...0B3634C0e
0 ETH0.0088312887.12709114
Claim Dividend149216562022-06-07 15:40:17815 days ago1654616417IN
0xd78ab302...0B3634C0e
0 ETH0.0063716364.12614011
Claim Dividend149213022022-06-07 14:24:49815 days ago1654611889IN
0xd78ab302...0B3634C0e
0 ETH0.0031653631.22858295
Claim Dividend149206942022-06-07 12:01:20815 days ago1654603280IN
0xd78ab302...0B3634C0e
0 ETH0.0040210333.94396879
Claim Dividend149204612022-06-07 11:02:12815 days ago1654599732IN
0xd78ab302...0B3634C0e
0 ETH0.0029281328.88819364
Claim Dividend149204312022-06-07 10:56:21815 days ago1654599381IN
0xd78ab302...0B3634C0e
0 ETH0.0041506440.94912312
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
149742432022-06-16 16:09:44806 days ago1655395784
0xd78ab302...0B3634C0e
0.006616 ETH
149742432022-06-16 16:09:44806 days ago1655395784
0xd78ab302...0B3634C0e
0.006616 ETH
149701572022-06-15 23:24:35807 days ago1655335475
0xd78ab302...0B3634C0e
0.03308004 ETH
149701572022-06-15 23:24:35807 days ago1655335475
0xd78ab302...0B3634C0e
0.03308004 ETH
149641692022-06-14 22:22:50808 days ago1655245370
0xd78ab302...0B3634C0e
0.06153721 ETH
149641692022-06-14 22:22:50808 days ago1655245370
0xd78ab302...0B3634C0e
0.06153721 ETH
149477872022-06-12 2:52:52811 days ago1655002372
0xd78ab302...0B3634C0e
0.03506715 ETH
149477872022-06-12 2:52:52811 days ago1655002372
0xd78ab302...0B3634C0e
0.03506715 ETH
149464672022-06-11 21:17:02811 days ago1654982222
0xd78ab302...0B3634C0e
0.00877421 ETH
149464672022-06-11 21:17:02811 days ago1654982222
0xd78ab302...0B3634C0e
0.00877421 ETH
149455002022-06-11 17:29:33811 days ago1654968573
0xd78ab302...0B3634C0e
0.04387108 ETH
149455002022-06-11 17:29:33811 days ago1654968573
0xd78ab302...0B3634C0e
0.04387108 ETH
149444282022-06-11 13:10:10811 days ago1654953010
0xd78ab302...0B3634C0e
0.0604553 ETH
149444282022-06-11 13:10:10811 days ago1654953010
0xd78ab302...0B3634C0e
0.0604553 ETH
149425592022-06-11 5:24:06812 days ago1654925046
0xd78ab302...0B3634C0e
0.12015563 ETH
149425592022-06-11 5:24:06812 days ago1654925046
0xd78ab302...0B3634C0e
0.12015563 ETH
149381492022-06-10 11:18:49812 days ago1654859929
0xd78ab302...0B3634C0e
0.02743725 ETH
149381492022-06-10 11:18:49812 days ago1654859929
0xd78ab302...0B3634C0e
0.02743725 ETH
149380122022-06-10 10:43:53812 days ago1654857833
0xd78ab302...0B3634C0e
0.13718625 ETH
149380122022-06-10 10:43:53812 days ago1654857833
0xd78ab302...0B3634C0e
0.13718625 ETH
149350782022-06-09 22:45:08813 days ago1654814708
0xd78ab302...0B3634C0e
0.05175969 ETH
149350782022-06-09 22:45:08813 days ago1654814708
0xd78ab302...0B3634C0e
0.05175969 ETH
149345252022-06-09 20:25:36813 days ago1654806336
0xd78ab302...0B3634C0e
0.07181876 ETH
149345252022-06-09 20:25:36813 days ago1654806336
0xd78ab302...0B3634C0e
0.07181876 ETH
149342112022-06-09 19:11:50813 days ago1654801910
0xd78ab302...0B3634C0e
0.15594292 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DividendDistributor

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-06-06
*/

// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.9;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

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

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

/**
 * @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 is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _setOwner(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"
        );
        _setOwner(newOwner);
    }

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IDividendDistributor {
    function setDistributionCriteria(
        uint256 _minPeriod,
        uint256 _minDistribution
    ) external;

    function setShare(address shareholder, uint256 amount) external;

    function deposit() external payable;

    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor, Ownable {
    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IUniswapV2Router02 public router;
    IERC20 public RewardToken;

    address[] shareholders;
    mapping(address => uint256) public shareholderIndexes;
    mapping(address => uint256) public shareholderClaims;
    mapping(address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10**36;

    uint256 public minPeriod = 30 minutes;
    uint256 public minDistribution = 1 * (10**18);

    uint256 public currentIndex;
    bool initialized;

    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token);
        _;
    }

    modifier onlyBBTToken() {
        // require(msg.sender == bbtContract);
        require(msg.sender == address(RewardToken));
        _;
    }

    constructor(
        address _router,
        address _reflectionToken,
        address token
    ) {
        router = IUniswapV2Router02(_router);
        RewardToken = IERC20(_reflectionToken);
        _token = token;
    }

    function setDistributionCriteria(
        uint256 newMinPeriod,
        uint256 newMinDistribution
    ) external override onlyToken {
        minPeriod = newMinPeriod;
        minDistribution = newMinDistribution;
    }

    function setShare(address shareholder, uint256 amount)
        external
        override
        onlyToken
    {
        if (shares[shareholder].amount > 0) {
            distributeDividend(shareholder);
        }

        if (amount > 0 && shares[shareholder].amount == 0) {
            addShareholder(shareholder);
        } else if (amount == 0 && shares[shareholder].amount > 0) {
            removeShareholder(shareholder);
        }

        totalShares = totalShares - shares[shareholder].amount + amount;
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(
            shares[shareholder].amount
        );
    }

    function deposit() external payable override {
        uint256 balanceBefore = RewardToken.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = router.WETH();
        path[1] = address(RewardToken);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: msg.value
        }(0, path, address(this), block.timestamp);

        uint256 amount = RewardToken.balanceOf(address(this)) - balanceBefore;
        totalDividends = totalDividends + amount;
        dividendsPerShare =
            dividendsPerShare +
            ((dividendsPerShareAccuracyFactor * amount) / totalShares);
    }

    function process(uint256 gas) external override {
        uint256 shareholderCount = shareholders.length;

        if (shareholderCount == 0) {
            return;
        }

        uint256 iterations = 0;
        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        while (gasUsed < gas && iterations < shareholderCount) {
            if (currentIndex >= shareholderCount) {
                currentIndex = 0;
            }

            if (shouldDistribute(shareholders[currentIndex])) {
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed + (gasLeft - gasleft());
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder) public view returns (bool) {
        return
            shareholderClaims[shareholder] + minPeriod < block.timestamp &&
            getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if (shares[shareholder].amount == 0) {
            return;
        }

        uint256 amount = getUnpaidEarnings(shareholder);
        if (amount > 0) {
            totalDistributed = totalDistributed + amount;
            RewardToken.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised += amount;
            shares[shareholder].totalExcluded = getCumulativeDividends(
                shares[shareholder].amount
            );
        }
    }

    function claimDividend() external {
        require(shouldDistribute(msg.sender), "Too soon. Need to wait!");
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder)
        public
        view
        returns (uint256)
    {
        if (shares[shareholder].amount == 0) {
            return 0;
        }

        uint256 shareholderTotalDividends = getCumulativeDividends(
            shares[shareholder].amount
        );
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if (shareholderTotalDividends <= shareholderTotalExcluded) {
            return 0;
        }

        return (shareholderTotalDividends - shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share)
        internal
        view
        returns (uint256)
    {
        return (share * dividendsPerShare) / dividendsPerShareAccuracyFactor;
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[
            shareholders.length - 1
        ];
        shareholderIndexes[
            shareholders[shareholders.length - 1]
        ] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_router","type":"address"},{"internalType":"address","name":"_reflectionToken","type":"address"},{"internalType":"address","name":"token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"RewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimDividend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currentIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"dividendsPerShare","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendsPerShareAccuracyFactor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"getUnpaidEarnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minDistribution","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"process","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMinPeriod","type":"uint256"},{"internalType":"uint256","name":"newMinDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setShare","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shareholderClaims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shareholderIndexes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"shares","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalExcluded","type":"uint256"},{"internalType":"uint256","name":"totalRealised","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"shareholder","type":"address"}],"name":"shouldDistribute","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526ec097ce7bc90715b34b9f1000000000600c55610708600d55670de0b6b3a7640000600e5534801561003557600080fd5b5060405162001231380380620012318339810160408190526100569161010d565b61005f336100a1565b600280546001600160a01b039485166001600160a01b031991821617909155600380549385169382169390931790925560018054919093169116179055610150565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b038116811461010857600080fd5b919050565b60008060006060848603121561012257600080fd5b61012b846100f1565b9250610139602085016100f1565b9150610147604085016100f1565b90509250925092565b6110d180620001606000396000f3fe6080604052600436106101405760003560e01c8063997664d7116100b6578063f0fc6bca1161006f578063f0fc6bca14610384578063f1e9f1e514610399578063f2fde38b146103b9578063f887ea40146103d9578063ffb2c479146103f9578063ffd49c841461041957600080fd5b8063997664d7146102b6578063ce7c2ac2146102cc578063d0e30db014610323578063d4fda1f21461032b578063e2d2e21914610358578063efca2eed1461036e57600080fd5b80633a98ef39116101085780633a98ef39146101e65780634fab0ae8146101fc57806366817df514610212578063715018a61461023f5780638c21cd52146102545780638da5cb5b1461028457600080fd5b806311ce023d1461014557806314b6ca961461016e57806326987b601461019057806328fd3198146101a65780632d48e896146101c6575b600080fd5b34801561015157600080fd5b5061015b600c5481565b6040519081526020015b60405180910390f35b34801561017a57600080fd5b5061018e610189366004610e81565b61042f565b005b34801561019c57600080fd5b5061015b600f5481565b3480156101b257600080fd5b5061015b6101c1366004610ead565b6105a7565b3480156101d257600080fd5b5061018e6101e1366004610ed1565b610630565b3480156101f257600080fd5b5061015b60085481565b34801561020857600080fd5b5061015b600e5481565b34801561021e57600080fd5b5061015b61022d366004610ead565b60066020526000908152604090205481565b34801561024b57600080fd5b5061018e610652565b34801561026057600080fd5b5061027461026f366004610ead565b6106bd565b6040519015158152602001610165565b34801561029057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610165565b3480156102c257600080fd5b5061015b60095481565b3480156102d857600080fd5b506103086102e7366004610ead565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610165565b61018e610703565b34801561033757600080fd5b5061015b610346366004610ead565b60056020526000908152604090205481565b34801561036457600080fd5b5061015b600b5481565b34801561037a57600080fd5b5061015b600a5481565b34801561039057600080fd5b5061018e6109aa565b3480156103a557600080fd5b5060035461029e906001600160a01b031681565b3480156103c557600080fd5b5061018e6103d4366004610ead565b610a08565b3480156103e557600080fd5b5060025461029e906001600160a01b031681565b34801561040557600080fd5b5061018e610414366004610ef3565b610ad3565b34801561042557600080fd5b5061015b600d5481565b6001546001600160a01b0316331461044657600080fd5b6001600160a01b0382166000908152600760205260409020541561046d5761046d82610bbc565b60008111801561049357506001600160a01b038216600090815260076020526040902054155b156104f957600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b031916909117905561052c565b8015801561051e57506001600160a01b03821660009081526007602052604090205415155b1561052c5761052c82610cea565b6001600160a01b038216600090815260076020526040902054600854829161055391610f22565b61055d9190610f39565b6008556001600160a01b038216600090815260076020526040902081905561058481610dff565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b0381166000908152600760205260408120546105cc57506000919050565b6001600160a01b0382166000908152600760205260408120546105ee90610dff565b6001600160a01b03841660009081526007602052604090206001015490915080821161061e575060009392505050565b6106288183610f22565b949350505050565b6001546001600160a01b0316331461064757600080fd5b600d91909155600e55565b6000546001600160a01b031633146106b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6106bb6000610e1c565b565b600d546001600160a01b038216600090815260066020526040812054909142916106e79190610f39565b1080156106fd5750600e546106fb836105a7565b115b92915050565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561074757600080fd5b505afa15801561075b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077f9190610f51565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156107e957600080fd5b505afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108219190610f6a565b8160008151811061083457610834610f87565b6001600160a01b03928316602091820292909201015260035482519116908290600190811061086557610865610f87565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906108ab90600090869030904290600401610f9d565b6000604051808303818588803b1580156108c457600080fd5b505af11580156108d8573d6000803e3d6000fd5b50506003546040516370a0823160e01b8152306004820152600094508693506001600160a01b0390911691506370a082319060240160206040518083038186803b15801561092557600080fd5b505afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190610f51565b6109679190610f22565b9050806009546109779190610f39565b600955600854600c5461098b908390611007565b6109959190611026565b600b546109a29190610f39565b600b55505050565b6109b3336106bd565b6109ff5760405162461bcd60e51b815260206004820152601760248201527f546f6f20736f6f6e2e204e65656420746f20776169742100000000000000000060448201526064016106a8565b6106bb33610bbc565b6000546001600160a01b03163314610a625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a8565b6001600160a01b038116610ac75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a8565b610ad081610e1c565b50565b60045480610adf575050565b60008060005a90505b8482108015610af657508383105b15610bb55783600f5410610b0a576000600f555b610b3c6004600f5481548110610b2257610b22610f87565b6000918252602090912001546001600160a01b03166106bd565b15610b7357610b736004600f5481548110610b5957610b59610f87565b6000918252602090912001546001600160a01b0316610bbc565b5a610b7e9082610f22565b610b889083610f39565b91505a600f80549192506000610b9d83611048565b91905055508280610bad90611048565b935050610ae8565b5050505050565b6001600160a01b038116600090815260076020526040902054610bdc5750565b6000610be7826105a7565b90508015610ce65780600a54610bfd9190610f39565b600a5560035460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190611063565b506001600160a01b0382166000908152600660209081526040808320429055600790915281206002018054839290610cbf908490610f39565b90915550506001600160a01b03821660009081526007602052604090205461058490610dff565b5050565b60048054610cfa90600190610f22565b81548110610d0a57610d0a610f87565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610d4857610d48610f87565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546004805491939291610d9490600190610f22565b81548110610da457610da4610f87565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610dda57610dda611085565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600c54600b5483610e129190611007565b6106fd9190611026565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610ad057600080fd5b60008060408385031215610e9457600080fd5b8235610e9f81610e6c565b946020939093013593505050565b600060208284031215610ebf57600080fd5b8135610eca81610e6c565b9392505050565b60008060408385031215610ee457600080fd5b50508035926020909101359150565b600060208284031215610f0557600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610f3457610f34610f0c565b500390565b60008219821115610f4c57610f4c610f0c565b500190565b600060208284031215610f6357600080fd5b5051919050565b600060208284031215610f7c57600080fd5b8151610eca81610e6c565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610fe75784516001600160a01b031683529383019391830191600101610fc2565b50506001600160a01b039690961660408501525050506060015292915050565b600081600019048311821515161561102157611021610f0c565b500290565b60008261104357634e487b7160e01b600052601260045260246000fd5b500490565b600060001982141561105c5761105c610f0c565b5060010190565b60006020828403121561107557600080fd5b81518015158114610eca57600080fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220d3cb1dac07c486224d9793feff178d4d36ecfeaa6b94862ee8f3f4c49f2c77fe64736f6c634300080900330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000000c4a49567cf002a99941cb19c973e794c04b8c30000000000000000000000000361641f29df1f79a0f664b2bef03c4b5b15ba423

Deployed Bytecode

0x6080604052600436106101405760003560e01c8063997664d7116100b6578063f0fc6bca1161006f578063f0fc6bca14610384578063f1e9f1e514610399578063f2fde38b146103b9578063f887ea40146103d9578063ffb2c479146103f9578063ffd49c841461041957600080fd5b8063997664d7146102b6578063ce7c2ac2146102cc578063d0e30db014610323578063d4fda1f21461032b578063e2d2e21914610358578063efca2eed1461036e57600080fd5b80633a98ef39116101085780633a98ef39146101e65780634fab0ae8146101fc57806366817df514610212578063715018a61461023f5780638c21cd52146102545780638da5cb5b1461028457600080fd5b806311ce023d1461014557806314b6ca961461016e57806326987b601461019057806328fd3198146101a65780632d48e896146101c6575b600080fd5b34801561015157600080fd5b5061015b600c5481565b6040519081526020015b60405180910390f35b34801561017a57600080fd5b5061018e610189366004610e81565b61042f565b005b34801561019c57600080fd5b5061015b600f5481565b3480156101b257600080fd5b5061015b6101c1366004610ead565b6105a7565b3480156101d257600080fd5b5061018e6101e1366004610ed1565b610630565b3480156101f257600080fd5b5061015b60085481565b34801561020857600080fd5b5061015b600e5481565b34801561021e57600080fd5b5061015b61022d366004610ead565b60066020526000908152604090205481565b34801561024b57600080fd5b5061018e610652565b34801561026057600080fd5b5061027461026f366004610ead565b6106bd565b6040519015158152602001610165565b34801561029057600080fd5b506000546001600160a01b03165b6040516001600160a01b039091168152602001610165565b3480156102c257600080fd5b5061015b60095481565b3480156102d857600080fd5b506103086102e7366004610ead565b60076020526000908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610165565b61018e610703565b34801561033757600080fd5b5061015b610346366004610ead565b60056020526000908152604090205481565b34801561036457600080fd5b5061015b600b5481565b34801561037a57600080fd5b5061015b600a5481565b34801561039057600080fd5b5061018e6109aa565b3480156103a557600080fd5b5060035461029e906001600160a01b031681565b3480156103c557600080fd5b5061018e6103d4366004610ead565b610a08565b3480156103e557600080fd5b5060025461029e906001600160a01b031681565b34801561040557600080fd5b5061018e610414366004610ef3565b610ad3565b34801561042557600080fd5b5061015b600d5481565b6001546001600160a01b0316331461044657600080fd5b6001600160a01b0382166000908152600760205260409020541561046d5761046d82610bbc565b60008111801561049357506001600160a01b038216600090815260076020526040902054155b156104f957600480546001600160a01b0384166000818152600560205260408120839055600183018455929092527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b031916909117905561052c565b8015801561051e57506001600160a01b03821660009081526007602052604090205415155b1561052c5761052c82610cea565b6001600160a01b038216600090815260076020526040902054600854829161055391610f22565b61055d9190610f39565b6008556001600160a01b038216600090815260076020526040902081905561058481610dff565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b0381166000908152600760205260408120546105cc57506000919050565b6001600160a01b0382166000908152600760205260408120546105ee90610dff565b6001600160a01b03841660009081526007602052604090206001015490915080821161061e575060009392505050565b6106288183610f22565b949350505050565b6001546001600160a01b0316331461064757600080fd5b600d91909155600e55565b6000546001600160a01b031633146106b15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6106bb6000610e1c565b565b600d546001600160a01b038216600090815260066020526040812054909142916106e79190610f39565b1080156106fd5750600e546106fb836105a7565b115b92915050565b6003546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a082319060240160206040518083038186803b15801561074757600080fd5b505afa15801561075b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077f9190610f51565b60408051600280825260608201835292935060009290916020830190803683375050600254604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c464892506004808301926020929190829003018186803b1580156107e957600080fd5b505afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108219190610f6a565b8160008151811061083457610834610f87565b6001600160a01b03928316602091820292909201015260035482519116908290600190811061086557610865610f87565b6001600160a01b03928316602091820292909201015260025460405163b6f9de9560e01b815291169063b6f9de959034906108ab90600090869030904290600401610f9d565b6000604051808303818588803b1580156108c457600080fd5b505af11580156108d8573d6000803e3d6000fd5b50506003546040516370a0823160e01b8152306004820152600094508693506001600160a01b0390911691506370a082319060240160206040518083038186803b15801561092557600080fd5b505afa158015610939573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095d9190610f51565b6109679190610f22565b9050806009546109779190610f39565b600955600854600c5461098b908390611007565b6109959190611026565b600b546109a29190610f39565b600b55505050565b6109b3336106bd565b6109ff5760405162461bcd60e51b815260206004820152601760248201527f546f6f20736f6f6e2e204e65656420746f20776169742100000000000000000060448201526064016106a8565b6106bb33610bbc565b6000546001600160a01b03163314610a625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106a8565b6001600160a01b038116610ac75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106a8565b610ad081610e1c565b50565b60045480610adf575050565b60008060005a90505b8482108015610af657508383105b15610bb55783600f5410610b0a576000600f555b610b3c6004600f5481548110610b2257610b22610f87565b6000918252602090912001546001600160a01b03166106bd565b15610b7357610b736004600f5481548110610b5957610b59610f87565b6000918252602090912001546001600160a01b0316610bbc565b5a610b7e9082610f22565b610b889083610f39565b91505a600f80549192506000610b9d83611048565b91905055508280610bad90611048565b935050610ae8565b5050505050565b6001600160a01b038116600090815260076020526040902054610bdc5750565b6000610be7826105a7565b90508015610ce65780600a54610bfd9190610f39565b600a5560035460405163a9059cbb60e01b81526001600160a01b038481166004830152602482018490529091169063a9059cbb90604401602060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c869190611063565b506001600160a01b0382166000908152600660209081526040808320429055600790915281206002018054839290610cbf908490610f39565b90915550506001600160a01b03821660009081526007602052604090205461058490610dff565b5050565b60048054610cfa90600190610f22565b81548110610d0a57610d0a610f87565b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610d4857610d48610f87565b600091825260208083209190910180546001600160a01b0319166001600160a01b03948516179055918316815260059182905260408120546004805491939291610d9490600190610f22565b81548110610da457610da4610f87565b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610dda57610dda611085565b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000600c54600b5483610e129190611007565b6106fd9190611026565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381168114610ad057600080fd5b60008060408385031215610e9457600080fd5b8235610e9f81610e6c565b946020939093013593505050565b600060208284031215610ebf57600080fd5b8135610eca81610e6c565b9392505050565b60008060408385031215610ee457600080fd5b50508035926020909101359150565b600060208284031215610f0557600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610f3457610f34610f0c565b500390565b60008219821115610f4c57610f4c610f0c565b500190565b600060208284031215610f6357600080fd5b5051919050565b600060208284031215610f7c57600080fd5b8151610eca81610e6c565b634e487b7160e01b600052603260045260246000fd5b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015610fe75784516001600160a01b031683529383019391830191600101610fc2565b50506001600160a01b039690961660408501525050506060015292915050565b600081600019048311821515161561102157611021610f0c565b500290565b60008261104357634e487b7160e01b600052601260045260246000fd5b500490565b600060001982141561105c5761105c610f0c565b5060010190565b60006020828403121561107557600080fd5b81518015158114610eca57600080fd5b634e487b7160e01b600052603160045260246000fdfea2646970667358221220d3cb1dac07c486224d9793feff178d4d36ecfeaa6b94862ee8f3f4c49f2c77fe64736f6c63430008090033

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

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000000c4a49567cf002a99941cb19c973e794c04b8c30000000000000000000000000361641f29df1f79a0f664b2bef03c4b5b15ba423

-----Decoded View---------------
Arg [0] : _router (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _reflectionToken (address): 0x0c4A49567Cf002A99941cb19C973E794c04B8c30
Arg [2] : token (address): 0x361641f29dF1F79A0F664B2Bef03c4b5b15BA423

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000000c4a49567cf002a99941cb19c973e794c04b8c30
Arg [2] : 000000000000000000000000361641f29df1f79a0f664b2bef03c4b5b15ba423


Deployed Bytecode Sourcemap

11835:6189:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12460:55;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;12460:55:0;;;;;;;;13514:701;;;;;;;;;;-1:-1:-1;13514:701:0;;;;;:::i;:::-;;:::i;:::-;;12622:27;;;;;;;;;;;;;;;;16710:582;;;;;;;;;;-1:-1:-1;16710:582:0;;;;;:::i;:::-;;:::i;13280:226::-;;;;;;;;;;-1:-1:-1;13280:226:0;;;;;:::i;:::-;;:::i;12314:26::-;;;;;;;;;;;;;;;;12568:45;;;;;;;;;;;;;;;;12207:52;;;;;;;;;;-1:-1:-1;12207:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;10848:94;;;;;;;;;;;;;:::i;15677:238::-;;;;;;;;;;-1:-1:-1;15677:238:0;;;;;:::i;:::-;;:::i;:::-;;;1322:14:1;;1315:22;1297:41;;1285:2;1270:18;15677:238:0;1157:187:1;10197:87:0;;;;;;;;;;-1:-1:-1;10243:7:0;10270:6;-1:-1:-1;;;;;10270:6:0;10197:87;;;-1:-1:-1;;;;;1513:32:1;;;1495:51;;1483:2;1468:18;10197:87:0;1349:203:1;12347:29:0;;;;;;;;;;;;;;;;12266:39;;;;;;;;;;-1:-1:-1;12266:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1759:25:1;;;1815:2;1800:18;;1793:34;;;;1843:18;;;1836:34;1747:2;1732:18;12266:39:0;1557:319:1;14223:673:0;;;:::i;12147:53::-;;;;;;;;;;-1:-1:-1;12147:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;12421:32;;;;;;;;;;;;;;;;12383:31;;;;;;;;;;;;;;;;16544:158;;;;;;;;;;;;;:::i;12084:25::-;;;;;;;;;;-1:-1:-1;12084:25:0;;;;-1:-1:-1;;;;;12084:25:0;;;11097:229;;;;;;;;;;-1:-1:-1;11097:229:0;;;;;:::i;:::-;;:::i;12045:32::-;;;;;;;;;;-1:-1:-1;12045:32:0;;;;-1:-1:-1;;;;;12045:32:0;;;14904:765;;;;;;;;;;-1:-1:-1;14904:765:0;;;;;:::i;:::-;;:::i;12524:37::-;;;;;;;;;;;;;;;;13514:701;12850:6;;-1:-1:-1;;;;;12850:6:0;12836:10;:20;12828:29;;;;;;-1:-1:-1;;;;;13644:19:0;::::1;13673:1;13644:19:::0;;;:6:::1;:19;::::0;;;;:26;:30;13640:94:::1;;13691:31;13710:11;13691:18;:31::i;:::-;13759:1;13750:6;:10;:45;;;;-1:-1:-1::0;;;;;;13764:19:0;::::1;;::::0;;;:6:::1;:19;::::0;;;;:26;:31;13750:45:::1;13746:219;;;17605:12:::0;:19;;-1:-1:-1;;;;;17571:31:0;;;;;;:18;:31;;;;;:53;;;17635:30;;;;;;;;;;;;;-1:-1:-1;;;;;;17635:30:0;;;;;;13746:219:::1;;;13861:11:::0;;:45;::::1;;;-1:-1:-1::0;;;;;;13876:19:0;::::1;13905:1;13876:19:::0;;;:6:::1;:19;::::0;;;;:26;:30;;13861:45:::1;13857:108;;;13923:30;13941:11;13923:17;:30::i;:::-;-1:-1:-1::0;;;;;14005:19:0;::::1;;::::0;;;:6:::1;:19;::::0;;;;:26;13991:11:::1;::::0;14034:6;;13991:40:::1;::::0;::::1;:::i;:::-;:49;;;;:::i;:::-;13977:11;:63:::0;-1:-1:-1;;;;;14051:19:0;::::1;;::::0;;;:6:::1;:19;::::0;;;;:35;;;14133:74:::1;14080:6:::0;14133:22:::1;:74::i;:::-;-1:-1:-1::0;;;;;14097:19:0;;::::1;;::::0;;;:6:::1;:19;::::0;;;;:33:::1;;:110:::0;;;;-1:-1:-1;13514:701:0:o;16710:582::-;-1:-1:-1;;;;;16835:19:0;;16806:7;16835:19;;;:6;:19;;;;;:26;16831:72;;-1:-1:-1;16890:1:0;;16710:582;-1:-1:-1;16710:582:0:o;16831:72::-;-1:-1:-1;;;;;16988:19:0;;16915:33;16988:19;;;:6;:19;;;;;:26;16951:74;;:22;:74::i;:::-;-1:-1:-1;;;;;17071:19:0;;17036:32;17071:19;;;:6;:19;;;;;:33;;;16915:110;;-1:-1:-1;17121:53:0;;;17117:94;;-1:-1:-1;17198:1:0;;16710:582;-1:-1:-1;;;16710:582:0:o;17117:94::-;17231:52;17259:24;17231:25;:52;:::i;:::-;17223:61;16710:582;-1:-1:-1;;;;16710:582:0:o;13280:226::-;12850:6;;-1:-1:-1;;;;;12850:6:0;12836:10;:20;12828:29;;;;;;13427:9:::1;:24:::0;;;;13462:15:::1;:36:::0;13280:226::o;10848:94::-;10243:7;10270:6;-1:-1:-1;;;;;10270:6:0;9128:10;10417:23;10409:68;;;;-1:-1:-1;;;10409:68:0;;3118:2:1;10409:68:0;;;3100:21:1;;;3137:18;;;3130:30;3196:34;3176:18;;;3169:62;3248:18;;10409:68:0;;;;;;;;;10913:21:::1;10931:1;10913:9;:21::i;:::-;10848:94::o:0;15677:238::-;15815:9;;-1:-1:-1;;;;;15782:30:0;;15745:4;15782:30;;;:17;:30;;;;;;15745:4;;15827:15;;15782:42;;15815:9;15782:42;:::i;:::-;:60;:125;;;;;15892:15;;15859:30;15877:11;15859:17;:30::i;:::-;:48;15782:125;15762:145;15677:238;-1:-1:-1;;15677:238:0:o;14223:673::-;14303:11;;:36;;-1:-1:-1;;;14303:36:0;;14333:4;14303:36;;;1495:51:1;14279:21:0;;-1:-1:-1;;;;;14303:11:0;;:21;;1468:18:1;;14303:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14376:16;;;14390:1;14376:16;;;;;;;;14279:60;;-1:-1:-1;14352:21:0;;14376:16;;;;;;;;;;-1:-1:-1;;14413:6:0;;:13;;;-1:-1:-1;;;14413:13:0;;;;14352:40;;-1:-1:-1;;;;;;14413:6:0;;;;:11;;-1:-1:-1;14413:13:0;;;;;;;;;;;;;;:6;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14403:4;14408:1;14403:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14403:23:0;;;:7;;;;;;;;;:23;14455:11;;14437:7;;14455:11;;;14437:4;;14455:11;;14437:7;;;;;;:::i;:::-;-1:-1:-1;;;;;14437:30:0;;;:7;;;;;;;;;:30;14480:6;;:140;;-1:-1:-1;;;14480:140:0;;:6;;;:57;;14559:9;;14480:140;;:6;;14583:4;;14597;;14604:15;;14480:140;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14650:11:0;;:36;;-1:-1:-1;;;14650:36:0;;14680:4;14650:36;;;1495:51:1;14633:14:0;;-1:-1:-1;14689:13:0;;-1:-1:-1;;;;;;14650:11:0;;;;-1:-1:-1;14650:21:0;;1468:18:1;;14650:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:52;;;;:::i;:::-;14633:69;;14747:6;14730:14;;:23;;;;:::i;:::-;14713:14;:40;14876:11;;14832:31;;:40;;14866:6;;14832:40;:::i;:::-;14831:56;;;;:::i;:::-;14797:17;;:91;;;;:::i;:::-;14764:17;:124;-1:-1:-1;;;14223:673:0:o;16544:158::-;16597:28;16614:10;16597:16;:28::i;:::-;16589:64;;;;-1:-1:-1;;;16589:64:0;;5496:2:1;16589:64:0;;;5478:21:1;5535:2;5515:18;;;5508:30;5574:25;5554:18;;;5547:53;5617:18;;16589:64:0;5294:347:1;16589:64:0;16664:30;16683:10;16664:18;:30::i;11097:229::-;10243:7;10270:6;-1:-1:-1;;;;;10270:6:0;9128:10;10417:23;10409:68;;;;-1:-1:-1;;;10409:68:0;;3118:2:1;10409:68:0;;;3100:21:1;;;3137:18;;;3130:30;3196:34;3176:18;;;3169:62;3248:18;;10409:68:0;2916:356:1;10409:68:0;-1:-1:-1;;;;;11200:22:0;::::1;11178:110;;;::::0;-1:-1:-1;;;11178:110:0;;5848:2:1;11178:110:0::1;::::0;::::1;5830:21:1::0;5887:2;5867:18;;;5860:30;5926:34;5906:18;;;5899:62;-1:-1:-1;;;5977:18:1;;;5970:36;6023:19;;11178:110:0::1;5646:402:1::0;11178:110:0::1;11299:19;11309:8;11299:9;:19::i;:::-;11097:229:::0;:::o;14904:765::-;14990:12;:19;15026:21;15022:60;;15064:7;14904:765;:::o;15022:60::-;15094:18;15127:15;15157;15175:9;15157:27;;15197:465;15214:3;15204:7;:13;:46;;;;;15234:16;15221:10;:29;15204:46;15197:465;;;15287:16;15271:12;;:32;15267:89;;15339:1;15324:12;:16;15267:89;15376:44;15393:12;15406;;15393:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;15393:26:0;15376:16;:44::i;:::-;15372:131;;;15441:46;15460:12;15473;;15460:26;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;15460:26:0;15441:18;:46::i;:::-;15550:9;15540:19;;:7;:19;:::i;:::-;15529:31;;:7;:31;:::i;:::-;15519:41;;15585:9;15609:12;:14;;15575:19;;-1:-1:-1;15609:12:0;:14;;;:::i;:::-;;;;;;15638:12;;;;;:::i;:::-;;;;15197:465;;;14952:717;;;;14904:765;:::o;15923:613::-;-1:-1:-1;;;;;15996:19:0;;;;;;:6;:19;;;;;:26;15992:70;;15923:613;:::o;15992:70::-;16074:14;16091:30;16109:11;16091:17;:30::i;:::-;16074:47;-1:-1:-1;16136:10:0;;16132:397;;16201:6;16182:16;;:25;;;;:::i;:::-;16163:16;:44;16222:11;;:41;;-1:-1:-1;;;16222:41:0;;-1:-1:-1;;;;;6385:32:1;;;16222:41:0;;;6367:51:1;6434:18;;;6427:34;;;16222:11:0;;;;:20;;6340:18:1;;16222:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;16278:30:0;;;;;;:17;:30;;;;;;;;16311:15;16278:48;;16341:6;:19;;;;;:33;;:43;;16378:6;;16278:30;16341:43;;16378:6;;16341:43;:::i;:::-;;;;-1:-1:-1;;;;;;;16476:19:0;;;;;;:6;:19;;;;;:26;16435:82;;:22;:82::i;16132:397::-;15981:555;15923:613;:::o;17681:340::-;17797:12;17824:19;;:23;;17846:1;;17824:23;:::i;:::-;17797:61;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17762:31:0;;;;;:18;:31;;;;;;;;17749:12;:45;;17797:61;;;;;17749:12;:45;;;;;;:::i;:::-;;;;;;;;;;;;;:109;;-1:-1:-1;;;;;;17749:109:0;-1:-1:-1;;;;;17749:109:0;;;;;;17953:31;;;;;:18;:31;;;;;;;;17902:12;17915:19;;17953:31;;:18;17749:45;17915:23;;-1:-1:-1;;17915:23:0;:::i;:::-;17902:37;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17902:37:0;17869:81;;;;;;;;;;;;:115;17995:12;:18;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;17995:18:0;;;;;-1:-1:-1;;;;;;17995:18:0;;;;;;-1:-1:-1;17681:340:0:o;17300:198::-;17397:7;17459:31;;17438:17;;17430:5;:25;;;;:::i;:::-;17429:61;;;;:::i;11334:173::-;11390:16;11409:6;;-1:-1:-1;;;;;11426:17:0;;;-1:-1:-1;;;;;;11426:17:0;;;;;;11459:40;;11409:6;;;;;;;11459:40;;11390:16;11459:40;11379:128;11334:173;:::o;196:131:1:-;-1:-1:-1;;;;;271:31:1;;261:42;;251:70;;317:1;314;307:12;332:315;400:6;408;461:2;449:9;440:7;436:23;432:32;429:52;;;477:1;474;467:12;429:52;516:9;503:23;535:31;560:5;535:31;:::i;:::-;585:5;637:2;622:18;;;;609:32;;-1:-1:-1;;;332:315:1:o;652:247::-;711:6;764:2;752:9;743:7;739:23;735:32;732:52;;;780:1;777;770:12;732:52;819:9;806:23;838:31;863:5;838:31;:::i;:::-;888:5;652:247;-1:-1:-1;;;652:247:1:o;904:248::-;972:6;980;1033:2;1021:9;1012:7;1008:23;1004:32;1001:52;;;1049:1;1046;1039:12;1001:52;-1:-1:-1;;1072:23:1;;;1142:2;1127:18;;;1114:32;;-1:-1:-1;904:248:1:o;2336:180::-;2395:6;2448:2;2436:9;2427:7;2423:23;2419:32;2416:52;;;2464:1;2461;2454:12;2416:52;-1:-1:-1;2487:23:1;;2336:180;-1:-1:-1;2336:180:1:o;2521:127::-;2582:10;2577:3;2573:20;2570:1;2563:31;2613:4;2610:1;2603:15;2637:4;2634:1;2627:15;2653:125;2693:4;2721:1;2718;2715:8;2712:34;;;2726:18;;:::i;:::-;-1:-1:-1;2763:9:1;;2653:125::o;2783:128::-;2823:3;2854:1;2850:6;2847:1;2844:13;2841:39;;;2860:18;;:::i;:::-;-1:-1:-1;2896:9:1;;2783:128::o;3277:184::-;3347:6;3400:2;3388:9;3379:7;3375:23;3371:32;3368:52;;;3416:1;3413;3406:12;3368:52;-1:-1:-1;3439:16:1;;3277:184;-1:-1:-1;3277:184:1:o;3598:251::-;3668:6;3721:2;3709:9;3700:7;3696:23;3692:32;3689:52;;;3737:1;3734;3727:12;3689:52;3769:9;3763:16;3788:31;3813:5;3788:31;:::i;3854:127::-;3915:10;3910:3;3906:20;3903:1;3896:31;3946:4;3943:1;3936:15;3970:4;3967:1;3960:15;3986:908;4220:4;4268:3;4257:9;4253:19;4299:6;4288:9;4281:25;4325:2;4363:3;4358:2;4347:9;4343:18;4336:31;4387:6;4422;4416:13;4453:6;4445;4438:22;4491:3;4480:9;4476:19;4469:26;;4530:2;4522:6;4518:15;4504:29;;4551:1;4561:195;4575:6;4572:1;4569:13;4561:195;;;4640:13;;-1:-1:-1;;;;;4636:39:1;4624:52;;4731:15;;;;4696:12;;;;4672:1;4590:9;4561:195;;;-1:-1:-1;;;;;;;4812:32:1;;;;4807:2;4792:18;;4785:60;-1:-1:-1;;;4876:2:1;4861:18;4854:34;4773:3;3986:908;-1:-1:-1;;3986:908:1:o;4899:168::-;4939:7;5005:1;5001;4997:6;4993:14;4990:1;4987:21;4982:1;4975:9;4968:17;4964:45;4961:71;;;5012:18;;:::i;:::-;-1:-1:-1;5052:9:1;;4899:168::o;5072:217::-;5112:1;5138;5128:132;;5182:10;5177:3;5173:20;5170:1;5163:31;5217:4;5214:1;5207:15;5245:4;5242:1;5235:15;5128:132;-1:-1:-1;5274:9:1;;5072:217::o;6053:135::-;6092:3;-1:-1:-1;;6113:17:1;;6110:43;;;6133:18;;:::i;:::-;-1:-1:-1;6180:1:1;6169:13;;6053:135::o;6472:277::-;6539:6;6592:2;6580:9;6571:7;6567:23;6563:32;6560:52;;;6608:1;6605;6598:12;6560:52;6640:9;6634:16;6693:5;6686:13;6679:21;6672:5;6669:32;6659:60;;6715:1;6712;6705:12;6754:127;6815:10;6810:3;6806:20;6803:1;6796:31;6846:4;6843:1;6836:15;6870:4;6867:1;6860:15

Swarm Source

ipfs://d3cb1dac07c486224d9793feff178d4d36ecfeaa6b94862ee8f3f4c49f2c77fe

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.