backend checks for tranche funds
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
import logging
|
import logging
|
||||||
import sys
|
|
||||||
from asyncio import CancelledError
|
from asyncio import CancelledError
|
||||||
|
|
||||||
from dexorder import db, blockchain, config
|
from dexorder import db, blockchain, config
|
||||||
@@ -7,7 +6,6 @@ from dexorder.base.chain import current_chain
|
|||||||
from dexorder.bin.executable import execute
|
from dexorder.bin.executable import execute
|
||||||
from dexorder.blockstate.blockdata import BlockData
|
from dexorder.blockstate.blockdata import BlockData
|
||||||
from dexorder.blockstate.db_state import DbState
|
from dexorder.blockstate.db_state import DbState
|
||||||
from dexorder.configuration import parse_args
|
|
||||||
from dexorder.contract import get_contract_event
|
from dexorder.contract import get_contract_event
|
||||||
from dexorder.contract.dexorder import get_factory_contract, get_dexorder_contract
|
from dexorder.contract.dexorder import get_factory_contract, get_dexorder_contract
|
||||||
from dexorder.event_handler import init_order_triggers, init, dump_log, handle_vault_created, handle_order_placed, \
|
from dexorder.event_handler import init_order_triggers, init, dump_log, handle_vault_created, handle_order_placed, \
|
||||||
|
|||||||
@@ -224,8 +224,16 @@ def process_active_tranches():
|
|||||||
old_req = execution_requests.get(tk)
|
old_req = execution_requests.get(tk)
|
||||||
height = current_block.get().height
|
height = current_block.get().height
|
||||||
if old_req is None or old_req.height <= height: # '<=' is used so proof is updated with more recent values
|
if old_req is None or old_req.height <= height: # '<=' is used so proof is updated with more recent values
|
||||||
|
if has_funds(tk):
|
||||||
log.info(f'execution request for {tk}')
|
log.info(f'execution request for {tk}')
|
||||||
execution_requests[tk] = ExecutionRequest(height, proof)
|
execution_requests[tk] = ExecutionRequest(height, proof)
|
||||||
|
else: log.debug(f'underfunded tranche {tk}')
|
||||||
|
|
||||||
|
|
||||||
|
def has_funds(tk: TrancheKey):
|
||||||
|
order = Order.of(tk)
|
||||||
|
minimum = order.status.order.minFillAmount if order.amount_is_input else 0
|
||||||
|
return vault_balances.get(tk.vault,{}).get(order.status.order.tokenIn, 0) > minimum
|
||||||
|
|
||||||
|
|
||||||
async def process_execution_requests():
|
async def process_execution_requests():
|
||||||
|
|||||||
@@ -6,13 +6,12 @@ from typing import overload
|
|||||||
from dexorder import DELETE, db
|
from dexorder import DELETE, db
|
||||||
from dexorder.base.chain import current_chain
|
from dexorder.base.chain import current_chain
|
||||||
from dexorder.base.order import OrderKey, TrancheKey
|
from dexorder.base.order import OrderKey, TrancheKey
|
||||||
from dexorder.blockstate import BlockDict, BlockSet
|
|
||||||
from dexorder.vault_blockdata import vault_owners
|
|
||||||
from dexorder.database.model.orderindex import OrderIndex
|
|
||||||
from dexorder.base.orderlib import SwapOrderStatus, SwapOrderState
|
from dexorder.base.orderlib import SwapOrderStatus, SwapOrderState
|
||||||
|
from dexorder.blockstate import BlockDict, BlockSet
|
||||||
|
from dexorder.database.model.orderindex import OrderIndex
|
||||||
from dexorder.routing import pool_address
|
from dexorder.routing import pool_address
|
||||||
from dexorder.util import json
|
from dexorder.util import json
|
||||||
|
from dexorder.vault_blockdata import vault_owners
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -59,15 +58,15 @@ class Order:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@overload
|
@overload
|
||||||
def of(key: OrderKey):...
|
def of(key: OrderKey) -> 'Order':...
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@overload
|
@overload
|
||||||
def of(vault: str, order_index: int):...
|
def of(vault: str, order_index: int) -> 'Order':...
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def of(a, b=None) -> 'Order':
|
def of(a, b=None) -> 'Order':
|
||||||
key = a if b is None else OrderKey(a, b)
|
key = (OrderKey(a.vault, a.order_index) if type(a) is TrancheKey else a) if b is None else OrderKey(a, b)
|
||||||
try:
|
try:
|
||||||
return Order.instances[key]
|
return Order.instances[key]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
|||||||
Reference in New Issue
Block a user