Contract 0x1aed60a97192157fda7fb26267a439d523d09c5e 19

 
Txn Hash Method
Block
From
To
Value
0x4a90ecee4d49bbc00999d8efaf999bb13fb0654d583adf335faafb3fa7877a5bExecute132305482024-04-16 6:54:031 min ago0xf70da97812cb96acdf810712aa562db8dfa3dbef IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.000823897 ETH0.0000052781780.021132702
0x91d31908de3efd83a54eb961e5a8c7f47dd02914d8ff92fbb46be2c49a35ce9bExecute132305382024-04-16 6:53:431 min ago0xf70da97812cb96acdf810712aa562db8dfa3dbef IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.00099704 ETH0.0000043749790.020568464
0xfdac6a3cbe70094428392ef4eba6116e0451a4a5dddc4cd08f1030ae3e7baf6cExecute132305382024-04-16 6:53:431 min ago0x410658577482153b3476aaf9590a7b3e31280972 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.0000116096120.060723726
0x41080a09cc8f40a3bba1585a92bc096711c662655a969a9dd8ed42067e1e6bdfExecute132304982024-04-16 6:52:232 mins ago0xde90a186c04cecfe67beee9a9f9ecccaf54e86a7 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e100 wei0.0000034369890.018223453
0x45c2ba75a7c38d5f04e3e183356351284333b9a0b74ad7ece2a0070900e404e8Execute132304972024-04-16 6:52:212 mins ago0x233754af286182b415e5db97ae4e2349112c8728 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.0000035743490.018222914
0xe957ca58219f8fb2fe47ff394b660c1508149f90c57b64a6d38c7807c14d9197Execute132304872024-04-16 6:52:013 mins ago0xde90a186c04cecfe67beee9a9f9ecccaf54e86a7 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e100 wei0.0000053701390.01833155
0x7bdaffe284762fe1dfa4844cf76947b8750c5b31f0ce9b4dd7ce6f5a6632fd89Execute132304852024-04-16 6:51:573 mins ago0xf1a3262e48eff92d41c1cb8708fc2c5f592d9e76 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.0000036102170.018352678
0x179506da1d48d5861c33d6e91a20ff4b442c0e37a19fbd2cd4eb07ea6d24d5d9Execute132304822024-04-16 6:51:513 mins ago0x76cec9520a1550cb9f06fb1a232d7b14707f2cf2 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.000515 ETH0.0000047276120.018517503
0x9c1173b6d59354498ffcba0eba252241cbcf5f8fd3959a433f736c64a6057893Execute132304812024-04-16 6:51:493 mins ago0x32582bf048c8d04ef7ed8b5de78b21562c62b448 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.0000036236330.018424981
0xf11c1624219218e3ab0eb100009a79565b2963ef883645fd196c4741d336ee71Execute132304632024-04-16 6:51:133 mins ago0xe71da9853ea796706b21630e1c36a310e9ac5a5b IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.000003678630.018657314
0xf5c9683f1d053a9cfaf8bbb5a913f4b3a9474c96108c900572e9ca54de39b283Execute132304592024-04-16 6:51:053 mins ago0xcad7f7445294364f14786d94ead6077a686888f0 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.000003669470.018608987
0x714ace5941e7222129f28065ecf516d86b1b4082f5a5ac030226734f02c0c6e9Execute132304562024-04-16 6:50:594 mins ago0xf70da97812cb96acdf810712aa562db8dfa3dbef IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.0000044369310.022414913
0x80f739169b52b44c5b026df4baabda4da4b3eaf4efc63f308929e9f4e2438facExecute132304422024-04-16 6:50:314 mins ago0x5e29a0be24f398fc59ef804d93f96996f5a8aca3 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.0000042415740.0217
0x342de074a7b827d9642320f6cf9a338efad4d86b7f05ee4a54e3ec3e728b6130Execute132304392024-04-16 6:50:254 mins ago0xf70da97812cb96acdf810712aa562db8dfa3dbef IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.0000042749380.021573812
0x43d22b114ef2c6b28d5971094dc97219ef7bbd421dfa968ca1cfd40d0244968fExecute132304312024-04-16 6:50:094 mins ago0xb9b6499c2bcede1d751c64916526bc7e1015b229 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e4 wei0.000006389880.018741411
0x11f99dd05f822ebed2c9b309f954318a55a379999f00a2284d030d7d3c94c4edExecute132304232024-04-16 6:49:535 mins ago0x809ce9a20092e675590dd4acc90649924cb64880 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.00298391 ETH0.0000035944510.018760087
0xbf293245c6630e648fb6baa621577c464cb28b8faefbca6c02ec4c03467c1dd4Execute132304162024-04-16 6:49:395 mins ago0x1fa9ed1e143826e563b82407adcc4030a70fc87b IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.00298391 ETH0.0000040700860.018776202
0x393ccd152efa6fd27a7e130a5e8922efa9a6127dc606dfef9ca4ac9b4f80b0ccExecute132304082024-04-16 6:49:235 mins ago0x49bfdf5bdabe24f29383e6d4d73231e217b35325 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.0000042308730.021720133
0x76e791e710bceb843c7ced3eed68dab5e1dd58be444fa6b7a91784a35e5b076dExecute132303962024-04-16 6:48:596 mins ago0x62f25d0944a1b512a1d77e4dede57f72ffc8ef25 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.0000036548460.018710088
0x5a48bcb33249d78229a1d3d8723cc336dc6795e08cccaf8fee977f563a124473Execute132303592024-04-16 6:47:457 mins ago0x4b34d2a270bf658562b38b2c7f84bf2ab8d60a3c IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.0000036328620.018599054
0x9f8cad45e8c0dbba1203f8882bcae679f3e839f5236755228aab660004d8afc9Execute132303552024-04-16 6:47:377 mins ago0xabdbf4bb5985afa605e1fc53cd01a961dc94f593 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.0000036404180.018604159
0x5ea894bd1bdd3a927568e5c474d36f598070ca132479bc4c69dd0898f6505244Execute132303342024-04-16 6:46:558 mins ago0x3df5ba668fa69378cee5440a0786e87ba582fbdf IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.0000036759940.018777145
0x2b4638b21ba4080e7e8c125a9342a2861a208c0ce73e463e800a00c4c7ed1815Execute132302972024-04-16 6:45:419 mins ago0xe37845604f7083617ff710cdf9574f8c82cad85a IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.0000041808930.0214
0x0a0df336b5404015d27426e2f6d47323ac355cb0ead80e4cfaf8df93cf6a3601Execute132302932024-04-16 6:45:339 mins ago0x47a235f03b07f57d9c39aff3beb00364db9e46b0 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.002987 ETH0.0000041936270.0215
0x37755b077e52ca4549b859f9a5a36393628d51fcd140c04ec4b4dea679eeec1bExecute132302932024-04-16 6:45:339 mins ago0x26086bb87b9bb3adad3649a2b2275bf23aa67db8 IN  0x1aed60a97192157fda7fb26267a439d523d09c5e0.00103 ETH0.0000054184610.0216
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x4a90ecee4d49bbc00999d8efaf999bb13fb0654d583adf335faafb3fa7877a5b132305482024-04-16 6:54:031 min ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.000823897 ETH
0x91d31908de3efd83a54eb961e5a8c7f47dd02914d8ff92fbb46be2c49a35ce9b132305382024-04-16 6:53:431 min ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.00099704 ETH
0xfdac6a3cbe70094428392ef4eba6116e0451a4a5dddc4cd08f1030ae3e7baf6c132305382024-04-16 6:53:431 min ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0x41080a09cc8f40a3bba1585a92bc096711c662655a969a9dd8ed42067e1e6bdf132304982024-04-16 6:52:232 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0x849ef788b40af342e2883c3112dd636f03a4203e100 wei
0x45c2ba75a7c38d5f04e3e183356351284333b9a0b74ad7ece2a0070900e404e8132304972024-04-16 6:52:212 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0xe957ca58219f8fb2fe47ff394b660c1508149f90c57b64a6d38c7807c14d9197132304872024-04-16 6:52:013 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0x849ef788b40af342e2883c3112dd636f03a4203e100 wei
0x7bdaffe284762fe1dfa4844cf76947b8750c5b31f0ce9b4dd7ce6f5a6632fd89132304852024-04-16 6:51:573 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0x179506da1d48d5861c33d6e91a20ff4b442c0e37a19fbd2cd4eb07ea6d24d5d9132304822024-04-16 6:51:513 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.000515 ETH
0x9c1173b6d59354498ffcba0eba252241cbcf5f8fd3959a433f736c64a6057893132304812024-04-16 6:51:493 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0xf11c1624219218e3ab0eb100009a79565b2963ef883645fd196c4741d336ee71132304632024-04-16 6:51:133 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0xf5c9683f1d053a9cfaf8bbb5a913f4b3a9474c96108c900572e9ca54de39b283132304592024-04-16 6:51:053 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0x714ace5941e7222129f28065ecf516d86b1b4082f5a5ac030226734f02c0c6e9132304562024-04-16 6:50:594 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0x80f739169b52b44c5b026df4baabda4da4b3eaf4efc63f308929e9f4e2438fac132304422024-04-16 6:50:314 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0x342de074a7b827d9642320f6cf9a338efad4d86b7f05ee4a54e3ec3e728b6130132304392024-04-16 6:50:254 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0x43d22b114ef2c6b28d5971094dc97219ef7bbd421dfa968ca1cfd40d0244968f132304312024-04-16 6:50:094 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0x849ef788b40af342e2883c3112dd636f03a4203e4 wei
0x11f99dd05f822ebed2c9b309f954318a55a379999f00a2284d030d7d3c94c4ed132304232024-04-16 6:49:535 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.00298391 ETH
0xbf293245c6630e648fb6baa621577c464cb28b8faefbca6c02ec4c03467c1dd4132304162024-04-16 6:49:395 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.00298391 ETH
0x393ccd152efa6fd27a7e130a5e8922efa9a6127dc606dfef9ca4ac9b4f80b0cc132304082024-04-16 6:49:235 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0x76e791e710bceb843c7ced3eed68dab5e1dd58be444fa6b7a91784a35e5b076d132303962024-04-16 6:48:596 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0x5a48bcb33249d78229a1d3d8723cc336dc6795e08cccaf8fee977f563a124473132303592024-04-16 6:47:457 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0x9f8cad45e8c0dbba1203f8882bcae679f3e839f5236755228aab660004d8afc9132303552024-04-16 6:47:377 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0x5ea894bd1bdd3a927568e5c474d36f598070ca132479bc4c69dd0898f6505244132303342024-04-16 6:46:558 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0x2b4638b21ba4080e7e8c125a9342a2861a208c0ce73e463e800a00c4c7ed1815132302972024-04-16 6:45:419 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0x0a0df336b5404015d27426e2f6d47323ac355cb0ead80e4cfaf8df93cf6a3601132302932024-04-16 6:45:339 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.002987 ETH
0x37755b077e52ca4549b859f9a5a36393628d51fcd140c04ec4b4dea679eeec1b132302932024-04-16 6:45:339 mins ago 0x1aed60a97192157fda7fb26267a439d523d09c5e 0xd8f24f5f0382e197c1e87ad82b357209383470cf0.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.9.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;
    }

    /**
     * @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
     * `nonReentrant` function in the call stack.
     */
    function _reentrancyGuardEntered() internal view returns (bool) {
        return _status == _ENTERED;
    }
}

