Overview
S Balance
0 S
S Value
-More Info
Private Name Tags
ContractCreator
Latest 1 from a total of 1 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Toggle Implement... | 517115 | 3 days ago | IN | 0 S | 0.00525921 |
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
516738 | 3 days ago | Contract Creation | 0 S |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Name:
VaultLiquidator
Compiler Version
v0.8.21+commit.d9974bed
Optimization Enabled:
Yes with 10000000 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.21; import { Owned } from "solmate/src/auth/Owned.sol"; import { SafeTransfer } from "../../libraries/safeTransfer.sol"; contract VaultLiquidator is Owned { address constant public ETH_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE; address constant public DEAD_ADDRESS = 0x000000000000000000000000000000000000dEaD; // @notice temporary implementation address set for fallback address private _implementation; // @notice whitelisted rebalancers mapping (address => bool) public rebalancer; // @notice whitelisted implementations mapping (address => bool) public implementation; error FluidVaultT1Liquidator__InvalidOperation(); error FluidVaultT1Liquidator__InvalidImplementation(); error FluidVaultT1Liquidator__InvalidFallback(); event ToggleRebalancer( address indexed rebalancer, bool indexed status ); event ToggleImplementation( address indexed implementation, bool indexed status ); event Withdraw( address indexed to, address indexed token, uint256 amount ); constructor ( address owner_, address[] memory rebalancers_, address[] memory implementations_ ) Owned(owner_) { require(owner_ != address(0), "Owner cannot be the zero address"); for (uint256 i = 0; i < rebalancers_.length; i++) { rebalancer[rebalancers_[i]] = true; emit ToggleRebalancer(rebalancers_[i], true); } for (uint256 i = 0; i < implementations_.length; i++) { implementation[implementations_[i]] = true; emit ToggleImplementation(implementations_[i], true); } _implementation = DEAD_ADDRESS; } modifier isRebalancer() { if (!rebalancer[msg.sender] && msg.sender != owner) { revert FluidVaultT1Liquidator__InvalidOperation(); } _; } modifier isImplementation(address implementation_) { if (!implementation[implementation_] || _implementation != DEAD_ADDRESS) { revert FluidVaultT1Liquidator__InvalidImplementation(); } _implementation = implementation_; _; _implementation = address(DEAD_ADDRESS); } function _spell(address target_, bytes memory data_) internal returns (bytes memory response_) { assembly { let succeeded := delegatecall(gas(), target_, add(data_, 0x20), mload(data_), 0, 0) let size := returndatasize() response_ := mload(0x40) mstore(0x40, add(response_, and(add(add(size, 0x20), 0x1f), not(0x1f)))) mstore(response_, size) returndatacopy(add(response_, 0x20), 0, size) if iszero(succeeded) { // throw if delegatecall failed returndatacopy(0x00, 0x00, size) revert(0x00, size) } } } function toggleRebalancer(address rebalancer_, bool status_) public onlyOwner { rebalancer[rebalancer_] = status_; emit ToggleRebalancer(rebalancer_, status_); } function toggleImplementation(address implementation_, bool status_) public onlyOwner { implementation[implementation_] = status_; emit ToggleImplementation(implementation_, status_); } function spell(address[] memory targets_, bytes[] memory calldatas_) public onlyOwner { for (uint256 i = 0; i < targets_.length; i++) { _spell(targets_[i], calldatas_[i]); } } function withdraw(address to_, address[] memory tokens_, uint256[] memory amounts_) public onlyOwner { for (uint i = 0; i < tokens_.length; i++) { if (tokens_[i] == ETH_ADDRESS) { SafeTransfer.safeTransferNative(payable(to_), amounts_[i]); } else { SafeTransfer.safeTransfer(tokens_[i], to_, amounts_[i]); } emit Withdraw(to_, tokens_[i], amounts_[i]); } } receive() payable external {} function execute(address implementation_, bytes memory data_) public isRebalancer() isImplementation(implementation_) { _spell(implementation_, data_); } fallback() external payable { if (_implementation != DEAD_ADDRESS) { bytes memory response_ = _spell(_implementation, msg.data); assembly { return(add(response_, 32), mload(response_)) } } else { revert FluidVaultT1Liquidator__InvalidFallback(); } } }
// SPDX-License-Identifier: BUSL-1.1 pragma solidity 0.8.21; library LibsErrorTypes { /***********************************| | LiquidityCalcs | |__________________________________*/ /// @notice thrown when supply or borrow exchange price is zero at calc token data (token not configured yet) uint256 internal constant LiquidityCalcs__ExchangePriceZero = 70001; /// @notice thrown when rate data is set to a version that is not implemented uint256 internal constant LiquidityCalcs__UnsupportedRateVersion = 70002; /// @notice thrown when the calculated borrow rate turns negative. This should never happen. uint256 internal constant LiquidityCalcs__BorrowRateNegative = 70003; /***********************************| | SafeTransfer | |__________________________________*/ /// @notice thrown when safe transfer from for an ERC20 fails uint256 internal constant SafeTransfer__TransferFromFailed = 71001; /// @notice thrown when safe transfer for an ERC20 fails uint256 internal constant SafeTransfer__TransferFailed = 71002; /***********************************| | SafeApprove | |__________________________________*/ /// @notice thrown when safe approve from for an ERC20 fails uint256 internal constant SafeApprove__ApproveFailed = 81001; }
// SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity 0.8.21; import { LibsErrorTypes as ErrorTypes } from "./errorTypes.sol"; /// @notice provides minimalistic methods for safe transfers, e.g. ERC20 safeTransferFrom library SafeTransfer { uint256 internal constant MAX_NATIVE_TRANSFER_GAS = 20000; // pass max. 20k gas for native transfers error FluidSafeTransferError(uint256 errorId_); /// @dev Transfer `amount_` of `token_` from `from_` to `to_`, spending the approval given by `from_` to the /// calling contract. If `token_` returns no value, non-reverting calls are assumed to be successful. /// Minimally modified from Solmate SafeTransferLib (address as input param for token, Custom Error): /// https://github.com/transmissions11/solmate/blob/50e15bb566f98b7174da9b0066126a4c3e75e0fd/src/utils/SafeTransferLib.sol#L31-L63 function safeTransferFrom(address 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), and(from_, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "from_" argument. mstore(add(freeMemoryPointer, 36), and(to_, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "to_" argument. mstore(add(freeMemoryPointer, 68), amount_) // Append the "amount_" argument. Masking not required as it's a full 32 byte type. 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 FluidSafeTransferError(ErrorTypes.SafeTransfer__TransferFromFailed); } } /// @dev Transfer `amount_` of `token_` to `to_`. /// If `token_` returns no value, non-reverting calls are assumed to be successful. /// Minimally modified from Solmate SafeTransferLib (address as input param for token, Custom Error): /// https://github.com/transmissions11/solmate/blob/50e15bb566f98b7174da9b0066126a4c3e75e0fd/src/utils/SafeTransferLib.sol#L65-L95 function safeTransfer(address 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), and(to_, 0xffffffffffffffffffffffffffffffffffffffff)) // Append and mask the "to_" argument. mstore(add(freeMemoryPointer, 36), amount_) // Append the "amount_" argument. Masking not required as it's a full 32 byte type. 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 FluidSafeTransferError(ErrorTypes.SafeTransfer__TransferFailed); } } /// @dev Transfer `amount_` of ` native token to `to_`. /// Minimally modified from Solmate SafeTransferLib (Custom Error): /// https://github.com/transmissions11/solmate/blob/50e15bb566f98b7174da9b0066126a4c3e75e0fd/src/utils/SafeTransferLib.sol#L15-L25 function safeTransferNative(address to_, uint256 amount_) internal { bool success_; /// @solidity memory-safe-assembly assembly { // Transfer the ETH and store if it succeeded or not. Pass limited gas success_ := call(MAX_NATIVE_TRANSFER_GAS, to_, amount_, 0, 0, 0, 0) } if (!success_) { revert FluidSafeTransferError(ErrorTypes.SafeTransfer__TransferFailed); } } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Simple single owner authorization mixin. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Owned.sol) abstract contract Owned { /*////////////////////////////////////////////////////////////// EVENTS //////////////////////////////////////////////////////////////*/ event OwnershipTransferred(address indexed user, address indexed newOwner); /*////////////////////////////////////////////////////////////// OWNERSHIP STORAGE //////////////////////////////////////////////////////////////*/ address public owner; modifier onlyOwner() virtual { require(msg.sender == owner, "UNAUTHORIZED"); _; } /*////////////////////////////////////////////////////////////// CONSTRUCTOR //////////////////////////////////////////////////////////////*/ constructor(address _owner) { owner = _owner; emit OwnershipTransferred(address(0), _owner); } /*////////////////////////////////////////////////////////////// OWNERSHIP LOGIC //////////////////////////////////////////////////////////////*/ function transferOwnership(address newOwner) public virtual onlyOwner { owner = newOwner; emit OwnershipTransferred(msg.sender, newOwner); } }
{ "optimizer": { "enabled": true, "runs": 10000000 }, "evmVersion": "paris", "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } }, "metadata": { "useLiteralContent": true }, "libraries": {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address[]","name":"rebalancers_","type":"address[]"},{"internalType":"address[]","name":"implementations_","type":"address[]"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"errorId_","type":"uint256"}],"name":"FluidSafeTransferError","type":"error"},{"inputs":[],"name":"FluidVaultT1Liquidator__InvalidFallback","type":"error"},{"inputs":[],"name":"FluidVaultT1Liquidator__InvalidImplementation","type":"error"},{"inputs":[],"name":"FluidVaultT1Liquidator__InvalidOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"ToggleImplementation","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"rebalancer","type":"address"},{"indexed":true,"internalType":"bool","name":"status","type":"bool"}],"name":"ToggleRebalancer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"DEAD_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ETH_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bytes","name":"data_","type":"bytes"}],"name":"execute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"implementation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rebalancer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"targets_","type":"address[]"},{"internalType":"bytes[]","name":"calldatas_","type":"bytes[]"}],"name":"spell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"implementation_","type":"address"},{"internalType":"bool","name":"status_","type":"bool"}],"name":"toggleImplementation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"rebalancer_","type":"address"},{"internalType":"bool","name":"status_","type":"bool"}],"name":"toggleRebalancer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to_","type":"address"},{"internalType":"address[]","name":"tokens_","type":"address[]"},{"internalType":"uint256[]","name":"amounts_","type":"uint256[]"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040523480156200001157600080fd5b50604051620014f4380380620014f483398101604081905262000034916200037c565b600080546001600160a01b0319166001600160a01b03851690811782556040518592907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600160a01b038316620000d85760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420626520746865207a65726f2061646472657373604482015260640160405180910390fd5b60005b8251811015620001aa57600160026000858481518110620001005762000100620003f9565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060011515838281518110620001585762000158620003f9565b60200260200101516001600160a01b03167fd74bdcde9b66b7d08a366a43b11a78f3c8307dfeeb0a7741005200bfedfe933f60405160405180910390a380620001a1816200040f565b915050620000db565b5060005b81518110156200027d57600160036000848481518110620001d357620001d3620003f9565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550600115158282815181106200022b576200022b620003f9565b60200260200101516001600160a01b03167ff8b5205933f2a0c22ab598fc1570a8405c8aec362af89ed1f8d4500d0e6b8f6c60405160405180910390a38062000274816200040f565b915050620001ae565b5050600180546001600160a01b03191661dead17905550620004379050565b80516001600160a01b0381168114620002b457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002e157600080fd5b815160206001600160401b0380831115620003005762000300620002b9565b8260051b604051601f19603f83011681018181108482111715620003285762000328620002b9565b6040529384528581018301938381019250878511156200034757600080fd5b83870191505b84821015620003715762000361826200029c565b835291830191908301906200034d565b979650505050505050565b6000806000606084860312156200039257600080fd5b6200039d846200029c565b60208501519093506001600160401b0380821115620003bb57600080fd5b620003c987838801620002cf565b93506040860151915080821115620003e057600080fd5b50620003ef86828701620002cf565b9150509250925092565b634e487b7160e01b600052603260045260246000fd5b6000600182016200043057634e487b7160e01b600052601160045260246000fd5b5060010190565b6110ad80620004476000396000f3fe6080604052600436106100c05760003560e01c806382bc4aaf11610074578063d9e10f451161004e578063d9e10f45146102f0578063edbd766814610310578063f2fde38b14610330576100c7565b806382bc4aaf1461027b5780638da5cb5b1461029b578063a734f06e146102c8576100c7565b80633f221521116100a55780633f221521146101cb5780634e6fd6c4146102105780636b8807181461024b576100c7565b80631cff79cd1461018b57806329e31bdd146101ab576100c7565b366100c757005b60015473ffffffffffffffffffffffffffffffffffffffff1661dead1461015757600061014d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061035092505050565b9050805160208201f35b6040517f8d0f4ce900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b34801561019757600080fd5b506101896101a6366004610d08565b610396565b3480156101b757600080fd5b506101896101c6366004610d56565b610509565b3480156101d757600080fd5b506101fb6101e6366004610d92565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561021c57600080fd5b5061022661dead81565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610207565b34801561025757600080fd5b506101fb610266366004610d92565b60036020526000908152604090205460ff1681565b34801561028757600080fd5b50610189610296366004610e4a565b61060e565b3480156102a757600080fd5b506000546102269073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102d457600080fd5b5061022673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b3480156102fc57600080fd5b5061018961030b366004610d56565b6106ef565b34801561031c57600080fd5b5061018961032b366004610f1f565b6107ef565b34801561033c57600080fd5b5061018961034b366004610d92565b6109f2565b6060600080835160208501865af43d6040519250601f19601f6020830101168301604052808352806000602085013e8161038e57806000803e806000fd5b505092915050565b3360009081526002602052604090205460ff161580156103ce575060005473ffffffffffffffffffffffffffffffffffffffff163314155b15610405576040517f74bf188c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902054829060ff161580610456575060015473ffffffffffffffffffffffffffffffffffffffff1661dead14155b1561048d576040517fc797928700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556104d78383610350565b5050600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915590519092917fd74bdcde9b66b7d08a366a43b11a78f3c8307dfeeb0a7741005200bfedfe933f91a35050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461068f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610586565b60005b82518110156106ea576106d78382815181106106b0576106b0610fe9565b60200260200101518383815181106106ca576106ca610fe9565b6020026020010151610350565b50806106e281611018565b915050610692565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610586565b73ffffffffffffffffffffffffffffffffffffffff821660008181526003602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915590519092917ff8b5205933f2a0c22ab598fc1570a8405c8aec362af89ed1f8d4500d0e6b8f6c91a35050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610586565b60005b82518110156109ec5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168382815181106108b9576108b9610fe9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610904576108ff848383815181106108f2576108f2610fe9565b6020026020010151610ae3565b610941565b61094183828151811061091957610919610fe9565b60200260200101518584848151811061093457610934610fe9565b6020026020010151610b2f565b82818151811061095357610953610fe9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8484815181106109bb576109bb610fe9565b60200260200101516040516109d291815260200190565b60405180910390a3806109e481611018565b915050610873565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610586565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60008060008060008587614e20f19050806106ea576040517fdee51a8a0000000000000000000000000000000000000000000000000000000081526201155a6004820152602401610586565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806109ec576040517fdee51a8a0000000000000000000000000000000000000000000000000000000081526201155a6004820152602401610586565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bf757600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610c7257610c72610bfc565b604052919050565b600082601f830112610c8b57600080fd5b813567ffffffffffffffff811115610ca557610ca5610bfc565b610cd660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610c2b565b818152846020838601011115610ceb57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215610d1b57600080fd5b610d2483610bd3565b9150602083013567ffffffffffffffff811115610d4057600080fd5b610d4c85828601610c7a565b9150509250929050565b60008060408385031215610d6957600080fd5b610d7283610bd3565b915060208301358015158114610d8757600080fd5b809150509250929050565b600060208284031215610da457600080fd5b610dad82610bd3565b9392505050565b600067ffffffffffffffff821115610dce57610dce610bfc565b5060051b60200190565b600082601f830112610de957600080fd5b81356020610dfe610df983610db4565b610c2b565b82815260059290921b84018101918181019086841115610e1d57600080fd5b8286015b84811015610e3f57610e3281610bd3565b8352918301918301610e21565b509695505050505050565b60008060408385031215610e5d57600080fd5b823567ffffffffffffffff80821115610e7557600080fd5b610e8186838701610dd8565b9350602091508185013581811115610e9857600080fd5b8501601f81018713610ea957600080fd5b8035610eb7610df982610db4565b81815260059190911b82018401908481019089831115610ed657600080fd5b8584015b83811015610f0e57803586811115610ef25760008081fd5b610f008c8983890101610c7a565b845250918601918601610eda565b508096505050505050509250929050565b600080600060608486031215610f3457600080fd5b610f3d84610bd3565b925060208085013567ffffffffffffffff80821115610f5b57600080fd5b610f6788838901610dd8565b94506040870135915080821115610f7d57600080fd5b508501601f81018713610f8f57600080fd5b8035610f9d610df982610db4565b81815260059190911b82018301908381019089831115610fbc57600080fd5b928401925b82841015610fda57833582529284019290840190610fc1565b80955050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611070577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212204a334bb73afa7fe1dcc66c7b1765fb124793c3c5b654213d15d483fc45f5737164736f6c634300081500330000000000000000000000009800020b610194dba52cf606e8aa142f9f256166000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000030000000000000000000000003be5c671b20649dca5d916b5698328d54bdaaf88000000000000000000000000b287f8a01a9538656c72fa6ae1ee0117a187be0c000000000000000000000000ab957b471b22d307ac5fbb3fccd4191433b2aa62000000000000000000000000000000000000000000000000000000000000000100000000000000000000000034f82537b836c970cc9b87abc40bb616c3adc975
Deployed Bytecode
0x6080604052600436106100c05760003560e01c806382bc4aaf11610074578063d9e10f451161004e578063d9e10f45146102f0578063edbd766814610310578063f2fde38b14610330576100c7565b806382bc4aaf1461027b5780638da5cb5b1461029b578063a734f06e146102c8576100c7565b80633f221521116100a55780633f221521146101cb5780634e6fd6c4146102105780636b8807181461024b576100c7565b80631cff79cd1461018b57806329e31bdd146101ab576100c7565b366100c757005b60015473ffffffffffffffffffffffffffffffffffffffff1661dead1461015757600061014d600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000368080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061035092505050565b9050805160208201f35b6040517f8d0f4ce900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b34801561019757600080fd5b506101896101a6366004610d08565b610396565b3480156101b757600080fd5b506101896101c6366004610d56565b610509565b3480156101d757600080fd5b506101fb6101e6366004610d92565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561021c57600080fd5b5061022661dead81565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610207565b34801561025757600080fd5b506101fb610266366004610d92565b60036020526000908152604090205460ff1681565b34801561028757600080fd5b50610189610296366004610e4a565b61060e565b3480156102a757600080fd5b506000546102269073ffffffffffffffffffffffffffffffffffffffff1681565b3480156102d457600080fd5b5061022673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b3480156102fc57600080fd5b5061018961030b366004610d56565b6106ef565b34801561031c57600080fd5b5061018961032b366004610f1f565b6107ef565b34801561033c57600080fd5b5061018961034b366004610d92565b6109f2565b6060600080835160208501865af43d6040519250601f19601f6020830101168301604052808352806000602085013e8161038e57806000803e806000fd5b505092915050565b3360009081526002602052604090205460ff161580156103ce575060005473ffffffffffffffffffffffffffffffffffffffff163314155b15610405576040517f74bf188c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216600090815260036020526040902054829060ff161580610456575060015473ffffffffffffffffffffffffffffffffffffffff1661dead14155b1561048d576040517fc797928700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556104d78383610350565b5050600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461058f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821660008181526002602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915590519092917fd74bdcde9b66b7d08a366a43b11a78f3c8307dfeeb0a7741005200bfedfe933f91a35050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461068f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610586565b60005b82518110156106ea576106d78382815181106106b0576106b0610fe9565b60200260200101518383815181106106ca576106ca610fe9565b6020026020010151610350565b50806106e281611018565b915050610692565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610770576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610586565b73ffffffffffffffffffffffffffffffffffffffff821660008181526003602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685151590811790915590519092917ff8b5205933f2a0c22ab598fc1570a8405c8aec362af89ed1f8d4500d0e6b8f6c91a35050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610586565b60005b82518110156109ec5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168382815181106108b9576108b9610fe9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1603610904576108ff848383815181106108f2576108f2610fe9565b6020026020010151610ae3565b610941565b61094183828151811061091957610919610fe9565b60200260200101518584848151811061093457610934610fe9565b6020026020010151610b2f565b82818151811061095357610953610fe9565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb8484815181106109bb576109bb610fe9565b60200260200101516040516109d291815260200190565b60405180910390a3806109e481611018565b915050610873565b50505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610586565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b60008060008060008587614e20f19050806106ea576040517fdee51a8a0000000000000000000000000000000000000000000000000000000081526201155a6004820152602401610586565b60006040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152826024820152602060006044836000895af13d15601f3d11600160005114161716915050806109ec576040517fdee51a8a0000000000000000000000000000000000000000000000000000000081526201155a6004820152602401610586565b803573ffffffffffffffffffffffffffffffffffffffff81168114610bf757600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610c7257610c72610bfc565b604052919050565b600082601f830112610c8b57600080fd5b813567ffffffffffffffff811115610ca557610ca5610bfc565b610cd660207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610c2b565b818152846020838601011115610ceb57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215610d1b57600080fd5b610d2483610bd3565b9150602083013567ffffffffffffffff811115610d4057600080fd5b610d4c85828601610c7a565b9150509250929050565b60008060408385031215610d6957600080fd5b610d7283610bd3565b915060208301358015158114610d8757600080fd5b809150509250929050565b600060208284031215610da457600080fd5b610dad82610bd3565b9392505050565b600067ffffffffffffffff821115610dce57610dce610bfc565b5060051b60200190565b600082601f830112610de957600080fd5b81356020610dfe610df983610db4565b610c2b565b82815260059290921b84018101918181019086841115610e1d57600080fd5b8286015b84811015610e3f57610e3281610bd3565b8352918301918301610e21565b509695505050505050565b60008060408385031215610e5d57600080fd5b823567ffffffffffffffff80821115610e7557600080fd5b610e8186838701610dd8565b9350602091508185013581811115610e9857600080fd5b8501601f81018713610ea957600080fd5b8035610eb7610df982610db4565b81815260059190911b82018401908481019089831115610ed657600080fd5b8584015b83811015610f0e57803586811115610ef25760008081fd5b610f008c8983890101610c7a565b845250918601918601610eda565b508096505050505050509250929050565b600080600060608486031215610f3457600080fd5b610f3d84610bd3565b925060208085013567ffffffffffffffff80821115610f5b57600080fd5b610f6788838901610dd8565b94506040870135915080821115610f7d57600080fd5b508501601f81018713610f8f57600080fd5b8035610f9d610df982610db4565b81815260059190911b82018301908381019089831115610fbc57600080fd5b928401925b82841015610fda57833582529284019290840190610fc1565b80955050505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611070577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212204a334bb73afa7fe1dcc66c7b1765fb124793c3c5b654213d15d483fc45f5737164736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009800020b610194dba52cf606e8aa142f9f256166000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000030000000000000000000000003be5c671b20649dca5d916b5698328d54bdaaf88000000000000000000000000b287f8a01a9538656c72fa6ae1ee0117a187be0c000000000000000000000000ab957b471b22d307ac5fbb3fccd4191433b2aa62000000000000000000000000000000000000000000000000000000000000000100000000000000000000000034f82537b836c970cc9b87abc40bb616c3adc975
-----Decoded View---------------
Arg [0] : owner_ (address): 0x9800020b610194dBa52CF606E8Aa142F9F256166
Arg [1] : rebalancers_ (address[]): 0x3BE5C671b20649DCA5D916b5698328D54BdAAf88,0xb287f8A01a9538656c72Fa6aE1EE0117A187Be0C,0xAb957B471b22d307AC5fbB3FCcD4191433B2AA62
Arg [2] : implementations_ (address[]): 0x34F82537b836c970Cc9B87AbC40bb616C3aDC975
-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000009800020b610194dba52cf606e8aa142f9f256166
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [4] : 0000000000000000000000003be5c671b20649dca5d916b5698328d54bdaaf88
Arg [5] : 000000000000000000000000b287f8a01a9538656c72fa6ae1ee0117a187be0c
Arg [6] : 000000000000000000000000ab957b471b22d307ac5fbb3fccd4191433b2aa62
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [8] : 00000000000000000000000034f82537b836c970cc9b87abc40bb616c3adc975
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
[ 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.