Contract 0xc2c862322e9c97d6244a3506655da95f05246fd8 22

 
Txn Hash Method
Block
From
To
Value
0xd61ca7627b3e25bf06f9806d353eaf67e40f945bbe403f853eceb2d563dddcffExecute1169701392024-03-04 7:57:3554 mins ago0x594b09126cfa0c83f656901c7ef103aa91dce7f3 IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.0026375 ETH0.0005177633050.003102327
0xdd9053d28764fd8b50d912ca92f2fb6b4bc34c6c6cd616bcc190a91ae432f9c7Execute1169693872024-03-04 7:32:311 hr 19 mins ago0x523c1b4070314bf7171e3eebcd41807694171d4d IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.00971 ETH0.0005988061860.003072325
0x5c6dd3251876cf5075acc7d00c14eb4a9a8f5ec136f39d8cbf51e516640a2320Execute1169678722024-03-04 6:42:012 hrs 9 mins ago0x563aa9efd5f7802f080552c192a050f4dcc79bb1 IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.00085 ETH0.0005020315330.003562826
0x649a5b5e980d623628b77df2d3c83724d41590efcee3a247aa09755d679facc9Execute1169641132024-03-04 4:36:434 hrs 15 mins ago0x8366bc75c14c481c93aac21a11183807e1de0630 IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.00151 ETH0.0004336509680.003726436
0xcfb46b5f7e9a6257a0fd38f4b6a02c6d45214a196c0d02662505518b49bb848fExecute1169477812024-03-03 19:32:1913 hrs 19 mins ago0x68145cb3fd60c478ec42fc81367944d050fca9e8 IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.0103249 ETH0.0006538492790.046174869
0xb7503b037d75b3fce86259d11ed7da17828a9cdf3140a4bca0e02c460f708d04Execute1169470492024-03-03 19:07:5513 hrs 43 mins ago0x838ca826ff23d3bfb292275e971312387f412691 IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.05065875 ETH0.0006603963560.048679904
0x3fbcc3c333f7f64d65de51855d0800588fc9f9df4f583e338398fc409efb0fb4Execute1169448282024-03-03 17:53:5314 hrs 57 mins ago0xeb729c7f10fddbc9ccf990938ff21682a54e1274 IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.0102225 ETH0.0006037818750.064899083
0x62fd70ae847c7cec37980e5c3e587ff082a9345698913ca43c684fd36dcea5a4Execute1169440462024-03-03 17:27:4915 hrs 24 mins ago0xace87dde9d8bba8fbf024a0973c17e0654ee3493 IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.0008723 ETH0.0005865977220.036673998
0xe552fa4394da1fd5617c8b26f76e9b05b5db690b30b7fa81d7771b453a6a3954Execute1169350762024-03-03 12:28:4920 hrs 23 mins ago0xa0c5b1ac8796922e247a9a441a321db07c66410b IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.0027195 ETH0.0004016247820.012438763
0x0b5da51b19c0afe61c652266802bcac2ed4a55cf9efabb18611ff9119fb35c2cExecute1169314462024-03-03 10:27:4922 hrs 24 mins ago0xb3b99ce1520910b19fa2d510a7b06d957c41662a IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.000353785170424 ETH0.0003981531920.007171286
0x28190640247742954e9085333383c443445f858eabde9ffa83a9469ac9ce163dExecute1169253502024-03-03 7:04:371 day 1 hr ago0x61fdd4febf980bd1ac7d3653bb64463305b20941 IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.0040725 ETH0.0004855071850.008326099
0x0f116869217a0b3a85fad4568779db09053a221282bbf0894ae011d84434eef9Execute1169248512024-03-03 6:47:591 day 2 hrs ago0x35c012f682695af053b3efe138589424936a27a6 IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.00103 ETH0.0004284900150.008158412
0x2b160de6bd1cbb2590b22dca0756e06202d49b2f1e6dcc7999baf97ea9d91750Execute1169073742024-03-02 21:05:251 day 11 hrs ago0xa78768d6e8ca70b98ab16f54f209f54471e0b601 IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.000353785170424 ETH0.0004413583420.098384738
0xe25ec0181e1ae999dc42db255142a0b03ae6d7abfb6b88a45a6c1bd1f00c1cb2Execute1169019242024-03-02 18:03:451 day 14 hrs ago0x5630366ea948e568e15f56e02cf1b0fb0e7c3fea IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.00473875 ETH0.0005140433030.101394854
0x3e251570052eaddc086e7682a9d5da7d56ff74557ea59fe62d699cc885e4ecdaExecute1169004712024-03-02 17:15:191 day 15 hrs ago0xf70da97812cb96acdf810712aa562db8dfa3dbef IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.002266 ETH0.0005381437840.100814866
0x25b9f3e2dddc6b8c81a12d05f4973e3c63a7aa157fae772b13a0cfa01028ecc0Execute1168987192024-03-02 16:16:551 day 16 hrs ago0xfa8349a8529e4ad1dbfc2bd039c4262d3bd70643 IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.0027194 ETH0.0004915499560.097894145
0xcc5fc4bb8016736ede4dc394731c92a5c922dd8a1ee097e4ca20696605738de4Execute1168975052024-03-02 15:36:271 day 17 hrs ago0xcad61ee0a8e6bf771e4afa113a105c48dece654d IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.001133 ETH0.0004687766060.100501683
0x38e8da1fba16b6bf9396d8598f2eef69d78093aebf1a2bf6a53220f8f4b67b58Execute1168960222024-03-02 14:47:011 day 18 hrs ago0xf70da97812cb96acdf810712aa562db8dfa3dbef IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.002369 ETH0.0005182076450.100499019
0xeb5044fb0d25ee3b0286d95c1bc766dd79d072d0368300b781f6f79eeb6093a7Execute1168920002024-03-02 12:32:571 day 20 hrs ago0xf70da97812cb96acdf810712aa562db8dfa3dbef IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.00010063099794 ETH0.0005361773550.030148924
0x6adf445da95711e8f8918510a097f3c33aa553820989d6dc309c59d9d0f6bbefExecute1168913792024-03-02 12:12:151 day 20 hrs ago0x2f5fc65b9c6d1fee8ba4ca23fb2d7c363c95133c IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.008033897 ETH0.0004049770370.1198141
0xd86eb0d0553e793d61bca1471b310ab6d13265746438862b0c14b45dfc60a5e4Execute1168892392024-03-02 11:00:551 day 21 hrs ago0xd283ac6b8dd58cde7ede41002219d976115dca36 IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.00270925 ETH0.0003551696910.0066299
0xf4367fe08326567157c592b305550ce342bc82a1d335801656c71164d8d093adExecute1168878892024-03-02 10:15:551 day 22 hrs ago0xf70da97812cb96acdf810712aa562db8dfa3dbef IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.00010063099794 ETH0.0004774329790.004378657
0xfac6dfd66d4dd18c2cdc53f764237f4edd657532f67832770d5eb22e0bab71e9Execute1168857262024-03-02 9:03:491 day 23 hrs ago0xd950174236084ffa11b6bfa9f978697e65c5782a IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.0016125 ETH0.0004628355060.004472061
0x50151e4aaaa81f9df329ae92729aed9586829f187be3fa6bc190d3c963e2af7bExecute1168807642024-03-02 6:18:252 days 2 hrs ago0x557b4ef78fabdaf4aa9f760edbb45b3f9301776b IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.009915 ETH0.000453151080.003754339
0xbcd0527070f79fdc95643904c4795a754283008f4c65b7faec909f4e6457f723Execute1168803142024-03-02 6:03:252 days 2 hrs ago0x2b273bd716bb17987779e75a877b6c67e795811c IN  0xc2c862322e9c97d6244a3506655da95f05246fd80.00103 ETH0.0004729563510.001942127
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xd61ca7627b3e25bf06f9806d353eaf67e40f945bbe403f853eceb2d563dddcff1169701392024-03-04 7:57:3554 mins ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.0026375 ETH
0xdd9053d28764fd8b50d912ca92f2fb6b4bc34c6c6cd616bcc190a91ae432f9c71169693872024-03-04 7:32:311 hr 19 mins ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.00971 ETH
0x5c6dd3251876cf5075acc7d00c14eb4a9a8f5ec136f39d8cbf51e516640a23201169678722024-03-04 6:42:012 hrs 9 mins ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.00085 ETH
0x649a5b5e980d623628b77df2d3c83724d41590efcee3a247aa09755d679facc91169641132024-03-04 4:36:434 hrs 15 mins ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.00151 ETH
0xcfb46b5f7e9a6257a0fd38f4b6a02c6d45214a196c0d02662505518b49bb848f1169477812024-03-03 19:32:1913 hrs 19 mins ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.0103249 ETH
0xb7503b037d75b3fce86259d11ed7da17828a9cdf3140a4bca0e02c460f708d041169470492024-03-03 19:07:5513 hrs 43 mins ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.05065875 ETH
0x3fbcc3c333f7f64d65de51855d0800588fc9f9df4f583e338398fc409efb0fb41169448282024-03-03 17:53:5314 hrs 57 mins ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.0102225 ETH
0x62fd70ae847c7cec37980e5c3e587ff082a9345698913ca43c684fd36dcea5a41169440462024-03-03 17:27:4915 hrs 24 mins ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.0008723 ETH
0xe552fa4394da1fd5617c8b26f76e9b05b5db690b30b7fa81d7771b453a6a39541169350762024-03-03 12:28:4920 hrs 23 mins ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.0027195 ETH
0x0b5da51b19c0afe61c652266802bcac2ed4a55cf9efabb18611ff9119fb35c2c1169314462024-03-03 10:27:4922 hrs 24 mins ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.000353785170424653 ETH
0x28190640247742954e9085333383c443445f858eabde9ffa83a9469ac9ce163d1169253502024-03-03 7:04:371 day 1 hr ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.0040725 ETH
0x0f116869217a0b3a85fad4568779db09053a221282bbf0894ae011d84434eef91169248512024-03-03 6:47:591 day 2 hrs ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.00103 ETH
0x2b160de6bd1cbb2590b22dca0756e06202d49b2f1e6dcc7999baf97ea9d917501169073742024-03-02 21:05:251 day 11 hrs ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.000353785170424653 ETH
0xe25ec0181e1ae999dc42db255142a0b03ae6d7abfb6b88a45a6c1bd1f00c1cb21169019242024-03-02 18:03:451 day 14 hrs ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.00473875 ETH
0x3e251570052eaddc086e7682a9d5da7d56ff74557ea59fe62d699cc885e4ecda1169004712024-03-02 17:15:191 day 15 hrs ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.002266 ETH
0x25b9f3e2dddc6b8c81a12d05f4973e3c63a7aa157fae772b13a0cfa01028ecc01168987192024-03-02 16:16:551 day 16 hrs ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.0027194 ETH
0xcc5fc4bb8016736ede4dc394731c92a5c922dd8a1ee097e4ca20696605738de41168975052024-03-02 15:36:271 day 17 hrs ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.001133 ETH
0x38e8da1fba16b6bf9396d8598f2eef69d78093aebf1a2bf6a53220f8f4b67b581168960222024-03-02 14:47:011 day 18 hrs ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.002369 ETH
0xeb5044fb0d25ee3b0286d95c1bc766dd79d072d0368300b781f6f79eeb6093a71168920002024-03-02 12:32:571 day 20 hrs ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.00010063099794 ETH
0x6adf445da95711e8f8918510a097f3c33aa553820989d6dc309c59d9d0f6bbef1168913792024-03-02 12:12:151 day 20 hrs ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.008033897 ETH
0xd86eb0d0553e793d61bca1471b310ab6d13265746438862b0c14b45dfc60a5e41168892392024-03-02 11:00:551 day 21 hrs ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.00270925 ETH
0xf4367fe08326567157c592b305550ce342bc82a1d335801656c71164d8d093ad1168878892024-03-02 10:15:551 day 22 hrs ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.00010063099794 ETH
0xfac6dfd66d4dd18c2cdc53f764237f4edd657532f67832770d5eb22e0bab71e91168857262024-03-02 9:03:491 day 23 hrs ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.0016125 ETH
0x50151e4aaaa81f9df329ae92729aed9586829f187be3fa6bc190d3c963e2af7b1168807642024-03-02 6:18:252 days 2 hrs ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.009915 ETH
0xbcd0527070f79fdc95643904c4795a754283008f4c65b7faec909f4e6457f7231168803142024-03-02 6:03:252 days 2 hrs ago 0xc2c862322e9c97d6244a3506655da95f05246fd8 0x00ca04c45da318d5b7e7b14d5381ca59f09c73f00.00103 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ReservoirV6_0_1

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 3 : ReentrancyGuard.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (security/ReentrancyGuard.sol)

