From b04d99eb2e798fc9892042eefa6abea1cd34075c Mon Sep 17 00:00:00 2001 From: Haris Angelidakis <64154020+harisang@users.noreply.github.com> Date: Tue, 31 Oct 2023 10:34:48 +0200 Subject: [PATCH] Add runtime argument for minimum cow transfer threshold (#324) This PR adds the option to specify a minimum COW transfer amount, effectively ignoring all transfers below that amount. After merging this PR and before tagging a new release, I will do a PR in the infrastructure repo to set up these arguments correctly. --- README.md | 7 ++++--- src/fetch/transfer_file.py | 17 ++++++++++------- src/utils/script_args.py | 11 +++++++++-- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 44554ca0..f9dce3f4 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ looking at the script help menu can help provide a list of options! $ python -m src.fetch.transfer_file --help usage: Fetch Complete Reimbursement [-h] [--start START] [--post-tx POST_TX] [--consolidate-transfers CONSOLIDATE_TRANSFERS] [--dry-run DRY_RUN] - [--min-transfer-amount-wei MIN_TRANSFER_AMOUNT_WEI] + [--min-transfer-amount-wei MIN_TRANSFER_AMOUNT_WEI] [--min-transfer-amount-cow-atoms MIN_TRANSFER_AMOUNT_COW_ATOMS] options: -h, --help show this help message and exit @@ -86,8 +86,9 @@ options: --dry-run DRY_RUN Flag indicating whether script should not post alerts or transactions. Only relevant in combination with --post-tx TruePrimarily intended for deployment in staging environment. --min-transfer-amount-wei MIN_TRANSFER_AMOUNT_WEI - Ignore transfers with amount less than this - + Ignore ETH transfers with amount less than this + --min-transfer-amount-cow-atoms MIN_TRANSFER_AMOUNT_COW_ATOMS + Ignore COW transfers with amount less than this ``` The solver reimbursements are executed each Tuesday with the accounting period of the last 7 days. diff --git a/src/fetch/transfer_file.py b/src/fetch/transfer_file.py index d2407226..b4d5ebb8 100644 --- a/src/fetch/transfer_file.py +++ b/src/fetch/transfer_file.py @@ -108,18 +108,21 @@ def auto_propose( category=Category.GENERAL, ) - payout_transfers = construct_payouts( + payout_transfers_temp = construct_payouts( args.dune, orderbook=MultiInstanceDBFetcher( [os.environ["PROD_DB_URL"], os.environ["BARN_DB_URL"]] ), ) - payout_transfers = list( - filter( - lambda payout: payout.amount_wei > args.min_transfer_amount_wei, - payout_transfers, - ) - ) + payout_transfers = [] + for tr in payout_transfers_temp: + if tr.token is None: + if tr.amount_wei >= args.min_transfer_amount_wei: + payout_transfers.append(tr) + else: + if tr.amount_wei >= args.min_transfer_amount_cow_atoms: + payout_transfers.append(tr) + if args.consolidate_transfers: payout_transfers = Transfer.consolidate(payout_transfers) diff --git a/src/utils/script_args.py b/src/utils/script_args.py index 91461ad6..eb856b54 100644 --- a/src/utils/script_args.py +++ b/src/utils/script_args.py @@ -19,6 +19,7 @@ class ScriptArgs: dry_run: bool consolidate_transfers: bool min_transfer_amount_wei: int + min_transfer_amount_cow_atoms: int def generic_script_init(description: str) -> ScriptArgs: @@ -56,13 +57,18 @@ def generic_script_init(description: str) -> ScriptArgs: "Primarily intended for deployment in staging environment.", default=False, ) - # TODO: this should be per token (like list[tuple[Token,minAmount]]) parser.add_argument( "--min-transfer-amount-wei", type=int, - help="Ignore transfers with amount less than this", + help="Ignore ETH transfers with amount less than this", default=1000000000000000, ) + parser.add_argument( + "--min-transfer-amount-cow-atoms", + type=int, + help="Ignore COW transfers with amount less than this", + default=100000000000000000000, + ) args = parser.parse_args() return ScriptArgs( dune=DuneFetcher( @@ -73,4 +79,5 @@ def generic_script_init(description: str) -> ScriptArgs: dry_run=args.dry_run, consolidate_transfers=args.consolidate_transfers, min_transfer_amount_wei=args.min_transfer_amount_wei, + min_transfer_amount_cow_atoms=args.min_transfer_amount_cow_atoms, )