ETH Price: $2,799.44 (-6.34%)
Gas: 0.06 Gwei
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

Transaction Hash
Method
Block
From
To
Transfer Ownersh...237824902025-11-12 10:16:2378 days ago1762942583IN
0xeB34aC1D...9E484b019
0 ETH0.000057082.09976509
Toggle Strategy237824882025-11-12 10:15:5978 days ago1762942559IN
0xeB34aC1D...9E484b019
0 ETH0.000097512.09076598
Toggle Strategy237824812025-11-12 10:14:3578 days ago1762942475IN
0xeB34aC1D...9E484b019
0 ETH0.000051752.09278579
Sweep All ERC20237824772025-11-12 10:13:4778 days ago1762942427IN
0xeB34aC1D...9E484b019
0 ETH0.000115972.08956059
Sweep All Native237824742025-11-12 10:13:1178 days ago1762942391IN
0xeB34aC1D...9E484b019
0 ETH0.000067522.08705182
Toggle Strategy237824722025-11-12 10:12:4778 days ago1762942367IN
0xeB34aC1D...9E484b019
0 ETH0.000097382.0879807
Transfer237824542025-11-12 10:09:1178 days ago1762942151IN
0xeB34aC1D...9E484b019
0.005 ETH0.000044182.09859389
Toggle Delegate237824452025-11-12 10:07:2378 days ago1762942043IN
0xeB34aC1D...9E484b019
0 ETH0.00009812.10189222
Transfer231513242025-08-16 4:50:23166 days ago1755319823IN
0xeB34aC1D...9E484b019
0.000001 ETH0.000015030.7157777

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer237824742025-11-12 10:13:1178 days ago1762942391
0xeB34aC1D...9E484b019
0.005001 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VaultManager

Compiler Version
v0.8.6+commit.11564f7e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : VaultManager.sol
pragma solidity >=0.7.0 >=0.7.6 ^0.8.0;
pragma abicoder v2;

// src/common/errors/Errors7.sol

// This file is a Solidity 0.7.x implementation of the custom error specification implemented
// in Solidity 0.8.4. It is currently only partially complete (only errors without parameters
// are supported). If 0.7.x and 0.8.4+ contracts need to share errors, they will need to be
// manually synced between this file and ./Errors.sol.

// While intended for only 0.7.x contracts, this file's pragma is >=0.7.0 to allow compilation
// of 0.8.4+ contracts that import a contract using these errors

/// Errors7 contains the equivalent function signatures of custom Solidity 0.8.4+ errors
///
/// Usage:
/// uint256 internal constant SAMPLE_ERR = uint256(keccak256("SAMPLE_ERR()"))>>224;
/// _revert(Errors7.SAMPLE_ERR);
/// <Status: 0x0, Return data: 0xd11dbe31>
///
/// This is equivalent to Solidity 0.8.4+
/// error SAMPLE_ERR();
/// revert SAMPLE_ERR();
/// <Status: 0x0, Return data: 0xd11dbe31>
///
///
/// IMPORTANT CAVEAT: This library assumes the solc optimizer is enabled:
///
/// If the optimizer is disabled, each error will add 32 bytes of data to the contract code and will
/// incur extra runtime overhead to shift the uint256 and revert with the correct 4 bytes.
/// With the solc optimizer enabled, each error will only add 4 bytes of data to the contract and no extra shifting is required.
///
/// This library will logically function the same with the optimizer off, but it will be very inefficient

