Contract 0xC8CDd2Ea6A5149ced1F2d225D16a775ee081C67D

 

Contract Overview

CAP Finance: CAP Pool
Balance:
0 ETH

ETH Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1263320639683ee0b2d8cbfeacd50d49ef3060186ea5738af16177c297469308Deposit129646652022-05-26 3:40:5810 hrs 34 mins ago0x933866f496d90611f194f107befd61bb139ef61b IN  CAP Finance: CAP Pool0 ETH0.000225949756 ETH
0x15c8bed0e32e49fbf9fe3ebb53791d3af6788670278898ec49a2fc9032601ca9Deposit129517002022-05-25 20:54:2417 hrs 20 mins ago0xd301f47b6a5c688dba474982574fb95df6cef0ff IN  CAP Finance: CAP Pool0 ETH0.00017734903 ETH
0x3bcab49bebeb4ff68b683eec5d7960f2043e15b335f3a51fe5ae0d2b63f64d89Deposit129511792022-05-25 20:37:5417 hrs 37 mins ago0xd301f47b6a5c688dba474982574fb95df6cef0ff IN  CAP Finance: CAP Pool0 ETH0.000235522996 ETH
0x84a2d43902fda69893a81e817fa46af4cf3bd18e4f19d0766dbca6fb91abbcf0Deposit129165982022-05-25 9:09:391 day 5 hrs ago0x4001524b72b1f8ae2a62d385f6d818cd44cfe269 IN  CAP Finance: CAP Pool0 ETH0.000132762131 ETH
0x60a291dc5a87bb692420b6ed76432560596b6f656b9e846e5634226872f76ec7Withdraw129083362022-05-25 6:43:531 day 7 hrs ago0x4001524b72b1f8ae2a62d385f6d818cd44cfe269 IN  CAP Finance: CAP Pool0 ETH0.000144578735 ETH
0x6bf0df3f925ba05c697a5dd166c6861181c4bfdbaefccb5b96cf381cb3c0a1e0Deposit128393872022-05-24 7:28:052 days 6 hrs ago0xf04fd9f9eae51aea8d53c36034aa8ea9719c8b21 IN  CAP Finance: CAP Pool0 ETH0.0001164258 ETH
0x6d08d844a0c72f0c886ad92b6d16fcdff9fd20f99632e3b18accf149fad8e167Deposit128330932022-05-24 5:29:022 days 8 hrs ago0x4001524b72b1f8ae2a62d385f6d818cd44cfe269 IN  CAP Finance: CAP Pool0 ETH0.000116013082 ETH
0x74dbb7eb9efcced435e2cb4c92cc3b11c6104e9d152eb1f42187edba4be72459Withdraw128329362022-05-24 5:25:382 days 8 hrs ago0x4001524b72b1f8ae2a62d385f6d818cd44cfe269 IN  CAP Finance: CAP Pool0 ETH0.000104899787 ETH
0xdb2ca6b463f9fcb98e48d0ebb588661f52f1f0e1b5db505d673114e583d148b9Deposit128268672022-05-24 3:18:572 days 10 hrs ago0x4001524b72b1f8ae2a62d385f6d818cd44cfe269 IN  CAP Finance: CAP Pool0 ETH0.000141267037 ETH
0xb0b9db2f38d61f783d36f41a2e828961a9b1c8545b52bdb0ebaf01ebdf211239Deposit127347942022-05-22 21:55:533 days 16 hrs ago0x1a900b5df58d5c4cc63088687a0194237228b7ad IN  CAP Finance: CAP Pool0 ETH0.00014335207 ETH
0xb876480af53bcfa97f229bb8ee59c97643a7bd1005c1e86f1dbc64dbc87d147aDeposit127085092022-05-22 12:52:264 days 1 hr ago0x04702229dd46e10641f9cee28b06c6e36fb8a060 IN  CAP Finance: CAP Pool0 ETH0.000130310144 ETH
0x8a857bea4d31ab5853c799b6bd3d2ecfc26d8feb86129ec0f12de605f0a75d17Deposit126451532022-05-21 14:55:334 days 23 hrs ago0xf55ce117cbc8b8580710af677648eb4e87cc7abb IN  CAP Finance: CAP Pool0 ETH0.000128509994 ETH
0x8ff290a8515b803aa6aa8c5b9433f3a790581113163c27bc9633a178b706a977Deposit125461202022-05-20 9:13:226 days 5 hrs ago0x8868dae4a3577b0251cef57fd7aedbeb64e7e21e IN  CAP Finance: CAP Pool0 ETH0.000126656254 ETH
0x166ad1e471444e9a26f8b70cb8284ef87f3ac6033e1362aceeb1f19d9af853d6Deposit123353502022-05-17 18:00:228 days 20 hrs ago0x08701f9a20574c0f5e737f59a05a0ed85a57a96b IN  CAP Finance: CAP Pool0 ETH0.000126968074 ETH
0x95713d05e7dddcd47e40db6b28ed7843642753cfd4c9dc369624db03c117ec71Withdraw123346962022-05-17 17:47:298 days 20 hrs ago0x08701f9a20574c0f5e737f59a05a0ed85a57a96b IN  CAP Finance: CAP Pool0 ETH0.000125632589 ETH
0xc1ff899535f4ed4cc05c3065e19117d26caec04a90d3d47da69db4034be3867aDeposit121549412022-05-15 18:53:4010 days 19 hrs ago0xef118356286e1af072e329692cb42c07752ca88d IN  CAP Finance: CAP Pool0 ETH0.000133300374 ETH
0x9d371eb56513817aecfc234e4e2ac8193a628b91832537d41d0a0b1d3a7b1418Withdraw120835552022-05-14 21:59:3311 days 16 hrs ago0x51bc95b19b3c1965c79ad43b8075a628e024f37a IN  CAP Finance: CAP Pool0 ETH0.000211625981 ETH
0x2d3643b217efa52a69764edf3a23825f3087139eadfc57692c4aa555d362a62bDeposit120819752022-05-14 21:27:2211 days 16 hrs ago0x5ea1eddfb7a6ba9d0ce01369214310411cad296c IN  CAP Finance: CAP Pool0 ETH0.000192105516 ETH
0x640c993f1ccf61b1a3b6de9b70e88bd6cc65e7bd1ec61e264c45683fb3423381Deposit120676462022-05-14 16:16:5911 days 21 hrs ago0x5ea1eddfb7a6ba9d0ce01369214310411cad296c IN  CAP Finance: CAP Pool0 ETH0.00019686687 ETH
0x7349d4cb23599a3e495690a250b95384a7b7ef7d66c861f499af975e87f3a666Deposit120646412022-05-14 15:32:2211 days 22 hrs ago0x5ea1eddfb7a6ba9d0ce01369214310411cad296c IN  CAP Finance: CAP Pool0 ETH0.000287514659 ETH
0x5bf0e0506821df2581d39bab45a8e4ad370e47dfd2638a85f51749b9fab730e4Withdraw120509482022-05-14 12:35:4712 days 1 hr ago0x1fac6eee2197c98d1ef0f166eccffa8632e9a279 IN  CAP Finance: CAP Pool0 ETH0.000216263868 ETH
0x69b3c407b8bdaa2432d7333de76916067ac6c6890b7f45523d68fe4df60cc3e3Deposit120129402022-05-14 1:08:2012 days 13 hrs ago0x08701f9a20574c0f5e737f59a05a0ed85a57a96b IN  CAP Finance: CAP Pool0 ETH0.000444647372 ETH
0x280860178d445f3e6676201641559474e813945bf7eb2d37cd0b7a9dcf9778deWithdraw119747722022-05-13 11:51:0313 days 2 hrs ago0xaf11495f021c5c2c5f5230f40d5d57ebe4059700 IN  CAP Finance: CAP Pool0 ETH0.000513701765 ETH
0xfc7c7cf145b30323ad1b5913b4b4b38723d364ca8e3cfd9accf3a0a139142869Deposit119231462022-05-12 16:34:1313 days 21 hrs ago0xaf11495f021c5c2c5f5230f40d5d57ebe4059700 IN  CAP Finance: CAP Pool0 ETH0.00149205966 ETH
0x32b2b2dffdc2c65930a78ece8f54b89a128d853f6cdb3944dd6d40ff29bcfd47Deposit119096292022-05-12 13:19:0214 days 56 mins ago0xa8a6afc1797e49ee846d6522e92ba20f5e2d9a06 IN  CAP Finance: CAP Pool0 ETH0.002037843967 ETH
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x1263320639683ee0b2d8cbfeacd50d49ef3060186ea5738af16177c297469308129646652022-05-26 3:40:5810 hrs 34 mins ago CAP Finance: CAP Pool0x031d35296154279dc1984dcd93e392b1f946737b0 ETH
0x1263320639683ee0b2d8cbfeacd50d49ef3060186ea5738af16177c297469308129646652022-05-26 3:40:5810 hrs 34 mins ago CAP Finance: CAP Rewards USDC CAP Finance: CAP Pool0 ETH
0x1263320639683ee0b2d8cbfeacd50d49ef3060186ea5738af16177c297469308129646652022-05-26 3:40:5810 hrs 34 mins ago CAP Finance: CAP Rewards USDC CAP Finance: CAP Pool0 ETH
0x1263320639683ee0b2d8cbfeacd50d49ef3060186ea5738af16177c297469308129646652022-05-26 3:40:5810 hrs 34 mins ago CAP Finance: CAP Pool CAP Finance: CAP Rewards USDC0 ETH
0x1263320639683ee0b2d8cbfeacd50d49ef3060186ea5738af16177c297469308129646652022-05-26 3:40:5810 hrs 34 mins ago CAP Finance: CAP Pool CAP Finance: Router0 ETH
0x1263320639683ee0b2d8cbfeacd50d49ef3060186ea5738af16177c297469308129646652022-05-26 3:40:5810 hrs 34 mins ago CAP Finance: CAP Pool CAP Finance: Router0 ETH
0x1263320639683ee0b2d8cbfeacd50d49ef3060186ea5738af16177c297469308129646652022-05-26 3:40:5810 hrs 34 mins ago CAP Finance: CAP Rewards ETH CAP Finance: CAP Pool0 ETH
0x1263320639683ee0b2d8cbfeacd50d49ef3060186ea5738af16177c297469308129646652022-05-26 3:40:5810 hrs 34 mins ago CAP Finance: CAP Rewards ETH CAP Finance: CAP Pool0 ETH
0x1263320639683ee0b2d8cbfeacd50d49ef3060186ea5738af16177c297469308129646652022-05-26 3:40:5810 hrs 34 mins ago CAP Finance: CAP Pool CAP Finance: CAP Rewards ETH0 ETH
0x1263320639683ee0b2d8cbfeacd50d49ef3060186ea5738af16177c297469308129646652022-05-26 3:40:5810 hrs 34 mins ago CAP Finance: CAP Pool CAP Finance: Router0 ETH
0x1263320639683ee0b2d8cbfeacd50d49ef3060186ea5738af16177c297469308129646652022-05-26 3:40:5810 hrs 34 mins ago CAP Finance: CAP Pool CAP Finance: Router0 ETH
0x1263320639683ee0b2d8cbfeacd50d49ef3060186ea5738af16177c297469308129646652022-05-26 3:40:5810 hrs 34 mins ago CAP Finance: CAP Pool CAP Finance: Router0 ETH
0x15c8bed0e32e49fbf9fe3ebb53791d3af6788670278898ec49a2fc9032601ca9129517002022-05-25 20:54:2417 hrs 20 mins ago CAP Finance: CAP Pool0x031d35296154279dc1984dcd93e392b1f946737b0 ETH
0x15c8bed0e32e49fbf9fe3ebb53791d3af6788670278898ec49a2fc9032601ca9129517002022-05-25 20:54:2417 hrs 20 mins ago CAP Finance: CAP Rewards USDC CAP Finance: CAP Pool0 ETH
0x15c8bed0e32e49fbf9fe3ebb53791d3af6788670278898ec49a2fc9032601ca9129517002022-05-25 20:54:2417 hrs 20 mins ago CAP Finance: CAP Rewards USDC CAP Finance: CAP Pool0 ETH
0x15c8bed0e32e49fbf9fe3ebb53791d3af6788670278898ec49a2fc9032601ca9129517002022-05-25 20:54:2417 hrs 20 mins ago CAP Finance: CAP Pool CAP Finance: CAP Rewards USDC0 ETH
0x15c8bed0e32e49fbf9fe3ebb53791d3af6788670278898ec49a2fc9032601ca9129517002022-05-25 20:54:2417 hrs 20 mins ago CAP Finance: CAP Pool CAP Finance: Router0 ETH
0x15c8bed0e32e49fbf9fe3ebb53791d3af6788670278898ec49a2fc9032601ca9129517002022-05-25 20:54:2417 hrs 20 mins ago CAP Finance: CAP Pool CAP Finance: Router0 ETH
0x15c8bed0e32e49fbf9fe3ebb53791d3af6788670278898ec49a2fc9032601ca9129517002022-05-25 20:54:2417 hrs 20 mins ago CAP Finance: CAP Rewards ETH CAP Finance: CAP Pool0 ETH
0x15c8bed0e32e49fbf9fe3ebb53791d3af6788670278898ec49a2fc9032601ca9129517002022-05-25 20:54:2417 hrs 20 mins ago CAP Finance: CAP Rewards ETH CAP Finance: CAP Pool0 ETH
0x15c8bed0e32e49fbf9fe3ebb53791d3af6788670278898ec49a2fc9032601ca9129517002022-05-25 20:54:2417 hrs 20 mins ago CAP Finance: CAP Pool CAP Finance: CAP Rewards ETH0 ETH
0x15c8bed0e32e49fbf9fe3ebb53791d3af6788670278898ec49a2fc9032601ca9129517002022-05-25 20:54:2417 hrs 20 mins ago CAP Finance: CAP Pool CAP Finance: Router0 ETH
0x15c8bed0e32e49fbf9fe3ebb53791d3af6788670278898ec49a2fc9032601ca9129517002022-05-25 20:54:2417 hrs 20 mins ago CAP Finance: CAP Pool CAP Finance: Router0 ETH
0x15c8bed0e32e49fbf9fe3ebb53791d3af6788670278898ec49a2fc9032601ca9129517002022-05-25 20:54:2417 hrs 20 mins ago CAP Finance: CAP Pool CAP Finance: Router0 ETH
0x3bcab49bebeb4ff68b683eec5d7960f2043e15b335f3a51fe5ae0d2b63f64d89129511792022-05-25 20:37:5417 hrs 37 mins ago CAP Finance: CAP Pool0x031d35296154279dc1984dcd93e392b1f946737b0 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PoolCAP

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, BSD-3-Clause license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan on 2021-11-19
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns token decimals.
     */
    function decimals() external view returns (uint8);

    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, 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 `sender` to `recipient` 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 sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    /**
     * @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 Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain `call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verifies that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason using the provided one.
     *
     * _Available since v4.3._
     */
    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}
