Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Latest 9 from a total of 9 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer Ownersh... | 23782490 | 78 days ago | IN | 0 ETH | 0.00005708 | ||||
| Toggle Strategy | 23782488 | 78 days ago | IN | 0 ETH | 0.00009751 | ||||
| Toggle Strategy | 23782481 | 78 days ago | IN | 0 ETH | 0.00005175 | ||||
| Sweep All ERC20 | 23782477 | 78 days ago | IN | 0 ETH | 0.00011597 | ||||
| Sweep All Native | 23782474 | 78 days ago | IN | 0 ETH | 0.00006752 | ||||
| Toggle Strategy | 23782472 | 78 days ago | IN | 0 ETH | 0.00009738 | ||||
| Transfer | 23782454 | 78 days ago | IN | 0.005 ETH | 0.00004418 | ||||
| Toggle Delegate | 23782445 | 78 days ago | IN | 0 ETH | 0.0000981 | ||||
| Transfer | 23151324 | 166 days ago | IN | 0.000001 ETH | 0.00001503 |
Latest 1 internal transaction
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 23782474 | 78 days ago | 0.005001 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
VaultManager
Compiler Version
v0.8.6+commit.11564f7e
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
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));
}
}{
"optimizer": {
"enabled": false,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"remappings": []
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
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"}]Contract Creation Code
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
Loading...
Loading
Loading...
Loading
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%
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ARB | 11.98% | $2,803.23 | 286.8112 | $803,997.84 | |
| ARB | 4.89% | $0.999699 | 328,232.8549 | $328,134.06 | |
| ARB | 4.09% | $0.99805 | 275,076.8603 | $274,540.46 | |
| ARB | 1.33% | $0.158133 | 565,509.5057 | $89,425.71 | |
| ARB | 0.85% | $2,801.5 | 20.4773 | $57,367.05 | |
| ARB | 0.60% | $0.008348 | 4,844,976.4299 | $40,444.12 | |
| ARB | 0.09% | $1.91 | 3,316.496 | $6,334.51 | |
| ARB | 0.08% | $0.002741 | 2,000,000 | $5,481.05 | |
| ARB | 0.02% | $11.1 | 104.47 | $1,159.62 | |
| ARB | 0.02% | $11.12 | 99.0713 | $1,101.67 | |
| ARB | 0.02% | $0.00 | 93,744.863 | $0.00 | |
| AVAX | 7.95% | $2,804.5 | 190.3206 | $533,754.04 | |
| AVAX | 6.75% | $11.06 | 40,959.9993 | $452,836.79 | |
| AVAX | 5.19% | $84,268 | 4.1314 | $348,142.4 | |
| AVAX | 1.35% | $0.00 | 90,736.7575 | $0.00 | |
| AVAX | 1.04% | $0.998398 | 70,000.0002 | $69,887.86 | |
| AVAX | 0.85% | $0.999707 | 57,116.1047 | $57,099.36 | |
| AVAX | 0.74% | $2,803.23 | 17.6885 | $49,584.85 | |
| POL | 18.52% | $0.998398 | 1,245,602.8485 | $1,243,607.39 | |
| POL | 1.57% | $2,811.15 | 37.4519 | $105,282.93 | |
| POL | 1.40% | $0.999646 | 93,705.8621 | $93,672.69 | |
| POL | 1.01% | $0.998053 | 68,054.1378 | $67,921.64 | |
| POL | 0.83% | $0.99964 | 55,871.6941 | $55,851.58 | |
| POL | 0.28% | $0.112692 | 167,607.4146 | $18,888.03 | |
| POL | 0.07% | $2,803.23 | 1.6727 | $4,688.94 | |
| POL | 0.06% | $11.11 | 382.2021 | $4,246.27 | |
| POL | 0.04% | $11.12 | 259.2719 | $2,883.1 | |
| POL | <0.01% | $0.99964 | 3.0155 | $3.01 | |
| POL | <0.01% | $11.02 | 0.01 | $0.1102 | |
| MONAD | 3.90% | $0.999635 | 261,800.3572 | $261,704.8 | |
| MONAD | 3.88% | $0.997636 | 260,964.7792 | $260,347.86 | |
| MONAD | 0.41% | $0.020198 | 1,351,285.9285 | $27,293.89 | |
| MONAD | 0.03% | $2,801.18 | 0.7818 | $2,190.01 | |
| LINEA | 4.79% | $0.999635 | 321,618.2238 | $321,500.83 | |
| LINEA | 1.23% | $2,800.15 | 29.6072 | $82,904.58 | |
| LINEA | 0.93% | $0.998484 | 62,272.6273 | $62,178.22 | |
| LINEA | 0.79% | $0.00 | 9,282,750.6885 | $0.00 | |
| SEI | 3.44% | $0.9999 | 231,197.6645 | $231,174.48 | |
| SEI | 3.37% | $0.998769 | 226,278.0407 | $225,999.49 | |
| SEI | 0.04% | $0.099341 | 27,713.3915 | $2,753.08 | |
| SEI | <0.01% | $2,809.48 | 0.0596 | $167.33 | |
| HYPEREVM | 1.77% | $2,812.33 | 42.2174 | $118,729.24 | |
| HYPEREVM | 1.72% | $84,340 | 1.3723 | $115,741.84 | |
| HYPEREVM | 1.22% | $30.17 | 2,704.6399 | $81,598.99 | |
| HYPEREVM | 0.58% | $0.998769 | 38,886.4352 | $38,838.57 | |
| KATANA | 0.13% | $2,801.01 | 3.0629 | $8,579.15 | |
| KATANA | 0.06% | $0.998511 | 3,715.8947 | $3,710.36 | |
| KATANA | 0.04% | $0.998254 | 2,944.4289 | $2,939.29 | |
| SONIC | 0.06% | $0.999703 | 3,749 | $3,747.89 | |
| SONIC | <0.01% | $0.061382 | 2,948 | $180.95 | |
| BASE | <0.01% | $0.429559 | 7.3275 | $3.15 | |
| BASE | <0.01% | $0.000001 | 741,000 | $0.7854 | |
| BASE | <0.01% | $0.00 | 123.0655 | $0.00 | |
| BSC | <0.01% | $0.999707 | 2 | $2 | |
| BSC | <0.01% | $1.8 | 0.1285 | $0.2316 | |
| BSC | <0.01% | $11.12 | 0.00960409 | $0.1067 | |
| OP | <0.01% | $0.999639 | 0.9462 | $0.9458 | |
| ETH | <0.01% | <$0.000001 | 1,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.