library Errors7 {
  uint256 internal constant APPROVE_FAIL = uint256(keccak256("APPROVE_FAIL()"))>>224;
  uint256 internal constant BAD_STRAT = uint256(keccak256("BAD_STRAT()"))>>224;
  uint256 internal constant BAD_DELEGATE = uint256(keccak256("BAD_DELEGATE()"))>>224;
  uint256 internal constant BAD_EOA = uint256(keccak256("BAD_EOA()"))>>224;
  uint256 internal constant LOW_HEALTH = uint256(keccak256("LOW_HEALTH()"))>>224;
  uint256 internal constant HIGH_INTEREST = uint256(keccak256("HIGH_INTEREST()"))>>224;
  uint256 internal constant DONT_OWN_ASSET = uint256(keccak256("DONT_OWN_ASSET()"))>>224;
  uint256 internal constant DONT_OWN_ETH = uint256(keccak256("DONT_OWN_ETH()"))>>224;
  uint256 internal constant ETH_TRANSFER_FAIL = uint256(keccak256("ETH_TRANSFER_FAIL()"))>>224;
  uint256 internal constant ETH_TRANSFERFROM_FAIL = uint256(keccak256("ETH_TRANSFERFROM_FAIL()"))>>224;
  uint256 internal constant INCORRECT_MARKET_TYPE = uint256(keccak256("INCORRECT_MARKET_TYPE()"))>>224;
  uint256 internal constant MAX_BLOCKNUMBER = uint256(keccak256("MAX_BLOCKNUMBER()"))>>224;
  uint256 internal constant NEVER_DISABLE_OWNER = uint256(keccak256("NEVER_DISABLE_OWNER()"))>>224;
  uint256 internal constant NOT_EOA = uint256(keccak256("NOT_EOA()"))>>224;
  uint256 internal constant NOT_OWNER = uint256(keccak256("NOT_OWNER()"))>>224;
  uint256 internal constant NO_PROFIT = uint256(keccak256("NO_PROFIT()"))>>224;
  uint256 internal constant OPP_SENT = uint256(keccak256("OPP_SENT()"))>>224;
  uint256 internal constant ZERO_BALANCE = uint256(keccak256("ZERO_BALANCE()"))>>224;
  uint256 internal constant WRONG_VAL = uint256(keccak256("WRONG_VAL()"))>>224;
  uint256 internal constant INSUFFICIENT_INPUT = uint256(keccak256("INSUFFICIENT_INPUT()"))>>224;
  uint256 internal constant INSUFFICIENT_LIQUIDITY = uint256(keccak256("INSUFFICIENT_LIQUIDITY()"))>>224;
  uint256 internal constant PAIR_LESS_AMOUNT_OUT = uint256(keccak256("PAIR_LESS_AMOUNT_OUT()"))>>224;
  uint256 internal constant PAUSED = uint256(keccak256("PAUSED()"))>>224;
  uint256 internal constant INCORRECT_TJ_MARKET = uint256(keccak256("INCORRECT_TJ_MARKET()"))>>224;
  uint256 internal constant INCORRECT_CHAIN = uint256(keccak256("INCORRECT_CHAIN()"))>>224;
  uint256 internal constant BAD_TRANSFER = uint256(keccak256("BAD_TRANSFER()"))>>224;

  // SOLVER SPECIFIC
  uint256 internal constant SOLVER_PAUSED = uint256(keccak256("SOLVER_PAUSED"))>>224;
  uint256 internal constant SOLVER_INCORRECT_CHAIN_ID = uint256(keccak256("SOLVER_INCORRECT_CHAIN_ID"))>>224;
  uint256 internal constant SOLVER_INVALID_AMOUNT_IN = uint256(keccak256("SOLVER_INVALID_AMOUNT_IN()"))>>224;
  uint256 internal constant SOLVER_INVALID_AMOUNT_OUT = uint256(keccak256("SOLVER_INVALID_AMOUNT_OUT()"))>>224;
  uint256 internal constant SOLVER_INVALID_NATIVE_TOKEN = uint256(keccak256("SOLVER_INVALID_NATIVE_TOKEN()"))>>224;
  uint256 internal constant SOLVER_SAME_TOKEN = uint256(keccak256("SOLVER_SAME_TOKEN()"))>>224;
  uint256 internal constant SOLVER_INVALID_TOKEN = uint256(keccak256("SOLVER_INVALID_TOKEN()"))>>224;
  uint256 internal constant SOLVER_TOKEN_NOT_WHITELISTED = uint256(keccak256("SOLVER_TOKEN_NOT_WHITELISTED()"))>>224;
  uint256 internal constant SOLVER_DEADLINE = uint256(keccak256("SOLVER_DEADLINE()"))>>224;
  uint256 internal constant SOLVER_TRANSFER_IN_FAILED = uint256(keccak256("SOLVER_TRANSFER_IN_FAILED()"))>>224;
  uint256 internal constant SOLVER_NATIVE_TRANSFER_OUT_FAILED = uint256(keccak256("SOLVER_NATIVE_TRANSFER_OUT_FAILED()"))>>224;
  uint256 internal constant SOLVER_ERC20_TRANSFER_OUT_FAILED = uint256(keccak256("SOLVER_ERC20_TRANSFER_OUT_FAILED()"))>>224;
  uint256 internal constant SOLVER_INPUT_AMOUNT_INCORRECT = uint256(keccak256("SOLVER_INPUT_AMOUNT_INCORRECT()"))>>224;
  uint256 internal constant SOLVER_OUTPUT_AMOUNT_INCORRECT = uint256(keccak256("SOLVER_OUTPUT_AMOUNT_INCORRECT()"))>>224;
  uint256 internal constant SOLVER_INVALID_EXECUTOR = uint256(keccak256("SOLVER_INVALID_EXECUTOR()"))>>224;
  uint256 internal constant SOLVER_STRATEGY_EOA = uint256(keccak256("SOLVER_STRATEGY_EOA()"))>>224;
  uint256 internal constant SOLVER_NONCE_ALREADY_USED = uint256(keccak256("SOLVER_NONCE_ALREADY_USED()"))>>224;
  uint256 internal constant SOLVER_INVALID_SIGNATURE_LENGTH = uint256(keccak256("SOLVER_INVALID_SIGNATURE_LENGTH()"))>>224;
  uint256 internal constant SOLVER_INVALID_SIGNATURE = uint256(keccak256("SOLVER_INVALID_SIGNATURE()"))>>224;
  uint256 internal constant SOLVER_INVALID_SIGNER = uint256(keccak256("SOLVER_INVALID_SIGNER()"))>>224;
  uint256 internal constant SOLVER_SIGNER_IS_CONTRACT = uint256(keccak256("SOLVER_SIGNER_IS_CONTRACT()"))>>224;
}

// _revert currently only supports Errors without parameters
function _revert(uint256 errorSignature) pure {
    assembly {
      mstore(0, errorSignature)
      revert(28, 4)
    }
}

// The below bug only affects contracts deployed prior to February 29, 2023 that used Errors7
// and has since been patched
//
// A prior implementation of Errors7 (git commit e339f0ea8598c5bb0a2f68d6457e0e9154afd2e4) returned
// revert signatures inconsistent with the Solidity 0.8.4+ standard by using the 4 least significant bytes
// of the keccak256 hash instead of the 4 most significant bytes. For example:
//
//
// keccak256("SAMPLE_ERR()")
// 0xd11dbe311fe3858be2aeb40ce68c602ade497351c55b13b1972d0a9d26c9e1a0
//  |________|
//      ^ "Expected" - Solidity 0.8.4+ standard
//                                                          |________|
//                       "Inconsistent" - Prior Errors7 library  ^
//
//
// For documentation and search/lookup purposes, the "Inconsistent" and "Expected" revert signatures
// for affected errors are listed here:
//
//
// Error                              Inconsistent            Expected
// -----------------------------------------------------------------------------------
// APPROVE_FAIL                       0xe7b5e347              0xf4a2f629
// BAD_STRAT                          0xd2a30e2a              0x52afb84d
// DONT_OWN_ASSET                     0x76fcb61a              0x674a4344
// DONT_OWN_ETH                       0xe652a174              0x2fb2e560
// ETH_TRANSFER_FAIL                  0x9be8b213              0xe4f6d9d1
// ETH_TRANSFERFROM_FAIL              0x74915bb0              0xdee9cd0f
// INCORRECT_MARKET_TYPE              0x6f5e3ce7              0x6c31d465
// MAX_BLOCKNUMBER                    0x91cad182              0xfbc6d29f
// NEVER_DISABLE_OWNER                0xf0ba6667              0x12febab7
// NOT_EOA                            0x138056cb              0x9ac47e10
// NOT_OWNER                          0xaf282d92              0x71d78b12
// NO_PROFIT                          0x1c98595c              0xb5b9a8e6
// OPP_SENT                           0x3aff82c1              0xbc3bd618
// ZERO_BALANCE                       0xc0f69030              0x3063399a
// WRONG_VAL                          0xcb1c21fe              0x3ab39804
// INSUFFICIENT_INPUT                 0xba64403d              0x42d8869d
// INSUFFICIENT_LIQUIDITY             0x5c90fe32              0x827e7b7f
// PAIR_LESS_AMOUNT_OUT               0xf1da0c5e              0x073497c3

// src/base/interfaces/ICreditDelegationToken.sol

interface ICreditDelegationToken {
  event BorrowAllowanceDelegated(
    address indexed fromUser,
    address indexed toUser,
    address asset,
    uint256 amount
  );

