From 81c9986d739f3fb7b7bc1bb963446d993ddb25e7 Mon Sep 17 00:00:00 2001 From: tim Date: Fri, 30 Aug 2024 16:45:50 -0400 Subject: [PATCH] logic->impl renaming fixes --- src/dexorder/base/orderlib.py | 3 ++- src/dexorder/bin/main.py | 12 ++++++------ src/dexorder/event_handler.py | 14 +++++++------- src/dexorder/impls.py | 17 +++++++++++++++++ src/dexorder/logics.py | 17 ----------------- src/dexorder/order/executionhandler.py | 2 +- src/dexorder/transactions.py | 2 +- 7 files changed, 34 insertions(+), 33 deletions(-) create mode 100644 src/dexorder/impls.py delete mode 100644 src/dexorder/logics.py diff --git a/src/dexorder/base/orderlib.py b/src/dexorder/base/orderlib.py index dfe6e97..f3a2dde 100644 --- a/src/dexorder/base/orderlib.py +++ b/src/dexorder/base/orderlib.py @@ -185,7 +185,8 @@ class ElaboratedSwapOrderStatus: ocoGroup = None # we ignore any fill values from the on-chain struct, because we will subsequently detect the # DexorderSwapFilled events and add them in - _ignore_filled = next(item) + _ignore_filled_in = next(item) + _ignore_filled_out = next(item) trancheStatuses = [ElaboratedTrancheStatus.load_from_chain(ts) for ts in next(item)] for ts in trancheStatuses: ts.filledIn = 0 diff --git a/src/dexorder/bin/main.py b/src/dexorder/bin/main.py index b2a7bd1..074384d 100644 --- a/src/dexorder/bin/main.py +++ b/src/dexorder/bin/main.py @@ -12,7 +12,7 @@ from dexorder.contract import get_contract_event from dexorder.contract.dexorder import get_dexorder_contract from dexorder.event_handler import (init, dump_log, handle_vault_created, handle_order_placed, handle_transfer, handle_swap_filled, handle_order_canceled, handle_order_cancel_all, - handle_uniswap_swaps, handle_vault_logic_changed) + handle_uniswap_swaps, handle_vault_impl_changed) from dexorder.memcache import memcache from dexorder.memcache.memcache_state import RedisState, publish_all from dexorder.order.executionhandler import handle_dexorderexecutions, execute_tranches @@ -49,13 +49,13 @@ def setup_logevent_triggers(runner): runner.add_callback(init) runner.add_event_trigger(handle_vault_created, get_contract_event('Vault', 'VaultCreated')) - runner.add_event_trigger(handle_vault_logic_changed, get_contract_event('Vault', 'VaultLogicChanged')) - runner.add_event_trigger(handle_order_placed, get_contract_event('OrderLib', 'DexorderSwapPlaced')) + runner.add_event_trigger(handle_vault_impl_changed, get_contract_event('Vault', 'VaultImplChanged')) + runner.add_event_trigger(handle_order_placed, get_contract_event('VaultImpl', 'DexorderSwapPlaced')) runner.add_event_trigger(handle_transfer, get_contract_event('ERC20', 'Transfer')) runner.add_event_trigger(handle_uniswap_swaps, get_contract_event('IUniswapV3PoolEvents', 'Swap'), multi=True) - runner.add_event_trigger(handle_swap_filled, get_contract_event('OrderLib', 'DexorderSwapFilled')) - runner.add_event_trigger(handle_order_canceled, get_contract_event('OrderLib', 'DexorderSwapCanceled')) - runner.add_event_trigger(handle_order_cancel_all, get_contract_event('OrderLib', 'DexorderCancelAll')) + runner.add_event_trigger(handle_swap_filled, get_contract_event('VaultImpl', 'DexorderSwapFilled')) + runner.add_event_trigger(handle_order_canceled, get_contract_event('VaultImpl', 'DexorderSwapCanceled')) + runner.add_event_trigger(handle_order_cancel_all, get_contract_event('VaultImpl', 'DexorderCancelAll')) runner.add_event_trigger(handle_transaction_receipts) # todo handle only the transactions that were posted to this block runner.add_event_trigger(handle_dexorderexecutions, executions) diff --git a/src/dexorder/event_handler.py b/src/dexorder/event_handler.py index 7611ae2..745662e 100644 --- a/src/dexorder/event_handler.py +++ b/src/dexorder/event_handler.py @@ -9,7 +9,7 @@ from dexorder.base.order import TrancheKey, OrderKey from dexorder.base.orderlib import SwapOrderState from dexorder.blocks import get_block_timestamp from dexorder.contract.dexorder import vault_address, VaultContract, get_factory_contract -from dexorder.logics import get_logic_version +from dexorder.impls import get_impl_version from dexorder.ohlc import ohlcs from dexorder.order.orderstate import Order from dexorder.order.triggers import (OrderTriggers, activate_order, update_balance_triggers, start_trigger_updates, @@ -176,21 +176,21 @@ async def handle_vault_created(created: EventData): current_pub.get()(f'{current_chain.get().id}|{owner}', 'vaults', vaults) -async def handle_vault_logic_changed(upgrade: EventData): +async def handle_vault_impl_changed(upgrade: EventData): addr = upgrade['address'] # this event could come from the VaultFactory if addr == get_factory_contract().address: - log.info(f'Default VaultLogic changed for VaultFactory {addr} to implementation {addr}') + log.info(f'Default VaultImpl changed for VaultFactory {addr} to implementation {addr}') return # otherwise it's from a Vault try: - logic = upgrade['args']['logic'] + impl = upgrade['args']['impl'] except KeyError: - log.debug('Could not parse VaultLogicChanged', upgrade) + log.debug('Could not parse VaultImplChanged', upgrade) return if not await verify_vault(addr): log.warning(f'Ignoring "upgrade" of rogue vault {addr}') return - version = await get_logic_version(logic) - log.debug(f'Vault {addr} upgraded to logic version {version}') + version = await get_impl_version(impl) + log.debug(f'Vault {addr} upgraded to impl version {version}') diff --git a/src/dexorder/impls.py b/src/dexorder/impls.py new file mode 100644 index 0000000..f344fd2 --- /dev/null +++ b/src/dexorder/impls.py @@ -0,0 +1,17 @@ +import logging + +from dexorder.base import Address +from dexorder.blockstate import BlockDict +from dexorder.contract import ContractProxy, get_abi + +log = logging.getLogger(__name__) + +impls: BlockDict[Address, int] = BlockDict('impls', db=True, redis=True) # int is a version/feature identifier + +async def get_impl_version(addr): + try: + return impls[addr] + except KeyError: + version = await ContractProxy(addr, abi=get_abi('IVaultImpl')).version() + impls[addr] = version + return version diff --git a/src/dexorder/logics.py b/src/dexorder/logics.py deleted file mode 100644 index 139f6ef..0000000 --- a/src/dexorder/logics.py +++ /dev/null @@ -1,17 +0,0 @@ -import logging - -from dexorder.base import Address -from dexorder.blockstate import BlockDict -from dexorder.contract import ContractProxy, get_abi - -log = logging.getLogger(__name__) - -logics: BlockDict[Address, int] = BlockDict('logics', db=True, redis=True) # int is a version/feature identifier - -async def get_logic_version(addr): - try: - return logics[addr] - except KeyError: - version = await ContractProxy(addr, abi=get_abi('IVaultLogic')).version() - logics[addr] = version - return version diff --git a/src/dexorder/order/executionhandler.py b/src/dexorder/order/executionhandler.py index 67cb179..0832d71 100644 --- a/src/dexorder/order/executionhandler.py +++ b/src/dexorder/order/executionhandler.py @@ -86,7 +86,7 @@ def finish_execution_request(tk: TrancheKey, error: Optional[str]=None): elif error == 'SPL': # todo tight slippage can cause excessive executions as the backend repeatedly retries the remainder. The symptom is error 'SPL'. # Square-root price limit from Uniswap means we asked for a limit price that isn't met. This is a fault of - # vault logic if it happens. + # vault impl if it happens. log.warning(f'SPL when executing tranche {tk}') close_order_and_disable_triggers(order, SwapOrderState.Error) elif error == 'NO': diff --git a/src/dexorder/transactions.py b/src/dexorder/transactions.py index 9de9570..6f3540d 100644 --- a/src/dexorder/transactions.py +++ b/src/dexorder/transactions.py @@ -138,7 +138,7 @@ async def create_and_send_transactions(): async def handle_transaction_receipts(): - log.debug('handle_transaction_receipts') + # log.debug('handle_transaction_receipts') w3 = current_w3.get() for job in db.session.query(TransactionJob).filter( TransactionJob.chain == current_chain.get(),