Contract 0x5fa944f97bda599dfaa77f7a205f84618d1fa641

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xf34e88fd9ca0e0299f14ae098ec052c66ab4f96790404429bb7b5d040ad746280x60806040630910542023-05-26 1:03:248 days 6 hrs ago0xc300051bae03a3d1596da8bb07030c07fb5d7d5e IN  Create: OxDaoSunsetClaimer0 FTM0.07415267268
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xf34e88fd9ca0e0299f14ae098ec052c66ab4f96790404429bb7b5d040ad74628630910542023-05-26 1:03:248 days 6 hrs ago 0xc300051bae03a3d1596da8bb07030c07fb5d7d5e  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
OxDaoSunsetClaimer

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at FtmScan.com on 2023-05-26
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.11;

interface IERC20 {
    function transfer(address, uint256) external;

    function transferFrom(address, address, uint256) external;

    function balanceOf(address) external view returns (uint256);
}

interface ILp {
    function transfer(address, uint256) external;

    function transferFrom(address, address, uint256) external;

    function balanceOf(address) external view returns (uint256);

    function burn(address) external;

    function token0() external view returns (address);

    function token1() external view returns (address);
}

interface IMultiRewards {
    function rewardTokensLength() external view returns (uint256);
}

interface IOxLens {
    struct PositionStakingPool {
        address stakingPoolAddress;
        address oxPoolAddress;
        address solidPoolAddress;
        uint256 balanceOf;
        RewardToken[] rewardTokens;
    }

    struct RewardToken {
        address rewardTokenAddress;
        uint256 rewardRate;
        uint256 rewardPerToken;
        uint256 getRewardForDuration;
        uint256 earned;
    }

    function oxPoolBySolidPool(address) external view returns (address);

    function stakingPoolsPositions(
        address
    ) external view returns (PositionStakingPool[] memory);

    function stakingPoolPosition(
        address,
        address
    ) external view returns (PositionStakingPool memory);

    function stakingRewardsBySolidPool(address) external view returns (address);
}

/**
 * @title 0xDao Sunset Claimer
 * @notice Allow legacy 0xDAO users to claim their LP share positions in one place
 *
 * Sunset rules:
 *   - No new LP token deposits allowed (oxPool tokens can be transferred and withdrawn but not minted)
 *   - No new veNFT deposits allowed (oxSOLID can be transferred, but not minted)
 *   - Staking pools must be frozen before migration (no new deposits or withdrawals)
 *   - oxPool tokens must be forefeitted to claim
 *
 * Claimable positions
 *   - User proxy oxPool stakes
 *   - Direct oxPool stakes
 *   - Unstaked oxPool tokens
 */