  /**
   * @dev delegates borrowing power to a user on the specific debt token
   * @param delegatee the address receiving the delegated borrowing power
   * @param amount the maximum amount being delegated. Delegation will still
   * respect the liquidation constraints (even if delegated, a delegatee cannot
   * force a delegator HF to go below 1)
   **/
  function approveDelegation(address delegatee, uint256 amount) external;

  /**
   * @dev returns the borrow allowance of the user
   * @param fromUser The user to giving allowance
   * @param toUser The user to give allowance to
   * @return the current allowance of toUser
   **/
  function borrowAllowance(address fromUser, address toUser) external view returns (uint256);
}

// src/base/interfaces/IERC20.sol

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the number of decimals used to get its user representation.
     */
    function decimals() external view returns (uint8);

    /**
     * @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);
}

// src/base/interfaces/IRewards.sol

interface IRewards {
    function poolLength() external view returns (uint256);

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

    function claim(address _user, address[] memory _tokens) external;

    function exit() external;

    function exit(bool claimRewards, address onBehalfOf) external;
}

// src/base/SafeTransferLib.sol

/// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values.
/// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol)
/// @dev Use with caution! Some functions in this library knowingly create dirty bits at the destination of the free memory pointer.
/// @dev Note that none of the functions in this library check that a token has code at all! That responsibility is delegated to the caller.
library SafeTransferLib {
    /*//////////////////////////////////////////////////////////////
                             ETH OPERATIONS
    //////////////////////////////////////////////////////////////*/

    function safeTransferETH(address to, uint256 amount) internal {
        bool success;

        /// @solidity memory-safe-assembly
        assembly {
            // Transfer the ETH and store if it succeeded or not.
            success := call(gas(), to, amount, 0, 0, 0, 0)
        }
        if (!success) {
          _revert(Errors7.ETH_TRANSFER_FAIL);
        }
    }

    /*//////////////////////////////////////////////////////////////
                            ERC20 OPERATIONS
    //////////////////////////////////////////////////////////////*/

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 amount
    ) internal {
        bool success;

        /// @solidity memory-safe-assembly
        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata into memory, beginning with the function selector.
            mstore(freeMemoryPointer, 0x23b872dd00000000000000000000000000000000000000000000000000000000)
            mstore(add(freeMemoryPointer, 4), from) // Append the "from" argument.
            mstore(add(freeMemoryPointer, 36), to) // Append the "to" argument.
            mstore(add(freeMemoryPointer, 68), amount) // Append the "amount" argument.

            success := and(
                // Set success to whether the call reverted, if not we check it either
                // returned exactly 1 (can't just be non-zero data), or had no return data.
                or(and(eq(mload(0), 1), gt(returndatasize(), 31)), iszero(returndatasize())),
                // We use 100 because the length of our calldata totals up like so: 4 + 32 * 3.
                // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.
                // Counterintuitively, this call must be positioned second to the or() call in the
                // surrounding and() call or else returndatasize() will be zero during the computation.
                call(gas(), token, 0, freeMemoryPointer, 100, 0, 32)
            )
        }

        if (!success) {
          _revert(Errors7.ETH_TRANSFERFROM_FAIL);
        }
    }

    function safeTransfer(
        IERC20 token,
        address to,
        uint256 amount
    ) internal {
        bool success;

        /// @solidity memory-safe-assembly
        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata into memory, beginning with the function selector.
            mstore(freeMemoryPointer, 0xa9059cbb00000000000000000000000000000000000000000000000000000000)
            mstore(add(freeMemoryPointer, 4), to) // Append the "to" argument.
            mstore(add(freeMemoryPointer, 36), amount) // Append the "amount" argument.

            success := and(
                // Set success to whether the call reverted, if not we check it either
                // returned exactly 1 (can't just be non-zero data), or had no return data.
                or(and(eq(mload(0), 1), gt(returndatasize(), 31)), iszero(returndatasize())),
                // We use 68 because the length of our calldata totals up like so: 4 + 32 * 2.
                // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.
                // Counterintuitively, this call must be positioned second to the or() call in the
                // surrounding and() call or else returndatasize() will be zero during the computation.
                call(gas(), token, 0, freeMemoryPointer, 68, 0, 32)
            )
        }

        if (!success) {
          _revert(Errors7.ETH_TRANSFER_FAIL);
        }
    }

    function safeApprove(
        IERC20 token,
        address to,
        uint256 amount
    ) internal {
        bool success;

        /// @solidity memory-safe-assembly
        assembly {
            // Get a pointer to some free memory.
            let freeMemoryPointer := mload(0x40)

            // Write the abi-encoded calldata into memory, beginning with the function selector.
            mstore(freeMemoryPointer, 0x095ea7b300000000000000000000000000000000000000000000000000000000)
            mstore(add(freeMemoryPointer, 4), to) // Append the "to" argument.
            mstore(add(freeMemoryPointer, 36), amount) // Append the "amount" argument.

            success := and(
                // Set success to whether the call reverted, if not we check it either
                // returned exactly 1 (can't just be non-zero data), or had no return data.
                or(and(eq(mload(0), 1), gt(returndatasize(), 31)), iszero(returndatasize())),
                // We use 68 because the length of our calldata totals up like so: 4 + 32 * 2.
                // We use 0 and 32 to copy up to 32 bytes of return data into the scratch space.
                // Counterintuitively, this call must be positioned second to the or() call in the
                // surrounding and() call or else returndatasize() will be zero during the computation.
                call(gas(), token, 0, freeMemoryPointer, 68, 0, 32)
            )
        }

        if (!success) {
          _revert(Errors7.APPROVE_FAIL);
        }
    }
}

// src/base/MultisigOwnable.sol