/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using Address for address;

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        require(
            (value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        uint256 newAllowance = token.allowance(address(this), spender) + value;
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(
        IERC20 token,
        address spender,
        uint256 value
    ) internal {
        unchecked {
            uint256 oldAllowance = token.allowance(address(this), spender);
            require(oldAllowance >= value, "SafeERC20: decreased allowance below zero");
            uint256 newAllowance = oldAllowance - value;
            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
        }
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            // Return data is optional
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}
interface IRouter {
    function trading() external view returns (address);

    function capPool() external view returns (address);

    function oracle() external view returns (address);

    function treasury() external view returns (address);

    function darkOracle() external view returns (address);

    function isSupportedCurrency(address currency) external view returns (bool);

    function currencies(uint256 index) external view returns (address);

    function currenciesLength() external view returns (uint256);

    function getDecimals(address currency) external view returns(uint8);

    function getPool(address currency) external view returns (address);

    function getPoolShare(address currency) external view returns(uint256);

    function getCapShare(address currency) external view returns(uint256);

    function getPoolRewards(address currency) external view returns (address);

    function getCapRewards(address currency) external view returns (address);
}
interface IRewards {
    function updateRewards(address account) external;

    function notifyRewardReceived(uint256 amount) external;
}
contract PoolCAP {

	using SafeERC20 for IERC20; 

	address public owner;
	address public router;

	address public cap; // CAP address

	mapping(address => uint256) private balances; // account => amount staked
	uint256 public totalSupply;

	// Events
    event DepositCAP(
    	address indexed user, 
    	uint256 amount
    );
    event WithdrawCAP(
    	address indexed user,
    	uint256 amount
    );

	constructor(address _cap) {
		owner = msg.sender;
		cap = _cap;
	}

	// Governance methods

	function setOwner(address newOwner) external onlyOwner {
		owner = newOwner;
	}

	function setRouter(address _router) external onlyOwner {
		router = _router;
	}

	function deposit(uint256 amount) external {

		require(amount > 0, "!amount");

		_updateRewards();

		totalSupply += amount;
		balances[msg.sender] += amount;

		IERC20(cap).safeTransferFrom(msg.sender, address(this), amount);

		emit DepositCAP(
			msg.sender,
			amount
		);

	}

	function withdraw(uint256 amount) external {
		
		require(amount > 0, "!amount");

		if (amount >= balances[msg.sender]) {
			amount = balances[msg.sender];
		}

		_updateRewards();

		totalSupply -= amount;
		balances[msg.sender] -= amount;

		IERC20(cap).safeTransfer(msg.sender, amount);

		emit WithdrawCAP(
			msg.sender,
			amount
		);

	}

	function getBalance(address account) external view returns(uint256) {
		return balances[account];
	}

	function _updateRewards() internal {
		uint256 length = IRouter(router).currenciesLength();
		for (uint256 i = 0; i < length; i++) {
			address currency = IRouter(router).currencies(i);
			address rewardsContract = IRouter(router).getCapRewards(currency);
			IRewards(rewardsContract).updateRewards(msg.sender);
		}
	}

	modifier onlyOwner() {
		require(msg.sender == owner, "!owner");
		_;
	}

}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_cap","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"DepositCAP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawCAP","type":"event"},{"inputs":[],"name":"cap","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"getBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051610b50380380610b5083398101604081905261002f91610062565b60008054336001600160a01b031991821617909155600280549091166001600160a01b0392909216919091179055610092565b60006020828403121561007457600080fd5b81516001600160a01b038116811461008b57600080fd5b9392505050565b610aaf806100a16000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80638da5cb5b116100665780638da5cb5b14610107578063b6b55f251461011a578063c0d786551461012d578063f887ea4014610140578063f8b2cb4f1461015357600080fd5b806313af40351461009857806318160ddd146100ad5780632e1a7d4d146100c9578063355274ea146100dc575b600080fd5b6100ab6100a63660046108f8565b61017c565b005b6100b660045481565b6040519081526020015b60405180910390f35b6100ab6100d7366004610954565b6101e6565b6002546100ef906001600160a01b031681565b6040516001600160a01b0390911681526020016100c0565b6000546100ef906001600160a01b031681565b6100ab610128366004610954565b6102db565b6100ab61013b3660046108f8565b6103a2565b6001546100ef906001600160a01b031681565b6100b66101613660046108f8565b6001600160a01b031660009081526003602052604090205490565b6000546001600160a01b031633146101c45760405162461bcd60e51b815260206004820152600660248201526510b7bbb732b960d11b60448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0392909216919091179055565b600081116102205760405162461bcd60e51b815260206004820152600760248201526608585b5bdd5b9d60ca1b60448201526064016101bb565b3360009081526003602052604090205481106102485750336000908152600360205260409020545b610250610407565b806004600082825461026291906109ed565b909155505033600090815260036020526040812080548392906102869084906109ed565b90915550506002546102a2906001600160a01b03163383610606565b60405181815233907fb5f8afb824677daf72806b46fea85b6d5a915f9aa592491c114984caeb19eb1e906020015b60405180910390a250565b600081116103155760405162461bcd60e51b815260206004820152600760248201526608585b5bdd5b9d60ca1b60448201526064016101bb565b61031d610407565b806004600082825461032f91906109d5565b909155505033600090815260036020526040812080548392906103539084906109d5565b9091555050600254610370906001600160a01b031633308461066e565b60405181815233907fe4bea80f171715cac6973db809ecb1e9538330e5d032983defde1b092a16c0fc906020016102d0565b6000546001600160a01b031633146103e55760405162461bcd60e51b815260206004820152600660248201526510b7bbb732b960d11b60448201526064016101bb565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600154604080516339fadb9160e01b815290516000926001600160a01b0316916339fadb91916004808301926020929190829003018186803b15801561044c57600080fd5b505afa158015610460573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610484919061096d565b905060005b818110156106025760015460405163f6d1c27160e01b8152600481018390526000916001600160a01b03169063f6d1c2719060240160206040518083038186803b1580156104d657600080fd5b505afa1580156104ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061050e9190610915565b6001546040516327d442d560e11b81526001600160a01b03808416600483015292935060009290911690634fa885aa9060240160206040518083038186803b15801561055957600080fd5b505afa15801561056d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105919190610915565b604051635fd6196560e01b81523360048201529091506001600160a01b03821690635fd6196590602401600060405180830381600087803b1580156105d557600080fd5b505af11580156105e9573d6000803e3d6000fd5b50505050505080806105fa90610a30565b915050610489565b5050565b6040516001600160a01b03831660248201526044810182905261066990849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526106ac565b505050565b6040516001600160a01b03808516602483015283166044820152606481018290526106a69085906323b872dd60e01b90608401610632565b50505050565b6000610701826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661077e9092919063ffffffff16565b805190915015610669578080602001905181019061071f9190610932565b6106695760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016101bb565b606061078d8484600085610797565b90505b9392505050565b6060824710156107f85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016101bb565b843b6108465760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101bb565b600080866001600160a01b031685876040516108629190610986565b60006040518083038185875af1925050503d806000811461089f576040519150601f19603f3d011682016040523d82523d6000602084013e6108a4565b606091505b50915091506108b48282866108bf565b979650505050505050565b606083156108ce575081610790565b8251156108de5782518084602001fd5b8160405162461bcd60e51b81526004016101bb91906109a2565b60006020828403121561090a57600080fd5b813561079081610a61565b60006020828403121561092757600080fd5b815161079081610a61565b60006020828403121561094457600080fd5b8151801515811461079057600080fd5b60006020828403121561096657600080fd5b5035919050565b60006020828403121561097f57600080fd5b5051919050565b60008251610998818460208701610a04565b9190910192915050565b60208152600082518060208401526109c1816040850160208701610a04565b601f01601f19169190910160400192915050565b600082198211156109e8576109e8610a4b565b500190565b6000828210156109ff576109ff610a4b565b500390565b60005b83811015610a1f578181015183820152602001610a07565b838111156106a65750506000910152565b6000600019821415610a4457610a44610a4b565b5060010190565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610a7657600080fd5b5056fea2646970667358221220ad4cdfd3564cb9272f06f5b67a1847d6d406e7fec217f7dfb17849f6c706b34e64736f6c63430008070033000000000000000000000000031d35296154279dc1984dcd93e392b1f946737b

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

000000000000000000000000031d35296154279dc1984dcd93e392b1f946737b

-----Decoded View---------------
Arg [0] : _cap (address): 0x031d35296154279dc1984dcd93e392b1f946737b

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000031d35296154279dc1984dcd93e392b1f946737b


Deployed ByteCode Sourcemap

15913:1891:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16443:81;;;;;;:::i;:::-;;:::i;:::-;;16135:26;;;;;;;;;4703:25:1;;;4691:2;4676:18;16135:26:0;;;;;;;;16917:365;;;;;;:::i;:::-;;:::i;16020:18::-;;;;;-1:-1:-1;;;;;16020:18:0;;;;;;-1:-1:-1;;;;;1621:32:1;;;1603:51;;1591:2;1576:18;16020::0;1457:203:1;15969:20:0;;;;;-1:-1:-1;;;;;15969:20:0;;;16615:297;;;;;;:::i;:::-;;:::i;16529:81::-;;;;;;:::i;:::-;;:::i;15993:21::-;;;;;-1:-1:-1;;;;;15993:21:0;;;17287:102;;;;;;:::i;:::-;-1:-1:-1;;;;;17367:17:0;17346:7;17367:17;;;:8;:17;;;;;;;17287:102;16443:81;17772:5;;-1:-1:-1;;;;;17772:5:0;17758:10;:19;17750:38;;;;-1:-1:-1;;;17750:38:0;;4425:2:1;17750:38:0;;;4407:21:1;4464:1;4444:18;;;4437:29;-1:-1:-1;;;4482:18:1;;;4475:36;4528:18;;17750:38:0;;;;;;;;;16503:5:::1;:16:::0;;-1:-1:-1;;;;;;16503:16:0::1;-1:-1:-1::0;;;;;16503:16:0;;;::::1;::::0;;;::::1;::::0;;16443:81::o;16917:365::-;16986:1;16977:6;:10;16969:30;;;;-1:-1:-1;;;16969:30:0;;3679:2:1;16969:30:0;;;3661:21:1;3718:1;3698:18;;;3691:29;-1:-1:-1;;;3736:18:1;;;3729:37;3783:18;;16969:30:0;3477:330:1;16969:30:0;17029:10;17020:20;;;;:8;:20;;;;;;17010:30;;17006:77;;-1:-1:-1;17066:10:0;17057:20;;;;:8;:20;;;;;;17006:77;17089:16;:14;:16::i;:::-;17127:6;17112:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;17147:10:0;17138:20;;;;:8;:20;;;;;:30;;17162:6;;17138:20;:30;;17162:6;;17138:30;:::i;:::-;;;;-1:-1:-1;;17182:3:0;;17175:44;;-1:-1:-1;;;;;17182:3:0;17200:10;17212:6;17175:24;:44::i;:::-;17231;;4703:25:1;;;17248:10:0;;17231:44;;4691:2:1;4676:18;17231:44:0;;;;;;;;16917:365;:::o;16615:297::-;16681:1;16672:6;:10;16664:30;;;;-1:-1:-1;;;16664:30:0;;3679:2:1;16664:30:0;;;3661:21:1;3718:1;3698:18;;;3691:29;-1:-1:-1;;;3736:18:1;;;3729:37;3783:18;;16664:30:0;3477:330:1;16664:30:0;16701:16;:14;:16::i;:::-;16739:6;16724:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;16759:10:0;16750:20;;;;:8;:20;;;;;:30;;16774:6;;16750:20;:30;;16774:6;;16750:30;:::i;:::-;;;;-1:-1:-1;;16794:3:0;;16787:63;;-1:-1:-1;;;;;16794:3:0;16816:10;16836:4;16843:6;16787:28;:63::i;:::-;16862:43;;4703:25:1;;;16878:10:0;;16862:43;;4691:2:1;4676:18;16862:43:0;4557:177:1;16529:81:0;17772:5;;-1:-1:-1;;;;;17772:5:0;17758:10;:19;17750:38;;;;-1:-1:-1;;;17750:38:0;;4425:2:1;17750:38:0;;;4407:21:1;4464:1;4444:18;;;4437:29;-1:-1:-1;;;4482:18:1;;;4475:36;4528:18;;17750:38:0;4223:329:1;17750:38:0;16589:6:::1;:16:::0;;-1:-1:-1;;;;;;16589:16:0::1;-1:-1:-1::0;;;;;16589:16:0;;;::::1;::::0;;;::::1;::::0;;16529:81::o;17394:325::-;17459:6;;17451:34;;;-1:-1:-1;;;17451:34:0;;;;17434:14;;-1:-1:-1;;;;;17459:6:0;;17451:32;;:34;;;;;;;;;;;;;;17459:6;17451:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17434:51;;17495:9;17490:225;17514:6;17510:1;:10;17490:225;;;17560:6;;17552:29;;-1:-1:-1;;;17552:29:0;;;;;4703:25:1;;;17533:16:0;;-1:-1:-1;;;;;17560:6:0;;17552:26;;4676:18:1;;17552:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17621:6;;17613:39;;-1:-1:-1;;;17613:39:0;;-1:-1:-1;;;;;1621:32:1;;;17613:39:0;;;1603:51:1;17533:48:0;;-1:-1:-1;17587:23:0;;17621:6;;;;17613:29;;1576:18:1;;17613:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17658:51;;-1:-1:-1;;;17658:51:0;;17698:10;17658:51;;;1603::1;17587:65:0;;-1:-1:-1;;;;;;17658:39:0;;;;;1576:18:1;;17658:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17527:188;;17522:3;;;;;:::i;:::-;;;;17490:225;;;;17429:290;17394:325::o;11458:211::-;11602:58;;-1:-1:-1;;;;;2237:32:1;;11602:58:0;;;2219:51:1;2286:18;;;2279:34;;;11575:86:0;;11595:5;;-1:-1:-1;;;11625:23:0;2192:18:1;;11602:58:0;;;;-1:-1:-1;;11602:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;11602:58:0;-1:-1:-1;;;;;;11602:58:0;;;;;;;;;;11575:19;:86::i;:::-;11458:211;;;:::o;11677:248::-;11848:68;;-1:-1:-1;;;;;1923:15:1;;;11848:68:0;;;1905:34:1;1975:15;;1955:18;;;1948:43;2007:18;;;2000:34;;;11821:96:0;;11841:5;;-1:-1:-1;;;11871:27:0;1840:18:1;;11848:68:0;1665:375:1;11821:96:0;11677:248;;;;:::o;14031:716::-;14455:23;14481:69;14509:4;14481:69;;;;;;;;;;;;;;;;;14489:5;-1:-1:-1;;;;;14481:27:0;;;:69;;;;;:::i;:::-;14565:17;;14455:95;;-1:-1:-1;14565:21:0;14561:179;;14662:10;14651:30;;;;;;;;;;;;:::i;:::-;14643:85;;;;-1:-1:-1;;;14643:85:0;;4014:2:1;14643:85:0;;;3996:21:1;4053:2;4033:18;;;4026:30;4092:34;4072:18;;;4065:62;-1:-1:-1;;;4143:18:1;;;4136:40;4193:19;;14643:85:0;3812:406:1;6409:229:0;6546:12;6578:52;6600:6;6608:4;6614:1;6617:12;6578:21;:52::i;:::-;6571:59;;6409:229;;;;;;:::o;7529:510::-;7699:12;7757:5;7732:21;:30;;7724:81;;;;-1:-1:-1;;;7724:81:0;;2914:2:1;7724:81:0;;;2896:21:1;2953:2;2933:18;;;2926:30;2992:34;2972:18;;;2965:62;-1:-1:-1;;;3043:18:1;;;3036:36;3089:19;;7724:81:0;2712:402:1;7724:81:0;3926:20;;7816:60;;;;-1:-1:-1;;;7816:60:0;;3321:2:1;7816:60:0;;;3303:21:1;3360:2;3340:18;;;3333:30;3399:31;3379:18;;;3372:59;3448:18;;7816:60:0;3119:353:1;7816:60:0;7890:12;7904:23;7931:6;-1:-1:-1;;;;;7931:11:0;7950:5;7957:4;7931:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7889:73;;;;7980:51;7997:7;8006:10;8018:12;7980:16;:51::i;:::-;7973:58;7529:510;-1:-1:-1;;;;;;;7529:510:0:o;10215:712::-;10365:12;10394:7;10390:530;;;-1:-1:-1;10425:10:0;10418:17;;10390:530;10539:17;;:21;10535:374;;10737:10;10731:17;10798:15;10785:10;10781:2;10777:19;10770:44;10535:374;10880:12;10873:20;;-1:-1:-1;;;10873:20:0;;;;;;;;:::i;14:247:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;200:31;225:5;200:31;:::i;266:251::-;336:6;389:2;377:9;368:7;364:23;360:32;357:52;;;405:1;402;395:12;357:52;437:9;431:16;456:31;481:5;456:31;:::i;522:277::-;589:6;642:2;630:9;621:7;617:23;613:32;610:52;;;658:1;655;648:12;610:52;690:9;684:16;743:5;736:13;729:21;722:5;719:32;709:60;;765:1;762;755:12;804:180;863:6;916:2;904:9;895:7;891:23;887:32;884:52;;;932:1;929;922:12;884:52;-1:-1:-1;955:23:1;;804:180;-1:-1:-1;804:180:1:o;989:184::-;1059:6;1112:2;1100:9;1091:7;1087:23;1083:32;1080:52;;;1128:1;1125;1118:12;1080:52;-1:-1:-1;1151:16:1;;989:184;-1:-1:-1;989:184:1:o;1178:274::-;1307:3;1345:6;1339:13;1361:53;1407:6;1402:3;1395:4;1387:6;1383:17;1361:53;:::i;:::-;1430:16;;;;;1178:274;-1:-1:-1;;1178:274:1:o;2324:383::-;2473:2;2462:9;2455:21;2436:4;2505:6;2499:13;2548:6;2543:2;2532:9;2528:18;2521:34;2564:66;2623:6;2618:2;2607:9;2603:18;2598:2;2590:6;2586:15;2564:66;:::i;:::-;2691:2;2670:15;-1:-1:-1;;2666:29:1;2651:45;;;;2698:2;2647:54;;2324:383;-1:-1:-1;;2324:383:1:o;4739:128::-;4779:3;4810:1;4806:6;4803:1;4800:13;4797:39;;;4816:18;;:::i;:::-;-1:-1:-1;4852:9:1;;4739:128::o;4872:125::-;4912:4;4940:1;4937;4934:8;4931:34;;;4945:18;;:::i;:::-;-1:-1:-1;4982:9:1;;4872:125::o;5002:258::-;5074:1;5084:113;5098:6;5095:1;5092:13;5084:113;;;5174:11;;;5168:18;5155:11;;;5148:39;5120:2;5113:10;5084:113;;;5215:6;5212:1;5209:13;5206:48;;;-1:-1:-1;;5250:1:1;5232:16;;5225:27;5002:258::o;5265:135::-;5304:3;-1:-1:-1;;5325:17:1;;5322:43;;;5345:18;;:::i;:::-;-1:-1:-1;5392:1:1;5381:13;;5265:135::o;5405:127::-;5466:10;5461:3;5457:20;5454:1;5447:31;5497:4;5494:1;5487:15;5521:4;5518:1;5511:15;5537:131;-1:-1:-1;;;;;5612:31:1;;5602:42;;5592:70;;5658:1;5655;5648:12;5592:70;5537:131;:::o

Swarm Source

ipfs://ad4cdfd3564cb9272f06f5b67a1847d6d406e7fec217f7dfb17849f6c706b34e
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
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.