contract OxDaoSunsetClaimer {
    mapping(address => uint256) public amountStoredByLp;
    address voterProxyAssets = 0xDA00eA1c3813658325243e7ABb1f1Cac628Eb582;
    IOxLens oxLens = IOxLens(0xDA00137c79B30bfE06d04733349d98Cf06320e69);
    address public constant deadAddress =
        0x000000000000000000000000000000000000dEaD;

    /**
     * @notice Transfer LP from voterProxy assets to sunet claimer, store the amount and break up the LP
     * @notice Requires approval from voterProxyAssets as well as frozen staking pool
     */
    function migrateLp(address solidPoolAddress) external {
        // One time migration, protocol is sunset
        require(amountStoredByLp[solidPoolAddress] == 0, "Already  migrated");

        // Staking pool must be frozen to prevent double claims
        require(
            stakingPoolFrozenForLp(solidPoolAddress),
            "Staking pool must be frozen to migrate"
        );

        // Migrate LP
        ILp lp = ILp(solidPoolAddress);
        uint256 amount = lp.balanceOf(voterProxyAssets);

        lp.transferFrom(voterProxyAssets, address(lp), amount);
        amountStoredByLp[solidPoolAddress] = amount;

        // Withdraw LP
        lp.burn(address(this));
    }

    /**
     * @notice If the user has a user proxy (majority of users) they can claim all with one click
     * @notice Most users should use this method
     */
    function claimByUserProxyStakes() external {
        // Find all stakes
        IOxLens.PositionStakingPool[] memory positions = oxLens
            .stakingPoolsPositions(msg.sender);
        for (
            uint256 positionIdx;
            positionIdx < positions.length;
            positionIdx++
        ) {
            IOxLens.PositionStakingPool memory position = positions[
                positionIdx
            ];
            _redeem(position.balanceOf, position.solidPoolAddress);
        }
    }

    /**
     * @notice Allow claiming of individual user proxy staked pools
     * @notice Prevent out of gas in the event user has many staking pools
     */
    function claimByUserProxyStake(address solidPoolAddress) external {
        address stakingPoolAddress = oxLens.stakingRewardsBySolidPool(
            solidPoolAddress
        );
        IOxLens.PositionStakingPool memory position = oxLens
            .stakingPoolPosition(msg.sender, stakingPoolAddress);
        _redeem(position.balanceOf, position.solidPoolAddress);
    }

    /**
     * @notice Direct stakes can claim one pool at a time
     */
    function claimByDirectStake(address solidPoolAddress) external {
        address stakingPoolAddress = oxLens.stakingRewardsBySolidPool(
            solidPoolAddress
        );
        uint256 amount = IERC20(stakingPoolAddress).balanceOf(msg.sender);
        _redeem(amount, solidPoolAddress);
    }

    /**
     * @notice Unstaked oxPool tokens can be burned for stored LP share
     */
    function claimByOxPoolBurn(address solidPoolAddress) external {
        IERC20 oxPool = IERC20(oxLens.oxPoolBySolidPool(solidPoolAddress));
        uint256 amount = oxPool.balanceOf(msg.sender);
        oxPool.transferFrom(msg.sender, address(this), amount);
        oxPool.transfer(deadAddress, amount);
        _redeem(amount, solidPoolAddress);
    }

    /**
     * @notice Process redemptions
     */
    function _redeem(uint256 amountOwed, address solidPoolAddress) internal {
        // Determine amount owed and stored
        uint256 amountStored = amountStoredByLp[solidPoolAddress];

        // Redeem shares
        if (amountOwed > 0 && amountStored > 0) {
            uint256 userShareRatio = (amountOwed * 1e18) / amountStored;
            ILp lp = ILp(solidPoolAddress);
            IERC20 token0 = IERC20(lp.token0());
            IERC20 token1 = IERC20(lp.token1());
            uint256 token0Amount = (token0.balanceOf(address(this)) *
                userShareRatio) / 10 ** 18;
            uint256 token1Amount = (token1.balanceOf(address(this)) *
                userShareRatio) / 10 ** 18;
            token0.transfer(msg.sender, token0Amount);
            token1.transfer(msg.sender, token1Amount);
        }
    }

    /**
     * @notice Check to see if a multirewards pool is frozen
     * @dev Each staking token added adds 41,527 gas to the withdraw method
     * @dev Initial exit cost without any rewards is 10,113
     * @dev To achieve out of gas on fantom we need exit to exceed 8m gas (10m from within a node)
     * @dev 10,000,000 / 41,527 = 241, so, we choose a reward pool with token length of 250 to enforce OOG on exit
     * @dev This prevents preventing double claims on oxPools without requiring the user to unstake
     * @dev Staked LP tokens (both user proxy stakes and direct stakes) can only be redeemed from this contract
     */
    function stakingPoolFrozenForLp(
        address solidPoolAddress
    ) internal view returns (bool) {
        uint256 threshold = 250;
        address stakingPoolAddress = oxLens.stakingRewardsBySolidPool(
            solidPoolAddress
        );
        require(
            IMultiRewards(stakingPoolAddress).rewardTokensLength() >= threshold,
            "Staking rewards not frozen"
        );
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"amountStoredByLp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"solidPoolAddress","type":"address"}],"name":"claimByDirectStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"solidPoolAddress","type":"address"}],"name":"claimByOxPoolBurn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"solidPoolAddress","type":"address"}],"name":"claimByUserProxyStake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimByUserProxyStakes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"solidPoolAddress","type":"address"}],"name":"migrateLp","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405273da00ea1c3813658325243e7abb1f1cac628eb582600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073da00137c79b30bfe06d04733349d98cf06320e69600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156100ba57600080fd5b506117ce806100ca6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80634a9d37571161005b5780634a9d3757146100d8578063633b2440146100f457806396b1ab7e14610110578063d72b8491146101405761007d565b806307e1770c1461008257806327c8f8351461009e578063466c387e146100bc575b600080fd5b61009c60048036038101906100979190610f03565b61014a565b005b6100a66103fc565b6040516100b39190610f3f565b60405180910390f35b6100d660048036038101906100d19190610f03565b610402565b005b6100f260048036038101906100ed9190610f03565b61052f565b005b61010e60048036038101906101099190610f03565b61068d565b005b61012a60048036038101906101259190610f03565b610898565b6040516101379190610f73565b60405180910390f35b6101486108b0565b005b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146101cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101c290610feb565b60405180910390fd5b6101d4816109aa565b610213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161020a9061107d565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016102759190610f3f565b602060405180830381865afa158015610292573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b691906110c9565b90508173ffffffffffffffffffffffffffffffffffffffff166323b872dd600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684846040518463ffffffff1660e01b8152600401610317939291906110f6565b600060405180830381600087803b15801561033157600080fd5b505af1158015610345573d6000803e3d6000fd5b50505050806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff166389afcb44306040518263ffffffff1660e01b81526004016103c59190610f3f565b600060405180830381600087803b1580156103df57600080fd5b505af11580156103f3573d6000803e3d6000fd5b50505050505050565b61dead81565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663852d7ab8836040518263ffffffff1660e01b815260040161045f9190610f3f565b602060405180830381865afa15801561047c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a09190611142565b905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016104dd9190610f3f565b602060405180830381865afa1580156104fa573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061051e91906110c9565b905061052a8184610b0d565b505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663852d7ab8836040518263ffffffff1660e01b815260040161058c9190610f3f565b602060405180830381865afa1580156105a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105cd9190611142565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633514410433846040518363ffffffff1660e01b815260040161062e92919061116f565b600060405180830381865afa15801561064b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250810190610674919061142f565b905061068881606001518260400151610b0d565b505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166310d4570c836040518263ffffffff1660e01b81526004016106ea9190610f3f565b602060405180830381865afa158015610707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061072b9190611142565b905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016107689190610f3f565b602060405180830381865afa158015610785573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a991906110c9565b90508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016107e8939291906110f6565b600060405180830381600087803b15801561080257600080fd5b505af1158015610816573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb61dead836040518363ffffffff1660e01b8152600401610857929190611478565b600060405180830381600087803b15801561087157600080fd5b505af1158015610885573d6000803e3d6000fd5b505050506108938184610b0d565b505050565b60006020528060005260406000206000915090505481565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca877f03336040518263ffffffff1660e01b815260040161090d9190610f3f565b600060405180830381865afa15801561092a573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906109539190611582565b905060005b81518110156109a6576000828281518110610976576109756115cb565b5b6020026020010151905061099281606001518260400151610b0d565b50808061099e90611629565b915050610958565b5050565b60008060fa90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663852d7ab8856040518263ffffffff1660e01b8152600401610a0e9190610f3f565b602060405180830381865afa158015610a2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4f9190611142565b9050818173ffffffffffffffffffffffffffffffffffffffff1663bf199e626040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac191906110c9565b1015610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af9906116be565b60405180910390fd5b600192505050919050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600083118015610b605750600081115b15610e8c57600081670de0b6b3a764000085610b7c91906116de565b610b869190611767565b9050600083905060008173ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bda573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bfe9190611142565b905060008273ffffffffffffffffffffffffffffffffffffffff1663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c719190611142565b90506000670de0b6b3a7640000858473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610cb89190610f3f565b602060405180830381865afa158015610cd5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf991906110c9565b610d0391906116de565b610d0d9190611767565b90506000670de0b6b3a7640000868473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d549190610f3f565b602060405180830381865afa158015610d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9591906110c9565b610d9f91906116de565b610da99190611767565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610de6929190611478565b600060405180830381600087803b158015610e0057600080fd5b505af1158015610e14573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610e53929190611478565b600060405180830381600087803b158015610e6d57600080fd5b505af1158015610e81573d6000803e3d6000fd5b505050505050505050505b505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610ed082610ea5565b9050919050565b610ee081610ec5565b8114610eeb57600080fd5b50565b600081359050610efd81610ed7565b92915050565b600060208284031215610f1957610f18610e9b565b5b6000610f2784828501610eee565b91505092915050565b610f3981610ec5565b82525050565b6000602082019050610f546000830184610f30565b92915050565b6000819050919050565b610f6d81610f5a565b82525050565b6000602082019050610f886000830184610f64565b92915050565b600082825260208201905092915050565b7f416c726561647920206d69677261746564000000000000000000000000000000600082015250565b6000610fd5601183610f8e565b9150610fe082610f9f565b602082019050919050565b6000602082019050818103600083015261100481610fc8565b9050919050565b7f5374616b696e6720706f6f6c206d7573742062652066726f7a656e20746f206d60008201527f6967726174650000000000000000000000000000000000000000000000000000602082015250565b6000611067602683610f8e565b91506110728261100b565b604082019050919050565b600060208201905081810360008301526110968161105a565b9050919050565b6110a681610f5a565b81146110b157600080fd5b50565b6000815190506110c38161109d565b92915050565b6000602082840312156110df576110de610e9b565b5b60006110ed848285016110b4565b91505092915050565b600060608201905061110b6000830186610f30565b6111186020830185610f30565b6111256040830184610f64565b949350505050565b60008151905061113c81610ed7565b92915050565b60006020828403121561115857611157610e9b565b5b60006111668482850161112d565b91505092915050565b60006040820190506111846000830185610f30565b6111916020830184610f30565b9392505050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6111e68261119d565b810181811067ffffffffffffffff82111715611205576112046111ae565b5b80604052505050565b6000611218610e91565b905061122482826111dd565b919050565b600080fd5b600080fd5b600067ffffffffffffffff82111561124e5761124d6111ae565b5b602082029050602081019050919050565b600080fd5b600060a0828403121561127a57611279611198565b5b61128460a061120e565b905060006112948482850161112d565b60008301525060206112a8848285016110b4565b60208301525060406112bc848285016110b4565b60408301525060606112d0848285016110b4565b60608301525060806112e4848285016110b4565b60808301525092915050565b60006113036112fe84611233565b61120e565b90508083825260208201905060a084028301858111156113265761132561125f565b5b835b8181101561134f578061133b8882611264565b84526020840193505060a081019050611328565b5050509392505050565b600082601f83011261136e5761136d61122e565b5b815161137e8482602086016112f0565b91505092915050565b600060a0828403121561139d5761139c611198565b5b6113a760a061120e565b905060006113b78482850161112d565b60008301525060206113cb8482850161112d565b60208301525060406113df8482850161112d565b60408301525060606113f3848285016110b4565b606083015250608082015167ffffffffffffffff81111561141757611416611229565b5b61142384828501611359565b60808301525092915050565b60006020828403121561144557611444610e9b565b5b600082015167ffffffffffffffff81111561146357611462610ea0565b5b61146f84828501611387565b91505092915050565b600060408201905061148d6000830185610f30565b61149a6020830184610f64565b9392505050565b600067ffffffffffffffff8211156114bc576114bb6111ae565b5b602082029050602081019050919050565b60006114e06114db846114a1565b61120e565b905080838252602082019050602084028301858111156115035761150261125f565b5b835b8181101561154a57805167ffffffffffffffff8111156115285761152761122e565b5b8086016115358982611387565b85526020850194505050602081019050611505565b5050509392505050565b600082601f8301126115695761156861122e565b5b81516115798482602086016114cd565b91505092915050565b60006020828403121561159857611597610e9b565b5b600082015167ffffffffffffffff8111156115b6576115b5610ea0565b5b6115c284828501611554565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061163482610f5a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611667576116666115fa565b5b600182019050919050565b7f5374616b696e672072657761726473206e6f742066726f7a656e000000000000600082015250565b60006116a8601a83610f8e565b91506116b382611672565b602082019050919050565b600060208201905081810360008301526116d78161169b565b9050919050565b60006116e982610f5a565b91506116f483610f5a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561172d5761172c6115fa565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061177282610f5a565b915061177d83610f5a565b92508261178d5761178c611738565b5b82820490509291505056fea264697066735822122074d03238702abd0f7f9fb9b2e7076eacc21e097c44ad9e2ddd5a9c64332240e164736f6c634300080b0033