abstract contract MultisigOwnable {
    address private owner;
    event Sweep(address indexed token, address indexed to, uint256 amount);

    constructor(address _owner) {
        owner = _owner;
    }

    modifier OnlyOwner() {
        if(msg.sender != owner) _revert(Errors7.NOT_OWNER);
        _; 
    }

    function isNotOwner() external returns (bool) {
      return msg.sender != owner;
    }

    function ownerAddress() external view returns (address) {
      return owner;
    }

    receive() external payable {}

    function sweepAllERC20(address _tokenAddress) virtual external OnlyOwner {
        uint balance = IERC20(_tokenAddress).balanceOf(address(this));
        if (balance == 0) {
          _revert(Errors7.ZERO_BALANCE);
        }
        SafeTransferLib.safeTransfer(IERC20(_tokenAddress), msg.sender, balance);
        emit Sweep(_tokenAddress, msg.sender, balance);
    }
  
    function sweepSomeERC20(
        address _tokenAddress, 
        uint256 amountToTransfer
    ) virtual external OnlyOwner {
        if (amountToTransfer == 0) {
          _revert(Errors7.ZERO_BALANCE);
        }
        uint balance = IERC20(_tokenAddress).balanceOf(address(this));
        if (balance < amountToTransfer) {
          _revert(Errors7.DONT_OWN_ASSET);
        }
        SafeTransferLib.safeTransfer(IERC20(_tokenAddress), msg.sender, amountToTransfer);
        emit Sweep(_tokenAddress, msg.sender, amountToTransfer);
    }
  
    function sweepAllNative() virtual external OnlyOwner {
        uint curr_balance = address(this).balance;
        if (curr_balance == 0) {
          _revert(Errors7.ZERO_BALANCE);
        }
        SafeTransferLib.safeTransferETH(msg.sender, curr_balance);
        emit Sweep(address(0), msg.sender, curr_balance);
    }

    function sweepSomeNative(uint256 amountToTransfer) virtual external OnlyOwner {
        if (amountToTransfer == 0) {
          _revert(Errors7.ZERO_BALANCE);
        }
        uint balance = address(this).balance;
        if (balance < amountToTransfer) {
          _revert(Errors7.DONT_OWN_ETH);
        }
        SafeTransferLib.safeTransferETH(msg.sender, amountToTransfer);
        emit Sweep(address(0), msg.sender, amountToTransfer);
    }

    function transferOwnership(address _owner) virtual external OnlyOwner {
      owner = _owner;
    }
}

// src/base/VaultManager.sol

