Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 85 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Set Harvester | 15030657 | 1361 days ago | IN | 0 ETH | 0.0017038 | ||||
| Earn | 14847673 | 1393 days ago | IN | 0 ETH | 0.03300741 | ||||
| Harvest | 14703114 | 1416 days ago | IN | 0 ETH | 0.10087879 | ||||
| Harvest | 14703098 | 1416 days ago | IN | 0 ETH | 0.0889198 | ||||
| Harvest | 14703092 | 1416 days ago | IN | 0 ETH | 0.08992536 | ||||
| Harvest | 14703090 | 1416 days ago | IN | 0 ETH | 0.07600198 | ||||
| Harvest | 14703076 | 1416 days ago | IN | 0 ETH | 0.06406544 | ||||
| Harvest | 14703002 | 1416 days ago | IN | 0 ETH | 0.09617069 | ||||
| Earn | 14551681 | 1440 days ago | IN | 0 ETH | 0.01756207 | ||||
| Earn | 14551678 | 1440 days ago | IN | 0 ETH | 0.01633796 | ||||
| Earn | 14551671 | 1440 days ago | IN | 0 ETH | 0.01520901 | ||||
| Earn | 14551666 | 1440 days ago | IN | 0 ETH | 0.01748743 | ||||
| Earn | 14551659 | 1440 days ago | IN | 0 ETH | 0.02132277 | ||||
| Earn | 14551658 | 1440 days ago | IN | 0 ETH | 0.01931586 | ||||
| Harvest | 14551522 | 1440 days ago | IN | 0 ETH | 0.02646156 | ||||
| Harvest | 14551511 | 1440 days ago | IN | 0 ETH | 0.02934191 | ||||
| Harvest | 14551443 | 1440 days ago | IN | 0 ETH | 0.05768303 | ||||
| Harvest | 14551424 | 1440 days ago | IN | 0 ETH | 0.04330828 | ||||
| Harvest | 14551401 | 1440 days ago | IN | 0 ETH | 0.0469804 | ||||
| Earn | 14551263 | 1440 days ago | IN | 0 ETH | 0.01450365 | ||||
| Harvest | 14450691 | 1456 days ago | IN | 0 ETH | 0.06799263 | ||||
| Harvest | 14450650 | 1456 days ago | IN | 0 ETH | 0.09268671 | ||||
| Harvest | 14450638 | 1456 days ago | IN | 0 ETH | 0.06145645 | ||||
| Harvest | 14450603 | 1456 days ago | IN | 0 ETH | 0.0865483 | ||||
| Harvest | 14450573 | 1456 days ago | IN | 0 ETH | 0.05904461 |
Advanced mode: Intended for advanced users or developers and will display all Internal Transactions including zero value transfers.
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
|||
|---|---|---|---|---|---|---|---|---|
| Strategist | 15030657 | 1361 days ago | 0 ETH | |||||
| Earn | 14847673 | 1393 days ago | 0 ETH | |||||
| Allowed Controll... | 14847530 | 1393 days ago | 0 ETH | |||||
| Add Strategy | 14847530 | 1393 days ago | 0 ETH | |||||
| Harvest Strategy | 14703114 | 1416 days ago | 0 ETH | |||||
| Harvest Strategy | 14703098 | 1416 days ago | 0 ETH | |||||
| Harvest Strategy | 14703092 | 1416 days ago | 0 ETH | |||||
| Harvest Strategy | 14703090 | 1416 days ago | 0 ETH | |||||
| Harvest Strategy | 14703076 | 1416 days ago | 0 ETH | |||||
| Harvest Strategy | 14703002 | 1416 days ago | 0 ETH | |||||
| Allowed Controll... | 14613214 | 1430 days ago | 0 ETH | |||||
| Remove Strategy | 14613214 | 1430 days ago | 0 ETH | |||||
| Allowed Controll... | 14613211 | 1430 days ago | 0 ETH | |||||
| Add Strategy | 14613211 | 1430 days ago | 0 ETH | |||||
| Earn | 14551681 | 1440 days ago | 0 ETH | |||||
| Earn | 14551678 | 1440 days ago | 0 ETH | |||||
| Earn | 14551671 | 1440 days ago | 0 ETH | |||||
| Earn | 14551666 | 1440 days ago | 0 ETH | |||||
| Earn | 14551659 | 1440 days ago | 0 ETH | |||||
| Earn | 14551658 | 1440 days ago | 0 ETH | |||||
| Allowed Controll... | 14551600 | 1440 days ago | 0 ETH | |||||
| Remove Strategy | 14551600 | 1440 days ago | 0 ETH | |||||
| Allowed Controll... | 14551595 | 1440 days ago | 0 ETH | |||||
| Remove Strategy | 14551595 | 1440 days ago | 0 ETH | |||||
| Allowed Controll... | 14551591 | 1440 days ago | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Harvester
Compiler Version
v0.6.12+commit.27d51765
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import "@openzeppelin/contracts/math/SafeMath.sol";
import "./interfaces/IVault.sol";
import "./interfaces/IController.sol";
import "./interfaces/IHarvester.sol";
import "./interfaces/ILegacyController.sol";
import "./interfaces/IManager.sol";
import "./interfaces/IStrategy.sol";
import "./interfaces/ISwap.sol";
/**
* @title Harvester
* @notice This contract is to be used as a central point to call
* harvest on all strategies for any given vault. It has its own
* permissions for harvesters (set by the strategist or governance).
*/
contract Harvester is IHarvester {
using SafeMath for uint256;
uint256 public constant ONE_HUNDRED_PERCENT = 10000;
IManager public immutable override manager;
IController public immutable controller;
ILegacyController public immutable legacyController;
uint256 public override slippage;
struct Strategy {
uint256 timeout;
uint256 lastCalled;
address[] addresses;
}
mapping(address => Strategy) public strategies;
mapping(address => bool) public isHarvester;
/**
* @notice Logged when harvest is called for a strategy
*/
event Harvest(
address indexed controller,
address indexed strategy
);
/**
* @notice Logged when a harvester is set
*/
event HarvesterSet(address indexed harvester, bool status);
/**
* @notice Logged when a strategy is added for a vault
*/
event StrategyAdded(address indexed vault, address indexed strategy, uint256 timeout);
/**
* @notice Logged when a strategy is removed for a vault
*/
event StrategyRemoved(address indexed vault, address indexed strategy, uint256 timeout);
/**
* @param _manager The address of the yAxisMetaVaultManager contract
* @param _controller The address of the controller
*/
constructor(
address _manager,
address _controller,
address _legacyController
)
public
{
manager = IManager(_manager);
controller = IController(_controller);
legacyController = ILegacyController(_legacyController);
}
/**
* (GOVERNANCE|STRATEGIST)-ONLY FUNCTIONS
*/
/**
* @notice Adds a strategy to the rotation for a given vault and sets a timeout
* @param _vault The address of the vault
* @param _strategy The address of the strategy
* @param _timeout The timeout between harvests
*/
function addStrategy(
address _vault,
address _strategy,
uint256 _timeout
)
external
override
onlyController
{
strategies[_vault].addresses.push(_strategy);
strategies[_vault].timeout = _timeout;
emit StrategyAdded(_vault, _strategy, _timeout);
}
/**
* @notice Removes a strategy from the rotation for a given vault and sets a timeout
* @param _vault The address of the vault
* @param _strategy The address of the strategy
* @param _timeout The timeout between harvests
*/
function removeStrategy(
address _vault,
address _strategy,
uint256 _timeout
)
external
override
onlyController
{
uint256 tail = strategies[_vault].addresses.length;
uint256 index;
bool found;
for (uint i; i < tail; i++) {
if (strategies[_vault].addresses[i] == _strategy) {
index = i;
found = true;
break;
}
}
if (found) {
strategies[_vault].addresses[index] = strategies[_vault].addresses[tail.sub(1)];
strategies[_vault].addresses.pop();
strategies[_vault].timeout = _timeout;
emit StrategyRemoved(_vault, _strategy, _timeout);
}
}
/**
* @notice Sets the status of a harvester address to be able to call harvest functions
* @param _harvester The address of the harvester
* @param _status The status to allow the harvester to harvest
*/
function setHarvester(
address _harvester,
bool _status
)
external
onlyStrategist
{
isHarvester[_harvester] = _status;
emit HarvesterSet(_harvester, _status);
}
function setSlippage(
uint256 _slippage
)
external
onlyStrategist
{
require(_slippage < ONE_HUNDRED_PERCENT, "!_slippage");
slippage = _slippage;
}
/**
* HARVESTER-ONLY FUNCTIONS
*/
function earn(
address _strategy,
address _vault
)
external
onlyHarvester
{
IVault(_vault).earn(_strategy);
}
/**
* @notice Harvests a given strategy on the provided controller
* @dev This function ignores the timeout
* @param _controller The address of the controller
* @param _strategy The address of the strategy
* @param _estimates The estimated outputs from swaps during harvest
*/
function harvest(
IController _controller,
address _strategy,
uint256[] calldata _estimates
)
public
onlyHarvester
{
_controller.harvestStrategy(_strategy, _estimates);
emit Harvest(address(_controller), _strategy);
}
/**
* @notice Harvests the next available strategy for a given vault and
* rotates the strategies
* @param _vault The address of the vault
* @param _estimates The estimated outputs from swaps during harvest
*/
function harvestNextStrategy(
address _vault,
uint256[] calldata _estimates
)
external
{
require(canHarvest(_vault), "!canHarvest");
address strategy = strategies[_vault].addresses[0];
harvest(controller, strategy, _estimates);
uint256 k = strategies[_vault].addresses.length;
if (k > 1) {
address[] memory _strategies = new address[](k);
for (uint i; i < k-1; i++) {
_strategies[i] = strategies[_vault].addresses[i+1];
}
_strategies[k-1] = strategy;
strategies[_vault].addresses = _strategies;
}
// solhint-disable-next-line not-rely-on-time
strategies[_vault].lastCalled = block.timestamp;
}
/**
* @notice Earns tokens in the LegacyController to the v3 vault
* @param _expected The expected amount to deposit after conversion
*/
function legacyEarn(
uint256 _expected
)
external
onlyHarvester
{
legacyController.legacyDeposit(_expected);
}
/**
* EXTERNAL VIEW FUNCTIONS
*/
/**
* @notice Returns the addresses of the strategies for a given vault
* @param _vault The address of the vault
*/
function strategyAddresses(
address _vault
)
external
view
returns (address[] memory)
{
return strategies[_vault].addresses;
}
/**
* PUBLIC VIEW FUNCTIONS
*/
/**
* @notice Returns the availability of a vault's strategy to be harvested
* @param _vault The address of the vault
*/
function canHarvest(
address _vault
)
public
view
returns (bool)
{
Strategy storage strategy = strategies[_vault];
// only can harvest if there are strategies, and when sufficient time has elapsed
// solhint-disable-next-line not-rely-on-time
return (strategy.addresses.length > 0 && strategy.lastCalled <= block.timestamp.sub(strategy.timeout));
}
/**
* @notice Returns the estimated amount of WETH and YAXIS for the given strategy
* @param _strategy The address of the strategy
*/
function getEstimates(
address _strategy
)
public
view
returns (uint256[] memory _estimates)
{
_estimates = IStrategyExtended(_strategy).getEstimates();
}
/**
* MODIFIERS
*/
modifier onlyController() {
require(manager.allowedControllers(msg.sender), "!controller");
_;
}
modifier onlyHarvester() {
require(isHarvester[msg.sender], "!harvester");
_;
}
modifier onlyStrategist() {
require(msg.sender == manager.strategist(), "!strategist");
_;
}
}// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.8.0;
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
*
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
*
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
*
* - Multiplication cannot overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
*
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import "./IManager.sol";
interface IVault {
function available() external view returns (uint256);
function balance() external view returns (uint256);
function deposit(uint256 _amount) external returns (uint256);
function earn(address _strategy) external;
function gauge() external returns (address);
function getLPToken() external view returns (address);
function getPricePerFullShare() external view returns (uint256);
function getToken() external view returns (address);
function manager() external view returns (IManager);
function withdraw(uint256 _amount) external;
function withdrawAll() external;
function withdrawFee(uint256 _amount) external view returns (uint256);
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import "./IManager.sol";
interface IController {
function balanceOf() external view returns (uint256);
function converter(address _vault) external view returns (address);
function earn(address _strategy, address _token, uint256 _amount) external;
function investEnabled() external view returns (bool);
function harvestStrategy(address _strategy, uint256[] calldata _estimates) external;
function manager() external view returns (IManager);
function strategies() external view returns (uint256);
function withdraw(address _token, uint256 _amount) external;
function withdrawAll(address _strategy, address _convert) external;
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import "./IManager.sol";
interface IHarvester {
function addStrategy(address, address, uint256) external;
function manager() external view returns (IManager);
function removeStrategy(address, address, uint256) external;
function slippage() external view returns (uint256);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.6.0;
interface ILegacyController {
function legacyDeposit(uint256 _expected) external;
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
interface IManager {
function addVault(address) external;
function allowedControllers(address) external view returns (bool);
function allowedConverters(address) external view returns (bool);
function allowedStrategies(address) external view returns (bool);
function allowedVaults(address) external view returns (bool);
function controllers(address) external view returns (address);
function getHarvestFeeInfo() external view returns (address, address, uint256);
function getToken(address) external view returns (address);
function governance() external view returns (address);
function halted() external view returns (bool);
function harvester() external view returns (address);
function insuranceFee() external view returns (uint256);
function insurancePool() external view returns (address);
function insurancePoolFee() external view returns (uint256);
function pendingStrategist() external view returns (address);
function removeVault(address) external;
function stakingPool() external view returns (address);
function stakingPoolShareFee() external view returns (uint256);
function strategist() external view returns (address);
function treasury() external view returns (address);
function treasuryFee() external view returns (uint256);
function withdrawalProtectionFee() external view returns (uint256);
function yaxis() external view returns (address);
}// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;
import "./IManager.sol";
import "./ISwap.sol";
interface IStrategy {
function balanceOf() external view returns (uint256);
function balanceOfPool() external view returns (uint256);
function balanceOfWant() external view returns (uint256);
function deposit() external;
function harvest(uint256[] calldata) external;
function manager() external view returns (IManager);
function name() external view returns (string memory);
function router() external view returns (ISwap);
function skim() external;
function want() external view returns (address);
function weth() external view returns (address);
function withdraw(address) external;
function withdraw(uint256) external;
function withdrawAll() external;
}
interface IStrategyExtended {
function getEstimates() external view returns (uint256[] memory);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.6.2;
interface ISwap {
function swapExactTokensForTokens(uint256, uint256, address[] calldata, address, uint256) external;
function getAmountsOut(uint256, address[] calldata) external view returns (uint256[] memory);
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_manager","type":"address"},{"internalType":"address","name":"_controller","type":"address"},{"internalType":"address","name":"_legacyController","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"controller","type":"address"},{"indexed":true,"internalType":"address","name":"strategy","type":"address"}],"name":"Harvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"harvester","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"HarvesterSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vault","type":"address"},{"indexed":true,"internalType":"address","name":"strategy","type":"address"},{"indexed":false,"internalType":"uint256","name":"timeout","type":"uint256"}],"name":"StrategyAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"vault","type":"address"},{"indexed":true,"internalType":"address","name":"strategy","type":"address"},{"indexed":false,"internalType":"uint256","name":"timeout","type":"uint256"}],"name":"StrategyRemoved","type":"event"},{"inputs":[],"name":"ONE_HUNDRED_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"uint256","name":"_timeout","type":"uint256"}],"name":"addStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"canHarvest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"controller","outputs":[{"internalType":"contract IController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"address","name":"_vault","type":"address"}],"name":"earn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_strategy","type":"address"}],"name":"getEstimates","outputs":[{"internalType":"uint256[]","name":"_estimates","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IController","name":"_controller","type":"address"},{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"uint256[]","name":"_estimates","type":"uint256[]"}],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"uint256[]","name":"_estimates","type":"uint256[]"}],"name":"harvestNextStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHarvester","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"legacyController","outputs":[{"internalType":"contract ILegacyController","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_expected","type":"uint256"}],"name":"legacyEarn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"contract IManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"address","name":"_strategy","type":"address"},{"internalType":"uint256","name":"_timeout","type":"uint256"}],"name":"removeStrategy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_harvester","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setHarvester","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_slippage","type":"uint256"}],"name":"setSlippage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"slippage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"strategies","outputs":[{"internalType":"uint256","name":"timeout","type":"uint256"},{"internalType":"uint256","name":"lastCalled","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"strategyAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60e060405234801561001057600080fd5b5060405161145f38038061145f8339818101604052606081101561003357600080fd5b50805160208201516040909201516001600160601b0319606092831b811660805292821b831660a052901b1660c05260805160601c60a05160601c60c05160601c6113aa6100b5600039806104bb5280611020525080610e3552806111b85250806104df528061075a528061079c52806108ee52806110a152506113aa6000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80639af409dd116100a2578063eeabd79f11610071578063eeabd79f146103d1578063ef73bb5714610451578063f0fa55a91461046e578063f77c47911461048b578063fb70261a1461049357610116565b80639af409dd146102f3578063a71bbfd514610369578063b6dcbde7146103a3578063dd0081c7146103c957610116565b8063461c420a116100e9578063461c420a146101c8578063481c6a75146102515780634b704acd146102595780636bb3722e1461028f5780636bc9a5a9146102c557610116565b8063039f28c21461011b57806331b710571461013f57806339ebf8231461016f5780633e032a3b146101ae575b600080fd5b6101236104b9565b604080516001600160a01b039092168252519081900360200190f35b61016d6004803603604081101561015557600080fd5b506001600160a01b03813516906020013515156104dd565b005b6101956004803603602081101561018557600080fd5b50356001600160a01b031661060c565b6040805192835260208301919091528051918290030190f35b6101b6610625565b60408051918252519081900360200190f35b61016d600480360360608110156101de57600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561021257600080fd5b82018360208201111561022457600080fd5b8035906020019184602083028401116401000000008311171561024657600080fd5b50909250905061062b565b610123610758565b61016d6004803603606081101561026f57600080fd5b506001600160a01b0381358116916020810135909116906040013561077c565b61016d600480360360608110156102a557600080fd5b506001600160a01b038135811691602081013590911690604001356108ce565b61016d600480360360408110156102db57600080fd5b506001600160a01b0381358116916020013516610b59565b6103196004803603602081101561030957600080fd5b50356001600160a01b0316610c0d565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561035557818101518382015260200161033d565b505050509050019250505060405180910390f35b61038f6004803603602081101561037f57600080fd5b50356001600160a01b0316610c86565b604080519115158252519081900360200190f35b610319600480360360208110156103b957600080fd5b50356001600160a01b0316610c9b565b6101b6610da6565b61016d600480360360408110156103e757600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561041257600080fd5b82018360208201111561042457600080fd5b8035906020019184602083028401116401000000008311171561044657600080fd5b509092509050610dac565b61016d6004803603602081101561046757600080fd5b5035610fcd565b61016d6004803603602081101561048457600080fd5b503561109f565b6101236111b6565b61038f600480360360208110156104a957600080fd5b50356001600160a01b03166111da565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631fe4a6866040518163ffffffff1660e01b815260040160206040518083038186803b15801561053657600080fd5b505afa15801561054a573d6000803e3d6000fd5b505050506040513d602081101561056057600080fd5b50516001600160a01b031633146105ac576040805162461bcd60e51b815260206004820152600b60248201526a085cdd1c985d1959da5cdd60aa1b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020805460ff1916851515908117909155825190815291517f0dd4aeebdb71d8f88640d3361815b0e64e31aaf0ee73ad7f5a421115fac879ae9281900390910190a25050565b6001602081905260009182526040909120805491015482565b60005481565b3360009081526002602052604090205460ff1661067c576040805162461bcd60e51b815260206004820152600a60248201526910b430b93b32b9ba32b960b11b604482015290519081900360640190fd5b836001600160a01b031663423344838484846040518463ffffffff1660e01b815260040180846001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b15801561070257600080fd5b505af1158015610716573d6000803e3d6000fd5b50506040516001600160a01b038087169350871691507ffdfdf879d9abdea70f1d228c39cf14f5e7179a54f36b378f29bccfe7648f333e90600090a350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60408051633577910560e11b815233600482015290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636aef220a916024808301926020929190829003018186803b1580156107e257600080fd5b505afa1580156107f6573d6000803e3d6000fd5b505050506040513d602081101561080c57600080fd5b505161084d576040805162461bcd60e51b815260206004820152600b60248201526a10b1b7b73a3937b63632b960a91b604482015290519081900360640190fd5b6001600160a01b0383811660008181526001602081815260408084206002810180549485018155855282852090930180546001600160a01b03191696891696871790559284905290859055815185815291517fc2008aa15e9b0989ec7ae02bc3d8054428c527c989269ffb2a5bff829028a0129281900390910190a3505050565b60408051633577910560e11b815233600482015290516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691636aef220a916024808301926020929190829003018186803b15801561093457600080fd5b505afa158015610948573d6000803e3d6000fd5b505050506040513d602081101561095e57600080fd5b505161099f576040805162461bcd60e51b815260206004820152600b60248201526a10b1b7b73a3937b63632b960a91b604482015290519081900360640190fd5b6001600160a01b0383166000908152600160205260408120600201549080805b83811015610a22576001600160a01b038781166000908152600160205260409020600201805491881691839081106109f357fe5b6000918252602090912001546001600160a01b03161415610a1a5780925060019150610a22565b6001016109bf565b508015610b51576001600160a01b038616600090815260016020819052604090912060020190610a5390859061121c565b81548110610a5d57fe5b60009182526020808320909101546001600160a01b03898116845260019092526040909220600201805491909216919084908110610a9757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559188168152600190915260409020600201805480610ad957fe5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388811680845260018352604093849020889055835188815293519189169390927fdd3e131c7baafda30070fc3f53c5153570a3e6552809d20e2b682dd30fa7cc6e92918290030190a35b505050505050565b3360009081526002602052604090205460ff16610baa576040805162461bcd60e51b815260206004820152600a60248201526910b430b93b32b9ba32b960b11b604482015290519081900360640190fd5b806001600160a01b031663fdb5fefc836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015610bf957600080fd5b505af1158015610b51573d6000803e3d6000fd5b6001600160a01b038116600090815260016020908152604091829020600201805483518184028101840190945280845260609392830182828015610c7a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c5c575b50505050509050919050565b60026020526000908152604090205460ff1681565b6060816001600160a01b031663185881ec6040518163ffffffff1660e01b815260040160006040518083038186803b158015610cd657600080fd5b505afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610d1357600080fd5b8101908080516040519392919084640100000000821115610d3357600080fd5b908301906020820185811115610d4857600080fd5b8251866020820283011164010000000082111715610d6557600080fd5b82525081516020918201928201910280838360005b83811015610d92578181015183820152602001610d7a565b505050509050016040525050509050919050565b61271081565b610db5836111da565b610df4576040805162461bcd60e51b815260206004820152600b60248201526a0858d85b92185c9d995cdd60aa1b604482015290519081900360640190fd5b6001600160a01b038316600090815260016020526040812060020180548290610e1957fe5b6000918252602090912001546001600160a01b03169050610e5c7f000000000000000000000000000000000000000000000000000000000000000082858561062b565b6001600160a01b03841660009081526001602081905260409091206002015490811115610fa95760608167ffffffffffffffff81118015610e9c57600080fd5b50604051908082528060200260200182016040528015610ec6578160200160208202803683370190505b50905060005b60018303811015610f575760016000886001600160a01b03166001600160a01b031681526020019081526020016000206002018160010181548110610f0d57fe5b9060005260206000200160009054906101000a90046001600160a01b0316828281518110610f3757fe5b6001600160a01b0390921660209283029190910190910152600101610ecc565b5082816001840381518110610f6857fe5b6001600160a01b03928316602091820292909201810191909152908716600090815260018252604090208251610fa6926002909201918401906112f0565b50505b505050506001600160a01b0316600090815260016020819052604090912042910155565b3360009081526002602052604090205460ff1661101e576040805162461bcd60e51b815260206004820152600a60248201526910b430b93b32b9ba32b960b11b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632c4c95a1826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561108457600080fd5b505af1158015611098573d6000803e3d6000fd5b5050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316631fe4a6866040518163ffffffff1660e01b815260040160206040518083038186803b1580156110f857600080fd5b505afa15801561110c573d6000803e3d6000fd5b505050506040513d602081101561112257600080fd5b50516001600160a01b0316331461116e576040805162461bcd60e51b815260206004820152600b60248201526a085cdd1c985d1959da5cdd60aa1b604482015290519081900360640190fd5b61271081106111b1576040805162461bcd60e51b815260206004820152600a602482015269215f736c69707061676560b01b604482015290519081900360640190fd5b600055565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b03811660009081526001602052604081206002810154158015906112155750805461120d90429061121c565b816001015411155b9392505050565b600061121583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250600081848411156112e85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112ad578181015183820152602001611295565b50505050905090810190601f1680156112da5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b828054828255906000526020600020908101928215611345579160200282015b8281111561134557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611310565b50611351929150611355565b5090565b5b808211156113515780546001600160a01b031916815560010161135656fea26469706673582212202b8b4fb95fec2090a546aed7504aefcbc6c074349adf2a868b45cd37fb9e1c8964736f6c634300060c0033000000000000000000000000ab72cc293b63f6477baf9d514da735cf6caadc2d000000000000000000000000834ebce3b3fb5b9647d9398a1f6f44a2e831ac6000000000000000000000000084d40423e66c02689c2c90fbb28213dc06aa6f1a
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101165760003560e01c80639af409dd116100a2578063eeabd79f11610071578063eeabd79f146103d1578063ef73bb5714610451578063f0fa55a91461046e578063f77c47911461048b578063fb70261a1461049357610116565b80639af409dd146102f3578063a71bbfd514610369578063b6dcbde7146103a3578063dd0081c7146103c957610116565b8063461c420a116100e9578063461c420a146101c8578063481c6a75146102515780634b704acd146102595780636bb3722e1461028f5780636bc9a5a9146102c557610116565b8063039f28c21461011b57806331b710571461013f57806339ebf8231461016f5780633e032a3b146101ae575b600080fd5b6101236104b9565b604080516001600160a01b039092168252519081900360200190f35b61016d6004803603604081101561015557600080fd5b506001600160a01b03813516906020013515156104dd565b005b6101956004803603602081101561018557600080fd5b50356001600160a01b031661060c565b6040805192835260208301919091528051918290030190f35b6101b6610625565b60408051918252519081900360200190f35b61016d600480360360608110156101de57600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561021257600080fd5b82018360208201111561022457600080fd5b8035906020019184602083028401116401000000008311171561024657600080fd5b50909250905061062b565b610123610758565b61016d6004803603606081101561026f57600080fd5b506001600160a01b0381358116916020810135909116906040013561077c565b61016d600480360360608110156102a557600080fd5b506001600160a01b038135811691602081013590911690604001356108ce565b61016d600480360360408110156102db57600080fd5b506001600160a01b0381358116916020013516610b59565b6103196004803603602081101561030957600080fd5b50356001600160a01b0316610c0d565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561035557818101518382015260200161033d565b505050509050019250505060405180910390f35b61038f6004803603602081101561037f57600080fd5b50356001600160a01b0316610c86565b604080519115158252519081900360200190f35b610319600480360360208110156103b957600080fd5b50356001600160a01b0316610c9b565b6101b6610da6565b61016d600480360360408110156103e757600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561041257600080fd5b82018360208201111561042457600080fd5b8035906020019184602083028401116401000000008311171561044657600080fd5b509092509050610dac565b61016d6004803603602081101561046757600080fd5b5035610fcd565b61016d6004803603602081101561048457600080fd5b503561109f565b6101236111b6565b61038f600480360360208110156104a957600080fd5b50356001600160a01b03166111da565b7f00000000000000000000000084d40423e66c02689c2c90fbb28213dc06aa6f1a81565b7f000000000000000000000000ab72cc293b63f6477baf9d514da735cf6caadc2d6001600160a01b0316631fe4a6866040518163ffffffff1660e01b815260040160206040518083038186803b15801561053657600080fd5b505afa15801561054a573d6000803e3d6000fd5b505050506040513d602081101561056057600080fd5b50516001600160a01b031633146105ac576040805162461bcd60e51b815260206004820152600b60248201526a085cdd1c985d1959da5cdd60aa1b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020805460ff1916851515908117909155825190815291517f0dd4aeebdb71d8f88640d3361815b0e64e31aaf0ee73ad7f5a421115fac879ae9281900390910190a25050565b6001602081905260009182526040909120805491015482565b60005481565b3360009081526002602052604090205460ff1661067c576040805162461bcd60e51b815260206004820152600a60248201526910b430b93b32b9ba32b960b11b604482015290519081900360640190fd5b836001600160a01b031663423344838484846040518463ffffffff1660e01b815260040180846001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600081840152601f19601f820116905080830192505050945050505050600060405180830381600087803b15801561070257600080fd5b505af1158015610716573d6000803e3d6000fd5b50506040516001600160a01b038087169350871691507ffdfdf879d9abdea70f1d228c39cf14f5e7179a54f36b378f29bccfe7648f333e90600090a350505050565b7f000000000000000000000000ab72cc293b63f6477baf9d514da735cf6caadc2d81565b60408051633577910560e11b815233600482015290516001600160a01b037f000000000000000000000000ab72cc293b63f6477baf9d514da735cf6caadc2d1691636aef220a916024808301926020929190829003018186803b1580156107e257600080fd5b505afa1580156107f6573d6000803e3d6000fd5b505050506040513d602081101561080c57600080fd5b505161084d576040805162461bcd60e51b815260206004820152600b60248201526a10b1b7b73a3937b63632b960a91b604482015290519081900360640190fd5b6001600160a01b0383811660008181526001602081815260408084206002810180549485018155855282852090930180546001600160a01b03191696891696871790559284905290859055815185815291517fc2008aa15e9b0989ec7ae02bc3d8054428c527c989269ffb2a5bff829028a0129281900390910190a3505050565b60408051633577910560e11b815233600482015290516001600160a01b037f000000000000000000000000ab72cc293b63f6477baf9d514da735cf6caadc2d1691636aef220a916024808301926020929190829003018186803b15801561093457600080fd5b505afa158015610948573d6000803e3d6000fd5b505050506040513d602081101561095e57600080fd5b505161099f576040805162461bcd60e51b815260206004820152600b60248201526a10b1b7b73a3937b63632b960a91b604482015290519081900360640190fd5b6001600160a01b0383166000908152600160205260408120600201549080805b83811015610a22576001600160a01b038781166000908152600160205260409020600201805491881691839081106109f357fe5b6000918252602090912001546001600160a01b03161415610a1a5780925060019150610a22565b6001016109bf565b508015610b51576001600160a01b038616600090815260016020819052604090912060020190610a5390859061121c565b81548110610a5d57fe5b60009182526020808320909101546001600160a01b03898116845260019092526040909220600201805491909216919084908110610a9757fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559188168152600190915260409020600201805480610ad957fe5b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0388811680845260018352604093849020889055835188815293519189169390927fdd3e131c7baafda30070fc3f53c5153570a3e6552809d20e2b682dd30fa7cc6e92918290030190a35b505050505050565b3360009081526002602052604090205460ff16610baa576040805162461bcd60e51b815260206004820152600a60248201526910b430b93b32b9ba32b960b11b604482015290519081900360640190fd5b806001600160a01b031663fdb5fefc836040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b158015610bf957600080fd5b505af1158015610b51573d6000803e3d6000fd5b6001600160a01b038116600090815260016020908152604091829020600201805483518184028101840190945280845260609392830182828015610c7a57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610c5c575b50505050509050919050565b60026020526000908152604090205460ff1681565b6060816001600160a01b031663185881ec6040518163ffffffff1660e01b815260040160006040518083038186803b158015610cd657600080fd5b505afa158015610cea573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610d1357600080fd5b8101908080516040519392919084640100000000821115610d3357600080fd5b908301906020820185811115610d4857600080fd5b8251866020820283011164010000000082111715610d6557600080fd5b82525081516020918201928201910280838360005b83811015610d92578181015183820152602001610d7a565b505050509050016040525050509050919050565b61271081565b610db5836111da565b610df4576040805162461bcd60e51b815260206004820152600b60248201526a0858d85b92185c9d995cdd60aa1b604482015290519081900360640190fd5b6001600160a01b038316600090815260016020526040812060020180548290610e1957fe5b6000918252602090912001546001600160a01b03169050610e5c7f000000000000000000000000834ebce3b3fb5b9647d9398a1f6f44a2e831ac6082858561062b565b6001600160a01b03841660009081526001602081905260409091206002015490811115610fa95760608167ffffffffffffffff81118015610e9c57600080fd5b50604051908082528060200260200182016040528015610ec6578160200160208202803683370190505b50905060005b60018303811015610f575760016000886001600160a01b03166001600160a01b031681526020019081526020016000206002018160010181548110610f0d57fe5b9060005260206000200160009054906101000a90046001600160a01b0316828281518110610f3757fe5b6001600160a01b0390921660209283029190910190910152600101610ecc565b5082816001840381518110610f6857fe5b6001600160a01b03928316602091820292909201810191909152908716600090815260018252604090208251610fa6926002909201918401906112f0565b50505b505050506001600160a01b0316600090815260016020819052604090912042910155565b3360009081526002602052604090205460ff1661101e576040805162461bcd60e51b815260206004820152600a60248201526910b430b93b32b9ba32b960b11b604482015290519081900360640190fd5b7f00000000000000000000000084d40423e66c02689c2c90fbb28213dc06aa6f1a6001600160a01b0316632c4c95a1826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561108457600080fd5b505af1158015611098573d6000803e3d6000fd5b5050505050565b7f000000000000000000000000ab72cc293b63f6477baf9d514da735cf6caadc2d6001600160a01b0316631fe4a6866040518163ffffffff1660e01b815260040160206040518083038186803b1580156110f857600080fd5b505afa15801561110c573d6000803e3d6000fd5b505050506040513d602081101561112257600080fd5b50516001600160a01b0316331461116e576040805162461bcd60e51b815260206004820152600b60248201526a085cdd1c985d1959da5cdd60aa1b604482015290519081900360640190fd5b61271081106111b1576040805162461bcd60e51b815260206004820152600a602482015269215f736c69707061676560b01b604482015290519081900360640190fd5b600055565b7f000000000000000000000000834ebce3b3fb5b9647d9398a1f6f44a2e831ac6081565b6001600160a01b03811660009081526001602052604081206002810154158015906112155750805461120d90429061121c565b816001015411155b9392505050565b600061121583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250600081848411156112e85760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112ad578181015183820152602001611295565b50505050905090810190601f1680156112da5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b828054828255906000526020600020908101928215611345579160200282015b8281111561134557825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190611310565b50611351929150611355565b5090565b5b808211156113515780546001600160a01b031916815560010161135656fea26469706673582212202b8b4fb95fec2090a546aed7504aefcbc6c074349adf2a868b45cd37fb9e1c8964736f6c634300060c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000ab72cc293b63f6477baf9d514da735cf6caadc2d000000000000000000000000834ebce3b3fb5b9647d9398a1f6f44a2e831ac6000000000000000000000000084d40423e66c02689c2c90fbb28213dc06aa6f1a
-----Decoded View---------------
Arg [0] : _manager (address): 0xAB72cC293B63f6477BAf9d514Da735Cf6caADC2d
Arg [1] : _controller (address): 0x834ebCE3b3Fb5B9647d9398a1f6F44A2E831aC60
Arg [2] : _legacyController (address): 0x84D40423e66C02689c2C90fbB28213dC06aa6F1a
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000ab72cc293b63f6477baf9d514da735cf6caadc2d
Arg [1] : 000000000000000000000000834ebce3b3fb5b9647d9398a1f6f44a2e831ac60
Arg [2] : 00000000000000000000000084d40423e66c02689c2c90fbb28213dc06aa6f1a
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.