def tend_all(badger: BadgerSystem, skip): table = [] for key, vault in badger.sett_system.vaults.items(): if key in skip: continue strategy = badger.getStrategy(key) if not strategy.isTendable(): continue console.print("\n[bold green]===== Tend: " + key + " =====[/bold green]\n") snap = SnapshotManager(badger, key) strategy = badger.getStrategy(key) keeper = accounts.at(badger.keeper) before = snap.snap() if strategy.keeper() == badger.badgerRewardsManager: snap.settTendViaManager( strategy, {"from": keeper, "gas_limit": 1000000}, confirm=False, ) else: snap.settTend( {"from": keeper, "gas_limit": 1000000}, confirm=False, ) tx_wait() if rpc.is_active(): chain.mine() after = snap.snap() snap.printCompare(before, after)
def earn_all(badger: BadgerSystem, skip): keeper = badger.deployer for key, vault in badger.sett_system.vaults.items(): if key in skip: print("Skip ", key) continue console.print("\n[bold red]===== Earn: " + key + " =====[/bold red]\n") strategy = badger.getStrategy(key) controller = Controller.at(vault.controller()) want = interface.IERC20(vault.token()) # Pre safety checks assert want == strategy.want() assert strategy.controller() == controller assert vault.controller() == controller assert controller.strategies(want) == strategy vaultBefore = want.balanceOf(vault) strategyBefore = strategy.balanceOf() toEarn = False if earn_preconditions(vaultBefore, strategyBefore): print("Earn: " + key, vault, strategy) toEarn = True snap = SnapshotManager(badger, key) strategy = badger.getStrategy(key) keeper = accounts.at(strategy.keeper()) before = snap.snap() snap.printTable(before) keeper = accounts.at(vault.keeper()) snap.settEarn( { 'from': keeper, "gas_price": gas_strategy, "gas_limit": 2000000, "allow_revert": True }, confirm=False) after = snap.snap() snap.printTable(after) snap.printCompare(before, after)
def harvest_all(badger: BadgerSystem, skip): for key, vault in badger.sett_system.vaults.items(): if key in skip: continue console.print("\n[bold yellow]===== Harvest: " + str(key) + " =====[/bold yellow]\n") print("Harvest: " + key) snap = SnapshotManager(badger, key) strategy = badger.getStrategy(key) keeper = accounts.at(badger.keeper) before = snap.snap() if strategy.keeper() == badger.badgerRewardsManager: snap.settHarvestViaManager( strategy, { "from": keeper, "gas_limit": 2000000, "allow_revert": True }, confirm=False, ) else: snap.settHarvest( { "from": keeper, "gas_limit": 2000000, "allow_revert": True }, confirm=False, ) tx_wait() if rpc.is_active(): chain.mine() after = snap.snap() snap.printCompare(before, after)
def harvest_all(badger: BadgerSystem, skip): keeper = badger.deployer for key, vault in badger.sett_system.vaults.items(): if key in skip: continue console.print("\n[bold yellow]===== Harvest: " + str(key) + " =====[/bold yellow]\n") print("Harvest: " + key) snap = SnapshotManager(badger, key) strategy = badger.getStrategy(key) keeper = accounts.at(strategy.keeper()) before = snap.snap() snap.settHarvest({'from': keeper, "gas_price": gas_strategy}) after = snap.snap() snap.printCompare(before, after)
def harvest_all(badger: BadgerSystem, skip): for key, vault in badger.sett_system.vaults.items(): if key in skip: continue console.print("\n[bold yellow]===== Harvest: " + str(key) + " =====[/bold yellow]\n") print("Harvest: " + key) snap = SnapshotManager(badger, key) strategy = badger.getStrategy(key) keeper = accounts.at(strategy.keeper()) before = snap.snap() snap.printTable(before) snap.settHarvest({'from': keeper, "gas_price": gas_strategy, "gas_limit": 2000000, "allow_revert": True}, confirm=False) after = snap.snap() snap.printTable(after) snap.printCompare(before, after)
def tend_all(badger: BadgerSystem, skip, min_profit=0): """ Runs tend function for strategies if they are expected to be profitable. If a profit estimate fails for any reason the default behavior is to treat it as having a profit of zero. :param badger: badger system :param skip: strategies to skip checking :param min_profit: minimum estimated profit (in ETH or BNB) required for harvest to be executed on chain """ table = [] for key, vault in badger.sett_system.vaults.items(): if key in skip: continue strategy = badger.getStrategy(key) if not strategy.isTendable(): continue console.print("\n[bold green]===== Tend: " + key + " =====[/bold green]\n") snap = SnapshotManager(badger, key) strategy = badger.getStrategy(key) before = snap.snap() if strategy.keeper() == badger.badgerRewardsManager: estimated_profit = snap.estimateProfitTendViaManager( key, strategy, { "from": keeper, "gas_limit": 1000000 }, min_profit) if estimated_profit >= min_profit: snap.settTendViaManager( strategy, { "from": keeper, "gas_limit": 1000000 }, confirm=False, ) else: keeper = accounts.at(strategy.keeper()) estimated_profit = snap.estimateProfitTend(key, { "from": keeper, "gas_limit": 1000000 }, min_profit) if estimated_profit >= min_profit: snap.settTend( { "from": keeper, "gas_limit": 1000000 }, confirm=False, ) tx_wait() if rpc.is_active(): chain.mine() after = snap.snap() snap.printCompare(before, after)