pragma solidity ^0.8.0;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and making it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        _nonReentrantBefore();
        _;
        _nonReentrantAfter();
    }

    function _nonReentrantBefore() private {
        // On the first call to nonReentrant, _status will be _NOT_ENTERED
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;
    }

    function _nonReentrantAfter() private {
        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }
}

File 2 of 3 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.8.0) (utils/Address.sol)

pragma solidity ^0.8.1;

/**
 * @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
     * ====
     *
     * [IMPORTANT]
     * ====
     * You shouldn't rely on `isContract` to protect against flash loan attacks!
     *
     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets
     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract
     * constructor.
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize/address.code.length, which returns 0
        // for contracts in construction, since the code is only stored at the end
        // of the constructor execution.

        return account.code.length > 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 functionCallWithValue(target, data, 0, "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");
        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResultFromTarget(target, 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) {
        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResultFromTarget(target, 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) {
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResultFromTarget(target, success, returndata, errorMessage);
    }

    /**
     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling
     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.
     *
     * _Available since v4.8._
     */
    function verifyCallResultFromTarget(
        address target,
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        if (success) {
            if (returndata.length == 0) {
                // only check isContract if the call was successful and the return data is empty
                // otherwise we already know that it was a contract
                require(isContract(target), "Address: call to non-contract");
            }
            return returndata;
        } else {
            _revert(returndata, errorMessage);
        }
    }

    /**
     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the
     * revert reason or 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 {
            _revert(returndata, errorMessage);
        }
    }

    function _revert(bytes memory returndata, string memory errorMessage) private pure {
        // 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
            /// @solidity memory-safe-assembly
            assembly {
                let returndata_size := mload(returndata)
                revert(add(32, returndata), returndata_size)
            }
        } else {
            revert(errorMessage);
        }
    }
}

File 3 of 3 : ReservoirV6_0_1.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;

import {ReentrancyGuard} from "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import {Address} from "@openzeppelin/contracts/utils/Address.sol";

contract ReservoirV6_0_1 is ReentrancyGuard {
  using Address for address;

  // --- Structs ---

  struct ExecutionInfo {
    address module;
    bytes data;
    uint256 value;
  }

  struct AmountCheckInfo {
    address target;
    bytes data;
    uint256 threshold;
  }

  // --- Errors ---

  error UnsuccessfulExecution();
  error UnsuccessfulPayment();

  // --- Modifiers ---

  modifier refundETH() {
    _;

    uint256 leftover = address(this).balance;
    if (leftover > 0) {
      (bool success, ) = payable(msg.sender).call{value: leftover}("");
      if (!success) {
        revert UnsuccessfulPayment();
      }
    }
  }

  // --- Fallback ---

  receive() external payable {}

  // --- Public ---

  // Trigger a set of executions atomically
  function execute(
    ExecutionInfo[] calldata executionInfos
  ) external payable nonReentrant refundETH {
    uint256 length = executionInfos.length;
    for (uint256 i; i < length; ) {
      _executeInternal(executionInfos[i]);

      unchecked {
        ++i;
      }
    }
  }

  // Trigger a set of executions with amount checking. As opposed to the regular
  // `execute` method, `executeWithAmountCheck` supports stopping the executions
  // once the provided amount check reaches a certain value. This is useful when
  // trying to fill orders with slippage (eg. provide multiple orders and try to
  // fill until a certain balance is reached). In order to be flexible, checking
  // the amount is done generically by calling the `target` contract with `data`.
  // For example, this could be used to check the ERC721 total owned balance (by
  // using `balanceOf(owner)`), the ERC1155 total owned balance per token id (by
  // using `balanceOf(owner, tokenId)`), but also for checking the ERC1155 total
  // owned balance per multiple token ids (by using a custom contract that wraps
  // `balanceOfBatch(owners, tokenIds)`).
  function executeWithAmountCheck(
    ExecutionInfo[] calldata executionInfos,
    AmountCheckInfo calldata amountCheckInfo
  ) external payable nonReentrant refundETH {
    // Cache some data for efficiency
    address target = amountCheckInfo.target;
    bytes calldata data = amountCheckInfo.data;
    uint256 threshold = amountCheckInfo.threshold;

    uint256 length = executionInfos.length;
    for (uint256 i; i < length; ) {
      // Check the amount and break if it exceeds the threshold
      uint256 amount = _getAmount(target, data);
      if (amount >= threshold) {
        break;
      }

      _executeInternal(executionInfos[i]);

      unchecked {
        ++i;
      }
    }
  }

  // --- Internal ---

  function _executeInternal(ExecutionInfo calldata executionInfo) internal {
    address module = executionInfo.module;

    // Ensure the target is a contract
    if (!module.isContract()) {
      revert UnsuccessfulExecution();
    }

    (bool success, ) = module.call{value: executionInfo.value}(executionInfo.data);
    if (!success) {
      revert UnsuccessfulExecution();
    }
  }

  function _getAmount(address target, bytes calldata data) internal view returns (uint256 amount) {
    // Ensure the target is a contract
    if (!target.isContract()) {
      revert UnsuccessfulExecution();
    }

    (bool success, bytes memory result) = target.staticcall(data);
    if (!success) {
      revert UnsuccessfulExecution();
    }

    amount = abi.decode(result, (uint256));
  }
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"name":"UnsuccessfulExecution","type":"error"},{"inputs":[],"name":"UnsuccessfulPayment","type":"error"},{"inputs":[{"components":[{"internalType":"address","name":"module","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct ReservoirV6_0_1.ExecutionInfo[]","name":"executionInfos","type":"tuple[]"}],"name":"execute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"module","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct ReservoirV6_0_1.ExecutionInfo[]","name":"executionInfos","type":"tuple[]"},{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"threshold","type":"uint256"}],"internalType":"struct ReservoirV6_0_1.AmountCheckInfo","name":"amountCheckInfo","type":"tuple"}],"name":"executeWithAmountCheck","outputs":[],"stateMutability":"payable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080806040523461001b5760016000556103f390816100218239f35b600080fdfe60406080815260048036101561001f575b5050361561001d57600080fd5b005b600091823560e01c806304871891146100dd5763760f2a0b146100425750610010565b60203660031901126100d957813567ffffffffffffffff81116100d55761006c90369084016101f4565b6100746102c3565b845b8181106100b957505050824780610090575b506001815580f35b81808092335af161009f61022a565b50156100ac578281610088565b5163d2dcf4f360e01b8152fd5b806100cf6100ca600193858761028b565b610360565b01610076565b8380fd5b8280fd5b5060031981813601126100d55767ffffffffffffffff83358181116101f05761010990369086016101f4565b926024359283116101ec5760608387019184360301126101ec5760449061012e6102c3565b61014561013a82610319565b91602486019061032d565b929094013591885b86811061016b575b5050505050505082478061009057506001815580f35b823b156101dc578980895184898237808581018381520390865afa61018e61022a565b90156101cc57602080828051810103126101c8578591015110156101c357806101bd6100ca6001938a8961028b565b0161014d565b610155565b8b80fd5b8851635589343b60e11b81528a90fd5b8751635589343b60e11b81528990fd5b8680fd5b8580fd5b9181601f840112156102255782359167ffffffffffffffff8311610225576020808501948460051b01011161022557565b600080fd5b3d156102865767ffffffffffffffff903d8281116102705760405192601f8201601f19908116603f01168401908111848210176102705760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b606090565b91908110156102ad5760051b81013590605e1981360301821215610225570190565b634e487b7160e01b600052603260045260246000fd5b6002600054146102d4576002600055565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b356001600160a01b03811681036102255790565b903590601e1981360301821215610225570180359067ffffffffffffffff82116102255760200191813603831361022557565b61036981610319565b803b156103ab578160406000939261038560208695018461032d565b92908382519485928337810186815203930135905af16103a361022a565b50156103ab57565b604051635589343b60e11b8152600490fdfea2646970667358221220e2d89bb632aa7fc41f13fc93bb4de6cdfcf6f7798a9edbc5922ff54d44d7fba564736f6c63430008110033

Deployed Bytecode

0x60406080815260048036101561001f575b5050361561001d57600080fd5b005b600091823560e01c806304871891146100dd5763760f2a0b146100425750610010565b60203660031901126100d957813567ffffffffffffffff81116100d55761006c90369084016101f4565b6100746102c3565b845b8181106100b957505050824780610090575b506001815580f35b81808092335af161009f61022a565b50156100ac578281610088565b5163d2dcf4f360e01b8152fd5b806100cf6100ca600193858761028b565b610360565b01610076565b8380fd5b8280fd5b5060031981813601126100d55767ffffffffffffffff83358181116101f05761010990369086016101f4565b926024359283116101ec5760608387019184360301126101ec5760449061012e6102c3565b61014561013a82610319565b91602486019061032d565b929094013591885b86811061016b575b5050505050505082478061009057506001815580f35b823b156101dc578980895184898237808581018381520390865afa61018e61022a565b90156101cc57602080828051810103126101c8578591015110156101c357806101bd6100ca6001938a8961028b565b0161014d565b610155565b8b80fd5b8851635589343b60e11b81528a90fd5b8751635589343b60e11b81528990fd5b8680fd5b8580fd5b9181601f840112156102255782359167ffffffffffffffff8311610225576020808501948460051b01011161022557565b600080fd5b3d156102865767ffffffffffffffff903d8281116102705760405192601f8201601f19908116603f01168401908111848210176102705760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b606090565b91908110156102ad5760051b81013590605e1981360301821215610225570190565b634e487b7160e01b600052603260045260246000fd5b6002600054146102d4576002600055565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b356001600160a01b03811681036102255790565b903590601e1981360301821215610225570180359067ffffffffffffffff82116102255760200191813603831361022557565b61036981610319565b803b156103ab578160406000939261038560208695018461032d565b92908382519485928337810186815203930135905af16103a361022a565b50156103ab57565b604051635589343b60e11b8152600490fdfea2646970667358221220e2d89bb632aa7fc41f13fc93bb4de6cdfcf6f7798a9edbc5922ff54d44d7fba564736f6c63430008110033

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