transaction handling touchups

This commit is contained in:
tim
2025-02-25 09:57:56 -04:00
parent 8b541bd76d
commit afb1ee49a4
2 changed files with 10 additions and 2 deletions

View File

@@ -60,6 +60,7 @@ def setup_logevent_triggers(runner):
runner.add_callback(check_activate_orders) runner.add_callback(check_activate_orders)
runner.add_callback(init) runner.add_callback(init)
runner.add_event_trigger(handle_vault_created, get_contract_event('Vault', 'VaultCreated')) runner.add_event_trigger(handle_vault_created, get_contract_event('Vault', 'VaultCreated'))
runner.add_event_trigger(handle_vault_impl_changed, get_contract_event('Vault', 'VaultImplChanged')) 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_order_placed, get_contract_event('VaultImpl', 'DexorderSwapPlaced'))
@@ -69,7 +70,7 @@ def setup_logevent_triggers(runner):
runner.add_event_trigger(handle_order_canceled, get_contract_event('VaultImpl', 'DexorderSwapCanceled')) 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_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_transaction_receipts)
runner.add_event_trigger(handle_dexorderexecutions, executions) runner.add_event_trigger(handle_dexorderexecutions, executions)
runner.add_event_trigger(handle_vault_creation_requests) runner.add_event_trigger(handle_vault_creation_requests)

View File

@@ -7,6 +7,7 @@ from uuid import uuid4
from web3.exceptions import TransactionNotFound, ContractPanicError, ContractLogicError from web3.exceptions import TransactionNotFound, ContractPanicError, ContractLogicError
from dexorder import db, current_w3, Account from dexorder import db, current_w3, Account
from dexorder.alert import warningAlert
from dexorder.base import TransactionReceiptDict, TransactionRequest from dexorder.base import TransactionReceiptDict, TransactionRequest
from dexorder.base.chain import current_chain from dexorder.base.chain import current_chain
from dexorder.blockstate.fork import current_fork from dexorder.blockstate.fork import current_fork
@@ -113,10 +114,16 @@ async def create_and_send_transactions():
try: try:
sent = await w3.eth.send_raw_transaction(ctx.data) sent = await w3.eth.send_raw_transaction(ctx.data)
except ValueError as e: except ValueError as e:
if e.args[0]['code'] == -32003: try:
msg = e.args[0].get('message','')
except IndexError:
msg = ''
if msg.startswith('nonce too low'):
# Nonce too low # Nonce too low
log.warning(f'Account {account.address} nonce too low') log.warning(f'Account {account.address} nonce too low')
account.reset_nonce() account.reset_nonce()
elif msg.startswith('insufficient funds'):
warningAlert('Account Empty', f'Account {account.address} is out of funds!')
else: else:
log.exception(f'Failure sending transaction for job {job.id}') log.exception(f'Failure sending transaction for job {job.id}')
await handler.release_account(account) await handler.release_account(account)