Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)