Deployed ByteCode Sourcemap

2170:5356:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2723:703;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2414:89;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4761:305;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4294:382;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5165:359;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2205:51;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3601:522;;;:::i;:::-;;2723:703;2885:1;2847:16;:34;2864:16;2847:34;;;;;;;;;;;;;;;;:39;2839:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;3008:40;3031:16;3008:22;:40::i;:::-;2986:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;3150:6;3163:16;3150:30;;3191:14;3208:2;:12;;;3221:16;;;;;;;;;;;3208:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3191:47;;3251:2;:15;;;3267:16;;;;;;;;;;;3293:2;3298:6;3251:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3353:6;3316:16;:34;3333:16;3316:34;;;;;;;;;;;;;;;:43;;;;3396:2;:7;;;3412:4;3396:22;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2777:649;;2723:703;:::o;2414:89::-;2461:42;2414:89;:::o;4761:305::-;4835:26;4864:6;;;;;;;;;;;:32;;;4911:16;4864:74;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4835:103;;4949:14;4973:18;4966:36;;;5003:10;4966:48;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4949:65;;5025:33;5033:6;5041:16;5025:7;:33::i;:::-;4824:242;;4761:305;:::o;4294:382::-;4371:26;4400:6;;;;;;;;;;;:32;;;4447:16;4400:74;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4371:103;;4485:43;4531:6;;;;;;;;;;;:40;;;4572:10;4584:18;4531:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4485:118;;4614:54;4622:8;:18;;;4642:8;:25;;;4614:7;:54::i;:::-;4360:316;;4294:382;:::o;5165:359::-;5238:13;5261:6;;;;;;;;;;;:24;;;5286:16;5261:42;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5238:66;;5315:14;5332:6;:16;;;5349:10;5332:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5315:45;;5371:6;:19;;;5391:10;5411:4;5418:6;5371:54;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5436:6;:15;;;2461:42;5465:6;5436:36;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5483:33;5491:6;5499:16;5483:7;:33::i;:::-;5227:297;;5165:359;:::o;2205:51::-;;;;;;;;;;;;;;;;;:::o;3601:522::-;3683:46;3732:6;;;;;;;;;;;:42;;;3775:10;3732:54;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3683:103;;3816:19;3797:319;3864:9;:16;3850:11;:30;3797:319;;;3935:43;3981:9;4009:11;3981:54;;;;;;;;:::i;:::-;;;;;;;;3935:100;;4050:54;4058:8;:18;;;4078:8;:25;;;4050:7;:54::i;:::-;3920:196;3895:13;;;;;:::i;:::-;;;;3797:319;;;;3644:479;3601:522::o;7088:435::-;7185:4;7202:17;7222:3;7202:23;;7236:26;7265:6;;;;;;;;;;;:32;;;7312:16;7265:74;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7236:103;;7430:9;7386:18;7372:52;;;:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:67;;7350:143;;;;;;;;;;;;:::i;:::-;;;;;;;;;7511:4;7504:11;;;;7088:435;;;:::o;5586:846::-;5714:20;5737:16;:34;5754:16;5737:34;;;;;;;;;;;;;;;;5714:57;;5827:1;5814:10;:14;:34;;;;;5847:1;5832:12;:16;5814:34;5810:615;;;5865:22;5912:12;5904:4;5891:10;:17;;;;:::i;:::-;5890:34;;;;:::i;:::-;5865:59;;5939:6;5952:16;5939:30;;5984:13;6007:2;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5984:35;;6034:13;6057:2;:9;;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6034:35;;6084:20;6177:8;6159:14;6108:6;:16;;;6133:4;6108:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;;;:::i;:::-;6107:78;;;;:::i;:::-;6084:101;;6200:20;6293:8;6275:14;6224:6;:16;;;6249:4;6224:31;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:65;;;;:::i;:::-;6223:78;;;;:::i;:::-;6200:101;;6316:6;:15;;;6332:10;6344:12;6316:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6372:6;:15;;;6388:10;6400:12;6372:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5850:575;;;;;;5810:615;5658:774;5586:846;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:118::-;1263:24;1281:5;1263:24;:::i;:::-;1258:3;1251:37;1176:118;;:::o;1300:222::-;1393:4;1431:2;1420:9;1416:18;1408:26;;1444:71;1512:1;1501:9;1497:17;1488:6;1444:71;:::i;:::-;1300:222;;;;:::o;1528:77::-;1565:7;1594:5;1583:16;;1528:77;;;:::o;1611:118::-;1698:24;1716:5;1698:24;:::i;:::-;1693:3;1686:37;1611:118;;:::o;1735:222::-;1828:4;1866:2;1855:9;1851:18;1843:26;;1879:71;1947:1;1936:9;1932:17;1923:6;1879:71;:::i;:::-;1735:222;;;;:::o;1963:169::-;2047:11;2081:6;2076:3;2069:19;2121:4;2116:3;2112:14;2097:29;;1963:169;;;;:::o;2138:167::-;2278:19;2274:1;2266:6;2262:14;2255:43;2138:167;:::o;2311:366::-;2453:3;2474:67;2538:2;2533:3;2474:67;:::i;:::-;2467:74;;2550:93;2639:3;2550:93;:::i;:::-;2668:2;2663:3;2659:12;2652:19;;2311:366;;;:::o;2683:419::-;2849:4;2887:2;2876:9;2872:18;2864:26;;2936:9;2930:4;2926:20;2922:1;2911:9;2907:17;2900:47;2964:131;3090:4;2964:131;:::i;:::-;2956:139;;2683:419;;;:::o;3108:225::-;3248:34;3244:1;3236:6;3232:14;3225:58;3317:8;3312:2;3304:6;3300:15;3293:33;3108:225;:::o;3339:366::-;3481:3;3502:67;3566:2;3561:3;3502:67;:::i;:::-;3495:74;;3578:93;3667:3;3578:93;:::i;:::-;3696:2;3691:3;3687:12;3680:19;;3339:366;;;:::o;3711:419::-;3877:4;3915:2;3904:9;3900:18;3892:26;;3964:9;3958:4;3954:20;3950:1;3939:9;3935:17;3928:47;3992:131;4118:4;3992:131;:::i;:::-;3984:139;;3711:419;;;:::o;4136:122::-;4209:24;4227:5;4209:24;:::i;:::-;4202:5;4199:35;4189:63;;4248:1;4245;4238:12;4189:63;4136:122;:::o;4264:143::-;4321:5;4352:6;4346:13;4337:22;;4368:33;4395:5;4368:33;:::i;:::-;4264:143;;;;:::o;4413:351::-;4483:6;4532:2;4520:9;4511:7;4507:23;4503:32;4500:119;;;4538:79;;:::i;:::-;4500:119;4658:1;4683:64;4739:7;4730:6;4719:9;4715:22;4683:64;:::i;:::-;4673:74;;4629:128;4413:351;;;;:::o;4770:442::-;4919:4;4957:2;4946:9;4942:18;4934:26;;4970:71;5038:1;5027:9;5023:17;5014:6;4970:71;:::i;:::-;5051:72;5119:2;5108:9;5104:18;5095:6;5051:72;:::i;:::-;5133;5201:2;5190:9;5186:18;5177:6;5133:72;:::i;:::-;4770:442;;;;;;:::o;5218:143::-;5275:5;5306:6;5300:13;5291:22;;5322:33;5349:5;5322:33;:::i;:::-;5218:143;;;;:::o;5367:351::-;5437:6;5486:2;5474:9;5465:7;5461:23;5457:32;5454:119;;;5492:79;;:::i;:::-;5454:119;5612:1;5637:64;5693:7;5684:6;5673:9;5669:22;5637:64;:::i;:::-;5627:74;;5583:128;5367:351;;;;:::o;5724:332::-;5845:4;5883:2;5872:9;5868:18;5860:26;;5896:71;5964:1;5953:9;5949:17;5940:6;5896:71;:::i;:::-;5977:72;6045:2;6034:9;6030:18;6021:6;5977:72;:::i;:::-;5724:332;;;;;:::o;6062:117::-;6171:1;6168;6161:12;6185:102;6226:6;6277:2;6273:7;6268:2;6261:5;6257:14;6253:28;6243:38;;6185:102;;;:::o;6293:180::-;6341:77;6338:1;6331:88;6438:4;6435:1;6428:15;6462:4;6459:1;6452:15;6479:281;6562:27;6584:4;6562:27;:::i;:::-;6554:6;6550:40;6692:6;6680:10;6677:22;6656:18;6644:10;6641:34;6638:62;6635:88;;;6703:18;;:::i;:::-;6635:88;6743:10;6739:2;6732:22;6522:238;6479:281;;:::o;6766:129::-;6800:6;6827:20;;:::i;:::-;6817:30;;6856:33;6884:4;6876:6;6856:33;:::i;:::-;6766:129;;;:::o;6901:117::-;7010:1;7007;7000:12;7024:117;7133:1;7130;7123:12;7147:338;7251:4;7341:18;7333:6;7330:30;7327:56;;;7363:18;;:::i;:::-;7327:56;7413:4;7405:6;7401:17;7393:25;;7473:4;7467;7463:15;7455:23;;7147:338;;;:::o;7491:117::-;7600:1;7597;7590:12;7648:1174;7735:5;7779:4;7767:9;7762:3;7758:19;7754:30;7751:117;;;7787:79;;:::i;:::-;7751:117;7886:21;7902:4;7886:21;:::i;:::-;7877:30;;7980:1;8020:60;8076:3;8067:6;8056:9;8052:22;8020:60;:::i;:::-;8013:4;8006:5;8002:16;7995:86;7917:175;8157:2;8198:60;8254:3;8245:6;8234:9;8230:22;8198:60;:::i;:::-;8191:4;8184:5;8180:16;8173:86;8102:168;8339:2;8380:60;8436:3;8427:6;8416:9;8412:22;8380:60;:::i;:::-;8373:4;8366:5;8362:16;8355:86;8280:172;8527:2;8568:60;8624:3;8615:6;8604:9;8600:22;8568:60;:::i;:::-;8561:4;8554:5;8550:16;8543:86;8462:178;8701:3;8743:60;8799:3;8790:6;8779:9;8775:22;8743:60;:::i;:::-;8736:4;8729:5;8725:16;8718:86;8650:165;7648:1174;;;;:::o;8864:813::-;8998:5;9023:108;9039:91;9123:6;9039:91;:::i;:::-;9023:108;:::i;:::-;9014:117;;9151:5;9180:6;9173:5;9166:21;9214:4;9207:5;9203:16;9196:23;;9267:4;9259:6;9255:17;9247:6;9243:30;9296:3;9288:6;9285:15;9282:122;;;9315:79;;:::i;:::-;9282:122;9430:6;9413:258;9447:6;9442:3;9439:15;9413:258;;;9522:3;9551:75;9622:3;9610:10;9551:75;:::i;:::-;9546:3;9539:88;9656:4;9651:3;9647:14;9640:21;;9489:182;9473:4;9468:3;9464:14;9457:21;;9413:258;;;9417:21;9004:673;;8864:813;;;;;:::o;9719:439::-;9828:5;9877:3;9870:4;9862:6;9858:17;9854:27;9844:122;;9885:79;;:::i;:::-;9844:122;9995:6;9989:13;10020:132;10148:3;10140:6;10133:4;10125:6;10121:17;10020:132;:::i;:::-;10011:141;;9834:324;9719:439;;;;:::o;10206:1387::-;10301:5;10345:4;10333:9;10328:3;10324:19;10320:30;10317:117;;;10353:79;;:::i;:::-;10317:117;10452:21;10468:4;10452:21;:::i;:::-;10443:30;;10546:1;10586:60;10642:3;10633:6;10622:9;10618:22;10586:60;:::i;:::-;10579:4;10572:5;10568:16;10561:86;10483:175;10726:2;10767:60;10823:3;10814:6;10803:9;10799:22;10767:60;:::i;:::-;10760:4;10753:5;10749:16;10742:86;10668:171;10910:2;10951:60;11007:3;10998:6;10987:9;10983:22;10951:60;:::i;:::-;10944:4;10937:5;10933:16;10926:86;10849:174;11087:2;11128:60;11184:3;11175:6;11164:9;11160:22;11128:60;:::i;:::-;11121:4;11114:5;11110:16;11103:86;11033:167;11288:3;11277:9;11273:19;11267:26;11320:18;11312:6;11309:30;11306:117;;;11342:79;;:::i;:::-;11306:117;11462:112;11570:3;11561:6;11550:9;11546:22;11462:112;:::i;:::-;11455:4;11448:5;11444:16;11437:138;11210:376;10206:1387;;;;:::o;11599:574::-;11704:6;11753:2;11741:9;11732:7;11728:23;11724:32;11721:119;;;11759:79;;:::i;:::-;11721:119;11900:1;11889:9;11885:17;11879:24;11930:18;11922:6;11919:30;11916:117;;;11952:79;;:::i;:::-;11916:117;12057:99;12148:7;12139:6;12128:9;12124:22;12057:99;:::i;:::-;12047:109;;11850:316;11599:574;;;;:::o;12179:332::-;12300:4;12338:2;12327:9;12323:18;12315:26;;12351:71;12419:1;12408:9;12404:17;12395:6;12351:71;:::i;:::-;12432:72;12500:2;12489:9;12485:18;12476:6;12432:72;:::i;:::-;12179:332;;;;;:::o;12517:346::-;12629:4;12719:18;12711:6;12708:30;12705:56;;;12741:18;;:::i;:::-;12705:56;12791:4;12783:6;12779:17;12771:25;;12851:4;12845;12841:15;12833:23;;12517:346;;;:::o;12913:1035::-;13055:5;13080:116;13096:99;13188:6;13096:99;:::i;:::-;13080:116;:::i;:::-;13071:125;;13216:5;13245:6;13238:5;13231:21;13279:4;13272:5;13268:16;13261:23;;13332:4;13324:6;13320:17;13312:6;13308:30;13361:3;13353:6;13350:15;13347:122;;;13380:79;;:::i;:::-;13347:122;13495:6;13478:464;13512:6;13507:3;13504:15;13478:464;;;13594:3;13588:10;13630:18;13617:11;13614:35;13611:122;;;13652:79;;:::i;:::-;13611:122;13776:11;13768:6;13764:24;13814:83;13893:3;13881:10;13814:83;:::i;:::-;13809:3;13802:96;13927:4;13922:3;13918:14;13911:21;;13554:388;;13538:4;13533:3;13529:14;13522:21;;13478:464;;;13482:21;13061:887;;12913:1035;;;;;:::o;13998:455::-;14115:5;14164:3;14157:4;14149:6;14145:17;14141:27;14131:122;;14172:79;;:::i;:::-;14131:122;14282:6;14276:13;14307:140;14443:3;14435:6;14428:4;14420:6;14416:17;14307:140;:::i;:::-;14298:149;;14121:332;13998:455;;;;:::o;14459:624::-;14589:6;14638:2;14626:9;14617:7;14613:23;14609:32;14606:119;;;14644:79;;:::i;:::-;14606:119;14785:1;14774:9;14770:17;14764:24;14815:18;14807:6;14804:30;14801:117;;;14837:79;;:::i;:::-;14801:117;14942:124;15058:7;15049:6;15038:9;15034:22;14942:124;:::i;:::-;14932:134;;14735:341;14459:624;;;;:::o;15089:180::-;15137:77;15134:1;15127:88;15234:4;15231:1;15224:15;15258:4;15255:1;15248:15;15275:180;15323:77;15320:1;15313:88;15420:4;15417:1;15410:15;15444:4;15441:1;15434:15;15461:233;15500:3;15523:24;15541:5;15523:24;:::i;:::-;15514:33;;15569:66;15562:5;15559:77;15556:103;;;15639:18;;:::i;:::-;15556:103;15686:1;15679:5;15675:13;15668:20;;15461:233;;;:::o;15700:176::-;15840:28;15836:1;15828:6;15824:14;15817:52;15700:176;:::o;15882:366::-;16024:3;16045:67;16109:2;16104:3;16045:67;:::i;:::-;16038:74;;16121:93;16210:3;16121:93;:::i;:::-;16239:2;16234:3;16230:12;16223:19;;15882:366;;;:::o;16254:419::-;16420:4;16458:2;16447:9;16443:18;16435:26;;16507:9;16501:4;16497:20;16493:1;16482:9;16478:17;16471:47;16535:131;16661:4;16535:131;:::i;:::-;16527:139;;16254:419;;;:::o;16679:348::-;16719:7;16742:20;16760:1;16742:20;:::i;:::-;16737:25;;16776:20;16794:1;16776:20;:::i;:::-;16771:25;;16964:1;16896:66;16892:74;16889:1;16886:81;16881:1;16874:9;16867:17;16863:105;16860:131;;;16971:18;;:::i;:::-;16860:131;17019:1;17016;17012:9;17001:20;;16679:348;;;;:::o;17033:180::-;17081:77;17078:1;17071:88;17178:4;17175:1;17168:15;17202:4;17199:1;17192:15;17219:185;17259:1;17276:20;17294:1;17276:20;:::i;:::-;17271:25;;17310:20;17328:1;17310:20;:::i;:::-;17305:25;;17349:1;17339:35;;17354:18;;:::i;:::-;17339:35;17396:1;17393;17389:9;17384:14;;17219:185;;;;:::o

Swarm Source

ipfs://74d03238702abd0f7f9fb9b2e7076eacc21e097c44ad9e2ddd5a9c64332240e1
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.