From a627b408a2b455d04acf5c3598b821169405f283 Mon Sep 17 00:00:00 2001 From: Shahul Hameed <10547529+shahthepro@users.noreply.github.com> Date: Thu, 3 Aug 2023 17:47:11 +0400 Subject: [PATCH] Add buyback runlogs --- brownie/buyback.py | 7 ++- brownie/oneinch.py | 25 ++++++++++ brownie/runlogs/2023_08_strategist.py | 66 +++++++++++++++++++++++++++ 3 files changed, 94 insertions(+), 4 deletions(-) create mode 100644 brownie/oneinch.py diff --git a/brownie/buyback.py b/brownie/buyback.py index a6b16c3993..5b43171595 100644 --- a/brownie/buyback.py +++ b/brownie/buyback.py @@ -44,15 +44,14 @@ def build_buyback_tx(max_dollars=5000, max_slippage=2.0, with_fork=True): """ buyback = BUYBACK_CONTRACT treasuryBps = BUYBACK_CONTRACT.treasuryBps() - ousd_for_treasury = max_dollars * treasuryBps / 10**4 - ousd_to_swap = max_dollars - ousd_for_treasury - - # Calculate buyback amount ousd_available = ousd.balanceOf(buyback) buyback_amount = min(ousd_available, int(max_dollars * 10**18)) + ousd_for_treasury = buyback_amount * treasuryBps / 10**4 + ousd_to_swap = buyback_amount - ousd_for_treasury + # Calculate returned OGV no_slippage_ogv = sim_buyback_ogv(10**18) * buyback_amount / 10**18 expected_slippage_ogv = sim_buyback_ogv(buyback_amount) diff --git a/brownie/oneinch.py b/brownie/oneinch.py new file mode 100644 index 0000000000..9656c18af5 --- /dev/null +++ b/brownie/oneinch.py @@ -0,0 +1,25 @@ +from world import * +import requests +from types import SimpleNamespace + +def get_1inch_swap_data(from_token, to_token, swap_amount, slippage, from_address=STRATEGIST, to_address=STRATEGIST): + req = requests.get('https://api.1inch.io/v5.0/1/swap', params={ + 'fromTokenAddress': from_token, + 'fromAddress': from_address, + 'destReceiver': to_address, + 'toTokenAddress': to_token, + 'amount': str(swap_amount), + 'allowPartialFill': True, + 'disableEstimate': 'true', + 'slippage': slippage + }, headers={ + 'accept': 'application/json' + }) + + if req.status_code != 200: + print(req.json()) + raise Exception("Error calling 1inch api") + + result = req.json() + + return SimpleNamespace(receiver = result['tx']['to'], input = result['tx']['data']) diff --git a/brownie/runlogs/2023_08_strategist.py b/brownie/runlogs/2023_08_strategist.py index 6acc3ad29f..10987851aa 100644 --- a/brownie/runlogs/2023_08_strategist.py +++ b/brownie/runlogs/2023_08_strategist.py @@ -19,3 +19,69 @@ print("Profit", "{:.6f}".format(profit / 10**18), profit) print("Vault Change", "{:.6f}".format(vault_change / 10**18), vault_change) print("-----") + +# ----------------------------------- +# August 03, 2023 - OGV Buyback +# ----------------------------------- +from buyback import * + +def main(): + build_buyback_tx(max_dollars=2250, max_slippage=1.5, with_fork=True) + +# ----------------------------------- +# August 03, 2023 - CVX Buyback +# ----------------------------------- +from world import * +from oneinch import get_1inch_swap_data + +txs = [] +def main(): + with TemporaryFork(): + slippage = 1 + + oeth_balance = oeth.balanceOf(STRATEGIST) + ousd_balance = ousd.balanceOf(STRATEGIST) + + # Approve 1-inch to move OETH and OUSD + txs.append( + oeth.approve(ROUTER_1INCH_V5, oeth_balance, {'from': STRATEGIST}) + ) + txs.append( + ousd.approve(ROUTER_1INCH_V5, ousd_balance, {'from': STRATEGIST}) + ) + + # Swap OETH for CVX + txs.append( + get_1inch_swap_data( + OETH, + CVX, + oeth_balance, + slippage, + ) + ) + + # Swap OUSD for CVX + txs.append( + get_1inch_swap_data( + OUSD, + CVX, + ousd_balance, + slippage, + ) + ) + + print("Schedule the following transactions on Gnosis Safe") + for idx, item in enumerate(txs): + print("Transaction ", idx) + print("To: ", item.receiver) + print("Data (Hex encoded): ", item.input, "\n") + + +# ----------------------------------- +# August 03, 2023 - OGV Buyback 2 +# ----------------------------------- +from buyback import * + +txs = [] +def main(): + build_buyback_tx(max_slippage=1.5, with_fork=True)