contract VaultManager is MultisigOwnable {
    mapping(address => bool) strats;
    mapping(address => bool) creditDelegates;
    address public incentivesController;
    address public multiFeeDistribution;

    constructor(address _owner) MultisigOwnable(_owner) {
    }

    /// TOKEN SWEEP FUNCTIONS ///

    modifier OnlyAuthorizedStrategies() {
        if(!strats[msg.sender]) _revert(Errors7.BAD_STRAT);
        _;
    }

    modifier OnlyCreditDelegate() {
        if(!creditDelegates[msg.sender]) _revert(Errors7.BAD_DELEGATE);
        _;
    }

    function sweepAllERC20(address _tokenAddress) override external OnlyAuthorizedStrategies {
        uint balance = IERC20(_tokenAddress).balanceOf(address(this));
        if (balance == 0) {
          _revert(Errors7.ZERO_BALANCE);
        }
        SafeTransferLib.safeTransfer(IERC20(_tokenAddress), msg.sender, balance);
        emit Sweep(_tokenAddress, msg.sender, balance);
    }
  
    function sweepSomeERC20(
        address _tokenAddress, 
        uint256 amountToTransfer
    ) override external OnlyAuthorizedStrategies {
        uint balance = IERC20(_tokenAddress).balanceOf(address(this));
        if (amountToTransfer == 0) {
          _revert(Errors7.ZERO_BALANCE);
        }
        if (balance < amountToTransfer) {
          _revert(Errors7.DONT_OWN_ASSET);
        }
        SafeTransferLib.safeTransfer(IERC20(_tokenAddress), msg.sender, amountToTransfer);
        emit Sweep(_tokenAddress, msg.sender, amountToTransfer);
    }
  
    function sweepAllNative() override external OnlyAuthorizedStrategies {
        uint curr_balance = address(this).balance;
        if (curr_balance == 0) {
          _revert(Errors7.ZERO_BALANCE);
        }
        SafeTransferLib.safeTransferETH(msg.sender, curr_balance);
        emit Sweep(address(0), msg.sender, curr_balance);
    }

    function sweepSomeNative(uint256 amountToTransfer) override external OnlyAuthorizedStrategies {
        uint balance = address(this).balance;
        if (balance == 0 || amountToTransfer == 0) {
          _revert(Errors7.ZERO_BALANCE);
        }
        if (balance < amountToTransfer) {
          _revert(Errors7.DONT_OWN_ETH);
        }
        SafeTransferLib.safeTransferETH(msg.sender, amountToTransfer);
        emit Sweep(address(0), msg.sender, amountToTransfer);
    }

    function approveDelegation(ICreditDelegationToken _debtToken, address _delegatee, uint256 _amount) external OnlyCreditDelegate {
      _debtToken.approveDelegation(_delegatee, _amount);
    }

    function toggleStrategy(address _strat, bool trigger) external OnlyOwner {
      strats[_strat] = trigger;
    }

    function toggleDelegate(address _delegate, bool trigger) external OnlyOwner {
      creditDelegates[_delegate] = trigger;
    }    

    function setRewards(address _incentivesController, address _multiFeeDistribution) external OnlyOwner {
      incentivesController = _incentivesController;
      multiFeeDistribution = _multiFeeDistribution;
    }

    function claimRewardsGeist() external OnlyOwner {
      uint poolLength = IRewards(incentivesController).poolLength();
      address[] memory tokens = new address[](poolLength);
      for (uint i=0; i<poolLength; i++) {
        tokens[i] = IRewards(incentivesController).registeredTokens(i);
      } 
      IRewards(incentivesController).claim(address(this), tokens);
      IRewards(multiFeeDistribution).exit();
    }

    function claimRewardsRadiant() external OnlyOwner {
      uint poolLength = IRewards(incentivesController).poolLength();
      address[] memory tokens = new address[](poolLength);
      for (uint i=0; i<poolLength; i++) {
        tokens[i] = IRewards(incentivesController).registeredTokens(i);
      } 
      IRewards(incentivesController).claim(address(this), tokens);
      IRewards(multiFeeDistribution).exit(true, address(this));
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Sweep","type":"event"},{"inputs":[{"internalType":"contract ICreditDelegationToken","name":"_debtToken","type":"address"},{"internalType":"address","name":"_delegatee","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"approveDelegation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimRewardsGeist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimRewardsRadiant","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"incentivesController","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"multiFeeDistribution","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_incentivesController","type":"address"},{"internalType":"address","name":"_multiFeeDistribution","type":"address"}],"name":"setRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"sweepAllERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sweepAllNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"amountToTransfer","type":"uint256"}],"name":"sweepSomeERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToTransfer","type":"uint256"}],"name":"sweepSomeNative","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_delegate","type":"address"},{"internalType":"bool","name":"trigger","type":"bool"}],"name":"toggleDelegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strat","type":"address"},{"internalType":"bool","name":"trigger","type":"bool"}],"name":"toggleStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b5060405162001e0938038062001e09833981810160405281019062000037919062000097565b80806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506200011c565b600081519050620000918162000102565b92915050565b600060208284031215620000b057620000af620000fd565b5b6000620000c08482850162000080565b91505092915050565b6000620000d682620000dd565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200010d81620000c9565b81146200011957600080fd5b50565b611cdd806200012c6000396000f3fe6080604052600436106100ec5760003560e01c8063c0b143631161008a578063d4c2beff11610059578063d4c2beff1461029f578063f2946e73146102c8578063f2fde38b146102df578063f5fec8b314610308576100f3565b8063c0b143631461020b578063c5cbe9c414610234578063d23b28881461024b578063d2ce617314610276576100f3565b8063542b3cb8116100c6578063542b3cb8146101615780638527a7a51461018c5780638f84aa09146101b5578063af1df255146101e0576100f3565b80630bbf128b146100f857806329f29c8e1461010f57806337ab3a8414610138576100f3565b366100f357005b600080fd5b34801561010457600080fd5b5061010d610331565b005b34801561011b57600080fd5b50610136600480360381019061013191906118fe565b610465565b005b34801561014457600080fd5b5061015f600480360381019061015a919061186b565b6105de565b005b34801561016d57600080fd5b506101766107d5565b6040516101839190611a0a565b60405180910390f35b34801561019857600080fd5b506101b360048036038101906101ae919061182b565b6107fb565b005b3480156101c157600080fd5b506101ca6108da565b6040516101d79190611a0a565b60405180910390f35b3480156101ec57600080fd5b506101f5610903565b6040516102029190611a0a565b60405180910390f35b34801561021757600080fd5b50610232600480360381019061022d919061182b565b610929565b005b34801561024057600080fd5b50610249610a08565b005b34801561025757600080fd5b50610260610db7565b60405161026d9190611a7e565b60405180910390f35b34801561028257600080fd5b5061029d600480360381019061029891906118ab565b610e0f565b005b3480156102ab57600080fd5b506102c660048036038101906102c191906117eb565b610f03565b005b3480156102d457600080fd5b506102dd61100d565b005b3480156102eb57600080fd5b5061030660048036038101906103019190611791565b6113ae565b005b34801561031457600080fd5b5061032f600480360381019061032a9190611791565b611475565b005b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166103b3576103b260e07f52afb84d0bee0f27a0ab1daeb241d384e86a2d4e443b4cb256f89ef0d2a30e2a60001c901c611632565b5b600047905060008114156103f2576103f160e07f3063399a941c05ce22d13fd57602454754f6d8abe90ee3c00f606e9ac0f6903060001c901c611632565b5b6103fc338261163c565b3373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fed679328aebf74ede77ae09efcf36e90244f83643dadac1c2d9f0b21a46f6ab78360405161045a9190611ac2565b60405180910390a350565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166104e7576104e660e07f52afb84d0bee0f27a0ab1daeb241d384e86a2d4e443b4cb256f89ef0d2a30e2a60001c901c611632565b5b600047905060008114806104fb5750600082145b156105315761053060e07f3063399a941c05ce22d13fd57602454754f6d8abe90ee3c00f606e9ac0f6903060001c901c611632565b5b8181101561056a5761056960e07f2fb2e5607f052fdf04ea0ca24f91e15e2eec54aaae781c2df7d9d725e652a17460001c901c611632565b5b610574338361163c565b3373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fed679328aebf74ede77ae09efcf36e90244f83643dadac1c2d9f0b21a46f6ab7846040516105d29190611ac2565b60405180910390a35050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106605761065f60e07f52afb84d0bee0f27a0ab1daeb241d384e86a2d4e443b4cb256f89ef0d2a30e2a60001c901c611632565b5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161069b9190611a0a565b60206040518083038186803b1580156106b357600080fd5b505afa1580156106c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106eb919061192b565b905060008214156107275761072660e07f3063399a941c05ce22d13fd57602454754f6d8abe90ee3c00f606e9ac0f6903060001c901c611632565b5b818110156107605761075f60e07f674a43449e6c3ffe5ecdf734a1af2fbcda6d00a278ac7f97bee6453376fcb61a60001c901c611632565b5b61076b833384611685565b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fed679328aebf74ede77ae09efcf36e90244f83643dadac1c2d9f0b21a46f6ab7846040516107c89190611ac2565b60405180910390a3505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461087f5761087e60e07f71d78b125518922d3f9862c72620aed669fb2543619b71c04a3c0b55af282d9260001c901c611632565b5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109ad576109ac60e07f71d78b125518922d3f9862c72620aed669fb2543619b71c04a3c0b55af282d9260001c901c611632565b5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a8c57610a8b60e07f71d78b125518922d3f9862c72620aed669fb2543619b71c04a3c0b55af282d9260001c901c611632565b5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663081e3eda6040518163ffffffff1660e01b815260040160206040518083038186803b158015610af657600080fd5b505afa158015610b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2e919061192b565b905060008167ffffffffffffffff811115610b4c57610b4b611c17565b5b604051908082528060200260200182016040528015610b7a5781602001602082028036833780820191505090505b50905060005b82811015610c9357600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639a0ba2ea826040518263ffffffff1660e01b8152600401610be39190611ac2565b60206040518083038186803b158015610bfb57600080fd5b505afa158015610c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3391906117be565b828281518110610c4657610c45611be8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080610c8b90611b70565b915050610b80565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e2eba0930836040518363ffffffff1660e01b8152600401610cf1929190611a25565b600060405180830381600087803b158015610d0b57600080fd5b505af1158015610d1f573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166372be3d4a6001306040518363ffffffff1660e01b8152600401610d81929190611a99565b600060405180830381600087803b158015610d9b57600080fd5b505af1158015610daf573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415905090565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e9157610e9060e07ffcd715b82364b68b196338a70bfa106a2c4a1db7bdf925bc7ee41086c661d22660001c901c611632565b5b8273ffffffffffffffffffffffffffffffffffffffff1663c04a8a1083836040518363ffffffff1660e01b8152600401610ecc929190611a55565b600060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b50505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f8757610f8660e07f71d78b125518922d3f9862c72620aed669fb2543619b71c04a3c0b55af282d9260001c901c611632565b5b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110915761109060e07f71d78b125518922d3f9862c72620aed669fb2543619b71c04a3c0b55af282d9260001c901c611632565b5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663081e3eda6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110fb57600080fd5b505afa15801561110f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611133919061192b565b905060008167ffffffffffffffff81111561115157611150611c17565b5b60405190808252806020026020018201604052801561117f5781602001602082028036833780820191505090505b50905060005b8281101561129857600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639a0ba2ea826040518263ffffffff1660e01b81526004016111e89190611ac2565b60206040518083038186803b15801561120057600080fd5b505afa158015611214573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123891906117be565b82828151811061124b5761124a611be8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808061129090611b70565b915050611185565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e2eba0930836040518363ffffffff1660e01b81526004016112f6929190611a25565b600060405180830381600087803b15801561131057600080fd5b505af1158015611324573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e9fad8ee6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561139257600080fd5b505af11580156113a6573d6000803e3d6000fd5b505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114325761143160e07f71d78b125518922d3f9862c72620aed669fb2543619b71c04a3c0b55af282d9260001c901c611632565b5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166114f7576114f660e07f52afb84d0bee0f27a0ab1daeb241d384e86a2d4e443b4cb256f89ef0d2a30e2a60001c901c611632565b5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115329190611a0a565b60206040518083038186803b15801561154a57600080fd5b505afa15801561155e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611582919061192b565b905060008114156115be576115bd60e07f3063399a941c05ce22d13fd57602454754f6d8abe90ee3c00f606e9ac0f6903060001c901c611632565b5b6115c9823383611685565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fed679328aebf74ede77ae09efcf36e90244f83643dadac1c2d9f0b21a46f6ab7836040516116269190611ac2565b60405180910390a35050565b806000526004601cfd5b600080600080600085875af19050806116805761167f60e07fe4f6d9d1d059252012dcd138cde31a872a7c68436c998d27472602b29be8b21360001c901c611632565b5b505050565b60006040517fa9059cbb000000000000000000000000000000000000000000000000000000008152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061170d5761170c60e07fe4f6d9d1d059252012dcd138cde31a872a7c68436c998d27472602b29be8b21360001c901c611632565b5b50505050565b60008135905061172281611c4b565b92915050565b60008151905061173781611c4b565b92915050565b60008135905061174c81611c62565b92915050565b60008135905061176181611c79565b92915050565b60008135905061177681611c90565b92915050565b60008151905061178b81611c90565b92915050565b6000602082840312156117a7576117a6611c46565b5b60006117b584828501611713565b91505092915050565b6000602082840312156117d4576117d3611c46565b5b60006117e284828501611728565b91505092915050565b6000806040838503121561180257611801611c46565b5b600061181085828601611713565b925050602061182185828601611713565b9150509250929050565b6000806040838503121561184257611841611c46565b5b600061185085828601611713565b92505060206118618582860161173d565b9150509250929050565b6000806040838503121561188257611881611c46565b5b600061189085828601611713565b92505060206118a185828601611767565b9150509250929050565b6000806000606084860312156118c4576118c3611c46565b5b60006118d286828701611752565b93505060206118e386828701611713565b92505060406118f486828701611767565b9150509250925092565b60006020828403121561191457611913611c46565b5b600061192284828501611767565b91505092915050565b60006020828403121561194157611940611c46565b5b600061194f8482850161177c565b91505092915050565b60006119648383611970565b60208301905092915050565b61197981611b16565b82525050565b61198881611b16565b82525050565b600061199982611aed565b6119a38185611b05565b93506119ae83611add565b8060005b838110156119df5781516119c68882611958565b97506119d183611af8565b9250506001810190506119b2565b5085935050505092915050565b6119f581611b28565b82525050565b611a0481611b66565b82525050565b6000602082019050611a1f600083018461197f565b92915050565b6000604082019050611a3a600083018561197f565b8181036020830152611a4c818461198e565b90509392505050565b6000604082019050611a6a600083018561197f565b611a7760208301846119fb565b9392505050565b6000602082019050611a9360008301846119ec565b92915050565b6000604082019050611aae60008301856119ec565b611abb602083018461197f565b9392505050565b6000602082019050611ad760008301846119fb565b92915050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b6000611b2182611b46565b9050919050565b60008115159050919050565b6000611b3f82611b16565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611b7b82611b66565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611bae57611bad611bb9565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b611c5481611b16565b8114611c5f57600080fd5b50565b611c6b81611b28565b8114611c7657600080fd5b50565b611c8281611b34565b8114611c8d57600080fd5b50565b611c9981611b66565b8114611ca457600080fd5b5056fea26469706673582212203c41c7917e1d7e3e5166734fc7cd07c728927191bfb6192adf3495cca04f97d264736f6c63430008060033000000000000000000000000ca007bdcdbead582915cd68b521c7d6fc9359cf7