File 2 of 3 : Address.sol
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.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
     *
     * Furthermore, `isContract` will also return true if the target contract within
     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,
     * which only has an effect at the end of a transaction.
     * ====
     *
     * [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://consensys.net/diligence/blog/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.8.0/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 = 0; 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 = 0; 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"}]

6080806040523461001b5760016000556103f390816100218239f35b600080fdfe60406080815260048036101561001f575b5050361561001d57600080fd5b005b600091823560e01c806304871891146100dd5763760f2a0b146100425750610010565b60203660031901126100d957813567ffffffffffffffff81116100d55761006c90369084016101f4565b6100746102c3565b845b8181106100b957505050824780610090575b506001815580f35b81808092335af161009f61022a565b50156100ac578281610088565b5163d2dcf4f360e01b8152fd5b806100cf6100ca600193858761028b565b610360565b01610076565b8380fd5b8280fd5b5060031981813601126100d55767ffffffffffffffff83358181116101f05761010990369086016101f4565b926024359283116101ec5760608387019184360301126101ec5760449061012e6102c3565b61014561013a82610319565b91602486019061032d565b929094013591885b86811061016b575b5050505050505082478061009057506001815580f35b823b156101dc578980895184898237808581018381520390865afa61018e61022a565b90156101cc57602080828051810103126101c8578591015110156101c357806101bd6100ca6001938a8961028b565b0161014d565b610155565b8b80fd5b8851635589343b60e11b81528a90fd5b8751635589343b60e11b81528990fd5b8680fd5b8580fd5b9181601f840112156102255782359167ffffffffffffffff8311610225576020808501948460051b01011161022557565b600080fd5b3d156102865767ffffffffffffffff903d8281116102705760405192601f8201601f19908116603f01168401908111848210176102705760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b606090565b91908110156102ad5760051b81013590605e1981360301821215610225570190565b634e487b7160e01b600052603260045260246000fd5b6002600054146102d4576002600055565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b356001600160a01b03811681036102255790565b903590601e1981360301821215610225570180359067ffffffffffffffff82116102255760200191813603831361022557565b61036981610319565b803b156103ab578160406000939261038560208695018461032d565b92908382519485928337810186815203930135905af16103a361022a565b50156103ab57565b604051635589343b60e11b8152600490fdfea2646970667358221220ce1d7e58645bc5b9b56d7d97491dc6b1dac67f3bc9bc72e2cd48e0f078f3392764736f6c63430008110033

Deployed Bytecode

0x60406080815260048036101561001f575b5050361561001d57600080fd5b005b600091823560e01c806304871891146100dd5763760f2a0b146100425750610010565b60203660031901126100d957813567ffffffffffffffff81116100d55761006c90369084016101f4565b6100746102c3565b845b8181106100b957505050824780610090575b506001815580f35b81808092335af161009f61022a565b50156100ac578281610088565b5163d2dcf4f360e01b8152fd5b806100cf6100ca600193858761028b565b610360565b01610076565b8380fd5b8280fd5b5060031981813601126100d55767ffffffffffffffff83358181116101f05761010990369086016101f4565b926024359283116101ec5760608387019184360301126101ec5760449061012e6102c3565b61014561013a82610319565b91602486019061032d565b929094013591885b86811061016b575b5050505050505082478061009057506001815580f35b823b156101dc578980895184898237808581018381520390865afa61018e61022a565b90156101cc57602080828051810103126101c8578591015110156101c357806101bd6100ca6001938a8961028b565b0161014d565b610155565b8b80fd5b8851635589343b60e11b81528a90fd5b8751635589343b60e11b81528990fd5b8680fd5b8580fd5b9181601f840112156102255782359167ffffffffffffffff8311610225576020808501948460051b01011161022557565b600080fd5b3d156102865767ffffffffffffffff903d8281116102705760405192601f8201601f19908116603f01168401908111848210176102705760405282523d6000602084013e565b634e487b7160e01b600052604160045260246000fd5b606090565b91908110156102ad5760051b81013590605e1981360301821215610225570190565b634e487b7160e01b600052603260045260246000fd5b6002600054146102d4576002600055565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b356001600160a01b03811681036102255790565b903590601e1981360301821215610225570180359067ffffffffffffffff82116102255760200191813603831361022557565b61036981610319565b803b156103ab578160406000939261038560208695018461032d565b92908382519485928337810186815203930135905af16103a361022a565b50156103ab57565b604051635589343b60e11b8152600490fdfea2646970667358221220ce1d7e58645bc5b9b56d7d97491dc6b1dac67f3bc9bc72e2cd48e0f078f3392764736f6c63430008110033

Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.