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(init)
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_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_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_vault_creation_requests)

View File

@@ -7,6 +7,7 @@ from uuid import uuid4
from web3.exceptions import TransactionNotFound, ContractPanicError, ContractLogicError
from dexorder import db, current_w3, Account
from dexorder.alert import warningAlert
from dexorder.base import TransactionReceiptDict, TransactionRequest
from dexorder.base.chain import current_chain
from dexorder.blockstate.fork import current_fork
@@ -113,10 +114,16 @@ async def create_and_send_transactions():
try:
sent = await w3.eth.send_raw_transaction(ctx.data)
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
log.warning(f'Account {account.address} nonce too low')
account.reset_nonce()
elif msg.startswith('insufficient funds'):
warningAlert('Account Empty', f'Account {account.address} is out of funds!')
else:
log.exception(f'Failure sending transaction for job {job.id}')
await handler.release_account(account)