Deployed Bytecode

0x6080604052600436106100ec5760003560e01c8063c0b143631161008a578063d4c2beff11610059578063d4c2beff1461029f578063f2946e73146102c8578063f2fde38b146102df578063f5fec8b314610308576100f3565b8063c0b143631461020b578063c5cbe9c414610234578063d23b28881461024b578063d2ce617314610276576100f3565b8063542b3cb8116100c6578063542b3cb8146101615780638527a7a51461018c5780638f84aa09146101b5578063af1df255146101e0576100f3565b80630bbf128b146100f857806329f29c8e1461010f57806337ab3a8414610138576100f3565b366100f357005b600080fd5b34801561010457600080fd5b5061010d610331565b005b34801561011b57600080fd5b50610136600480360381019061013191906118fe565b610465565b005b34801561014457600080fd5b5061015f600480360381019061015a919061186b565b6105de565b005b34801561016d57600080fd5b506101766107d5565b6040516101839190611a0a565b60405180910390f35b34801561019857600080fd5b506101b360048036038101906101ae919061182b565b6107fb565b005b3480156101c157600080fd5b506101ca6108da565b6040516101d79190611a0a565b60405180910390f35b3480156101ec57600080fd5b506101f5610903565b6040516102029190611a0a565b60405180910390f35b34801561021757600080fd5b50610232600480360381019061022d919061182b565b610929565b005b34801561024057600080fd5b50610249610a08565b005b34801561025757600080fd5b50610260610db7565b60405161026d9190611a7e565b60405180910390f35b34801561028257600080fd5b5061029d600480360381019061029891906118ab565b610e0f565b005b3480156102ab57600080fd5b506102c660048036038101906102c191906117eb565b610f03565b005b3480156102d457600080fd5b506102dd61100d565b005b3480156102eb57600080fd5b5061030660048036038101906103019190611791565b6113ae565b005b34801561031457600080fd5b5061032f600480360381019061032a9190611791565b611475565b005b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166103b3576103b260e07f52afb84d0bee0f27a0ab1daeb241d384e86a2d4e443b4cb256f89ef0d2a30e2a60001c901c611632565b5b600047905060008114156103f2576103f160e07f3063399a941c05ce22d13fd57602454754f6d8abe90ee3c00f606e9ac0f6903060001c901c611632565b5b6103fc338261163c565b3373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fed679328aebf74ede77ae09efcf36e90244f83643dadac1c2d9f0b21a46f6ab78360405161045a9190611ac2565b60405180910390a350565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166104e7576104e660e07f52afb84d0bee0f27a0ab1daeb241d384e86a2d4e443b4cb256f89ef0d2a30e2a60001c901c611632565b5b600047905060008114806104fb5750600082145b156105315761053060e07f3063399a941c05ce22d13fd57602454754f6d8abe90ee3c00f606e9ac0f6903060001c901c611632565b5b8181101561056a5761056960e07f2fb2e5607f052fdf04ea0ca24f91e15e2eec54aaae781c2df7d9d725e652a17460001c901c611632565b5b610574338361163c565b3373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fed679328aebf74ede77ae09efcf36e90244f83643dadac1c2d9f0b21a46f6ab7846040516105d29190611ac2565b60405180910390a35050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106605761065f60e07f52afb84d0bee0f27a0ab1daeb241d384e86a2d4e443b4cb256f89ef0d2a30e2a60001c901c611632565b5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161069b9190611a0a565b60206040518083038186803b1580156106b357600080fd5b505afa1580156106c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106eb919061192b565b905060008214156107275761072660e07f3063399a941c05ce22d13fd57602454754f6d8abe90ee3c00f606e9ac0f6903060001c901c611632565b5b818110156107605761075f60e07f674a43449e6c3ffe5ecdf734a1af2fbcda6d00a278ac7f97bee6453376fcb61a60001c901c611632565b5b61076b833384611685565b3373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fed679328aebf74ede77ae09efcf36e90244f83643dadac1c2d9f0b21a46f6ab7846040516107c89190611ac2565b60405180910390a3505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461087f5761087e60e07f71d78b125518922d3f9862c72620aed669fb2543619b71c04a3c0b55af282d9260001c901c611632565b5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109ad576109ac60e07f71d78b125518922d3f9862c72620aed669fb2543619b71c04a3c0b55af282d9260001c901c611632565b5b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a8c57610a8b60e07f71d78b125518922d3f9862c72620aed669fb2543619b71c04a3c0b55af282d9260001c901c611632565b5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663081e3eda6040518163ffffffff1660e01b815260040160206040518083038186803b158015610af657600080fd5b505afa158015610b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b2e919061192b565b905060008167ffffffffffffffff811115610b4c57610b4b611c17565b5b604051908082528060200260200182016040528015610b7a5781602001602082028036833780820191505090505b50905060005b82811015610c9357600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639a0ba2ea826040518263ffffffff1660e01b8152600401610be39190611ac2565b60206040518083038186803b158015610bfb57600080fd5b505afa158015610c0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3391906117be565b828281518110610c4657610c45611be8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080610c8b90611b70565b915050610b80565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e2eba0930836040518363ffffffff1660e01b8152600401610cf1929190611a25565b600060405180830381600087803b158015610d0b57600080fd5b505af1158015610d1f573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166372be3d4a6001306040518363ffffffff1660e01b8152600401610d81929190611a99565b600060405180830381600087803b158015610d9b57600080fd5b505af1158015610daf573d6000803e3d6000fd5b505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415905090565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610e9157610e9060e07ffcd715b82364b68b196338a70bfa106a2c4a1db7bdf925bc7ee41086c661d22660001c901c611632565b5b8273ffffffffffffffffffffffffffffffffffffffff1663c04a8a1083836040518363ffffffff1660e01b8152600401610ecc929190611a55565b600060405180830381600087803b158015610ee657600080fd5b505af1158015610efa573d6000803e3d6000fd5b50505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f8757610f8660e07f71d78b125518922d3f9862c72620aed669fb2543619b71c04a3c0b55af282d9260001c901c611632565b5b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110915761109060e07f71d78b125518922d3f9862c72620aed669fb2543619b71c04a3c0b55af282d9260001c901c611632565b5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663081e3eda6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110fb57600080fd5b505afa15801561110f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611133919061192b565b905060008167ffffffffffffffff81111561115157611150611c17565b5b60405190808252806020026020018201604052801561117f5781602001602082028036833780820191505090505b50905060005b8281101561129857600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639a0ba2ea826040518263ffffffff1660e01b81526004016111e89190611ac2565b60206040518083038186803b15801561120057600080fd5b505afa158015611214573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123891906117be565b82828151811061124b5761124a611be8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050808061129090611b70565b915050611185565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638e2eba0930836040518363ffffffff1660e01b81526004016112f6929190611a25565b600060405180830381600087803b15801561131057600080fd5b505af1158015611324573d6000803e3d6000fd5b50505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e9fad8ee6040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561139257600080fd5b505af11580156113a6573d6000803e3d6000fd5b505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114325761143160e07f71d78b125518922d3f9862c72620aed669fb2543619b71c04a3c0b55af282d9260001c901c611632565b5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166114f7576114f660e07f52afb84d0bee0f27a0ab1daeb241d384e86a2d4e443b4cb256f89ef0d2a30e2a60001c901c611632565b5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115329190611a0a565b60206040518083038186803b15801561154a57600080fd5b505afa15801561155e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611582919061192b565b905060008114156115be576115bd60e07f3063399a941c05ce22d13fd57602454754f6d8abe90ee3c00f606e9ac0f6903060001c901c611632565b5b6115c9823383611685565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fed679328aebf74ede77ae09efcf36e90244f83643dadac1c2d9f0b21a46f6ab7836040516116269190611ac2565b60405180910390a35050565b806000526004601cfd5b600080600080600085875af19050806116805761167f60e07fe4f6d9d1d059252012dcd138cde31a872a7c68436c998d27472602b29be8b21360001c901c611632565b5b505050565b60006040517fa9059cbb000000000000000000000000000000000000000000000000000000008152836004820152826024820152602060006044836000895af13d15601f3d116001600051141617169150508061170d5761170c60e07fe4f6d9d1d059252012dcd138cde31a872a7c68436c998d27472602b29be8b21360001c901c611632565b5b50505050565b60008135905061172281611c4b565b92915050565b60008151905061173781611c4b565b92915050565b60008135905061174c81611c62565b92915050565b60008135905061176181611c79565b92915050565b60008135905061177681611c90565b92915050565b60008151905061178b81611c90565b92915050565b6000602082840312156117a7576117a6611c46565b5b60006117b584828501611713565b91505092915050565b6000602082840312156117d4576117d3611c46565b5b60006117e284828501611728565b91505092915050565b6000806040838503121561180257611801611c46565b5b600061181085828601611713565b925050602061182185828601611713565b9150509250929050565b6000806040838503121561184257611841611c46565b5b600061185085828601611713565b92505060206118618582860161173d565b9150509250929050565b6000806040838503121561188257611881611c46565b5b600061189085828601611713565b92505060206118a185828601611767565b9150509250929050565b6000806000606084860312156118c4576118c3611c46565b5b60006118d286828701611752565b93505060206118e386828701611713565b92505060406118f486828701611767565b9150509250925092565b60006020828403121561191457611913611c46565b5b600061192284828501611767565b91505092915050565b60006020828403121561194157611940611c46565b5b600061194f8482850161177c565b91505092915050565b60006119648383611970565b60208301905092915050565b61197981611b16565b82525050565b61198881611b16565b82525050565b600061199982611aed565b6119a38185611b05565b93506119ae83611add565b8060005b838110156119df5781516119c68882611958565b97506119d183611af8565b9250506001810190506119b2565b5085935050505092915050565b6119f581611b28565b82525050565b611a0481611b66565b82525050565b6000602082019050611a1f600083018461197f565b92915050565b6000604082019050611a3a600083018561197f565b8181036020830152611a4c818461198e565b90509392505050565b6000604082019050611a6a600083018561197f565b611a7760208301846119fb565b9392505050565b6000602082019050611a9360008301846119ec565b92915050565b6000604082019050611aae60008301856119ec565b611abb602083018461197f565b9392505050565b6000602082019050611ad760008301846119fb565b92915050565b6000819050602082019050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b6000611b2182611b46565b9050919050565b60008115159050919050565b6000611b3f82611b16565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611b7b82611b66565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611bae57611bad611bb9565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b611c5481611b16565b8114611c5f57600080fd5b50565b611c6b81611b28565b8114611c7657600080fd5b50565b611c8281611b34565b8114611c8d57600080fd5b50565b611c9981611b66565b8114611ca457600080fd5b5056fea26469706673582212203c41c7917e1d7e3e5166734fc7cd07c728927191bfb6192adf3495cca04f97d264736f6c63430008060033

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

