Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions brownie/buyback.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
25 changes: 25 additions & 0 deletions brownie/oneinch.py
Original file line number Diff line number Diff line change
@@ -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'])
66 changes: 66 additions & 0 deletions brownie/runlogs/2023_08_strategist.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)