000000000000000000000000ca007bdcdbead582915cd68b521c7d6fc9359cf7

-----Decoded View---------------
Arg [0] : _owner (address): 0xcA007bdcDBeAd582915cd68B521c7D6Fc9359cf7

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000ca007bdcdbead582915cd68b521c7d6fc9359cf7


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
0xeB34aC1D25E4840c9D8998a0B341eC99E484b019
Net Worth in USD
$6,713,343.19

Net Worth in ETH
2,398.102791

Token Allocations
USDC 19.32%
APOLUSDT 18.52%
AARBWETH 11.98%
Others 50.18%
Chain Token Portfolio % Price Amount Value
ARB11.98%$2,803.23286.8112$803,997.84
ARB4.89%$0.999699328,232.8549$328,134.06
ARB4.09%$0.99805275,076.8603$274,540.46
ARB1.33%$0.158133565,509.5057$89,425.71
ARB0.85%$2,801.520.4773$57,367.05
ARB0.60%$0.0083484,844,976.4299$40,444.12
ARB0.09%$1.913,316.496$6,334.51
ARB0.08%$0.0027412,000,000$5,481.05
ARB0.02%$11.1104.47$1,159.62
ARB0.02%$11.1299.0713$1,101.67
ARB0.02%$0.0093,744.863$0.00
AVAX7.95%$2,804.5190.3206$533,754.04
AVAX6.75%$11.0640,959.9993$452,836.79
AVAX5.19%$84,2684.1314$348,142.4
AVAX1.35%$0.0090,736.7575$0.00
AVAX1.04%$0.99839870,000.0002$69,887.86
AVAX0.85%$0.99970757,116.1047$57,099.36
AVAX0.74%$2,803.2317.6885$49,584.85
POL18.52%$0.9983981,245,602.8485$1,243,607.39
POL1.57%$2,811.1537.4519$105,282.93
POL1.40%$0.99964693,705.8621$93,672.69
POL1.01%$0.99805368,054.1378$67,921.64
POL0.83%$0.9996455,871.6941$55,851.58
POL0.28%$0.112692167,607.4146$18,888.03
POL0.07%$2,803.231.6727$4,688.94
POL0.06%$11.11382.2021$4,246.27
POL0.04%$11.12259.2719$2,883.1
POL<0.01%$0.999643.0155$3.01
POL<0.01%$11.020.01$0.1102
MONAD3.90%$0.999635261,800.3572$261,704.8
MONAD3.88%$0.997636260,964.7792$260,347.86
MONAD0.41%$0.0201981,351,285.9285$27,293.89
MONAD0.03%$2,801.180.7818$2,190.01
LINEA4.79%$0.999635321,618.2238$321,500.83
LINEA1.23%$2,800.1529.6072$82,904.58
LINEA0.93%$0.99848462,272.6273$62,178.22
LINEA0.79%$0.009,282,750.6885$0.00
SEI3.44%$0.9999231,197.6645$231,174.48
SEI3.37%$0.998769226,278.0407$225,999.49
SEI0.04%$0.09934127,713.3915$2,753.08
SEI<0.01%$2,809.480.0596$167.33
HYPEREVM1.77%$2,812.3342.2174$118,729.24
HYPEREVM1.72%$84,3401.3723$115,741.84
HYPEREVM1.22%$30.172,704.6399$81,598.99
HYPEREVM0.58%$0.99876938,886.4352$38,838.57
KATANA0.13%$2,801.013.0629$8,579.15
KATANA0.06%$0.9985113,715.8947$3,710.36
KATANA0.04%$0.9982542,944.4289$2,939.29
SONIC0.06%$0.9997033,749$3,747.89
SONIC<0.01%$0.0613822,948$180.95
BASE<0.01%$0.4295597.3275$3.15
BASE<0.01%$0.000001741,000$0.7854
BASE<0.01%$0.00123.0655$0.00
BSC<0.01%$0.9997072$2
BSC<0.01%$1.80.1285$0.2316
BSC<0.01%$11.120.00960409$0.1067
OP<0.01%$0.9996390.9462$0.9458
ETH<0.01%<$0.0000011,000,000$0.2775
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.