diff --git a/packages/apps/job-launcher/server/src/common/constants/payment.ts b/packages/apps/job-launcher/server/src/common/constants/payment.ts index e93e882685..aae4aff170 100644 --- a/packages/apps/job-launcher/server/src/common/constants/payment.ts +++ b/packages/apps/job-launcher/server/src/common/constants/payment.ts @@ -3,5 +3,6 @@ import { ITokenId } from '../interfaces'; export const CoingeckoTokenId: ITokenId = { hmt: 'human-protocol', usdt: 'tether', + usdt0: 'usdt0', usdc: 'usd-coin', }; diff --git a/packages/apps/job-launcher/server/src/common/constants/tokens.ts b/packages/apps/job-launcher/server/src/common/constants/tokens.ts index 50f93ecad4..ce7aee34cf 100644 --- a/packages/apps/job-launcher/server/src/common/constants/tokens.ts +++ b/packages/apps/job-launcher/server/src/common/constants/tokens.ts @@ -49,7 +49,7 @@ export const TOKEN_ADDRESSES: { address: NETWORKS[ChainId.POLYGON]!.hmtAddress, decimals: 18, }, - [EscrowFundToken.USDT]: { + [EscrowFundToken.USDT0]: { address: '0xc2132D05D31c914a87C6611C10748AEb04B58e8F', decimals: 6, }, diff --git a/packages/apps/job-launcher/server/src/common/enums/job.ts b/packages/apps/job-launcher/server/src/common/enums/job.ts index f7168e9fd8..0f01dd2ece 100644 --- a/packages/apps/job-launcher/server/src/common/enums/job.ts +++ b/packages/apps/job-launcher/server/src/common/enums/job.ts @@ -455,5 +455,6 @@ export enum WorkerBrowser { export enum EscrowFundToken { HMT = 'hmt', USDT = 'usdt', + USDT0 = 'usdt0', USDC = 'usdc', } diff --git a/packages/apps/job-launcher/server/src/modules/payment/payment.service.spec.ts b/packages/apps/job-launcher/server/src/modules/payment/payment.service.spec.ts index 7677b18080..40dd87cdf3 100644 --- a/packages/apps/job-launcher/server/src/modules/payment/payment.service.spec.ts +++ b/packages/apps/job-launcher/server/src/modules/payment/payment.service.spec.ts @@ -1317,6 +1317,7 @@ describe('PaymentService', () => { { currency: PaymentCurrency.USD, amount: 100 }, { currency: PaymentCurrency.HMT, amount: 50 }, { currency: PaymentCurrency.USDT, amount: 0 }, + { currency: PaymentCurrency.USDT0, amount: 0 }, { currency: PaymentCurrency.USDC, amount: 0 }, ], totalUsdAmount: 150, @@ -1336,8 +1337,8 @@ describe('PaymentService', () => { const balance = await paymentService.getUserBalance(userId); expect(balance).toEqual(expectedBalance); - expect(paymentService.getUserBalanceByCurrency).toHaveBeenCalledTimes(4); - expect(paymentService.convertToUSD).toHaveBeenCalledTimes(4); + expect(paymentService.getUserBalanceByCurrency).toHaveBeenCalledTimes(5); + expect(paymentService.convertToUSD).toHaveBeenCalledTimes(5); }); it('should return zero balance for new users', async () => { @@ -1347,6 +1348,7 @@ describe('PaymentService', () => { { currency: PaymentCurrency.USD, amount: 0 }, { currency: PaymentCurrency.HMT, amount: 0 }, { currency: PaymentCurrency.USDT, amount: 0 }, + { currency: PaymentCurrency.USDT0, amount: 0 }, { currency: PaymentCurrency.USDC, amount: 0 }, ], totalUsdAmount: 0, @@ -1366,8 +1368,8 @@ describe('PaymentService', () => { const balance = await paymentService.getUserBalance(userId); expect(balance).toEqual(expectedBalance); - expect(paymentService.getUserBalanceByCurrency).toHaveBeenCalledTimes(4); - expect(paymentService.convertToUSD).toHaveBeenCalledTimes(4); + expect(paymentService.getUserBalanceByCurrency).toHaveBeenCalledTimes(5); + expect(paymentService.convertToUSD).toHaveBeenCalledTimes(5); }); }); diff --git a/packages/examples/cvat/exchange-oracle/debug.py b/packages/examples/cvat/exchange-oracle/debug.py index f686fc3eda..f11128dd65 100644 --- a/packages/examples/cvat/exchange-oracle/debug.py +++ b/packages/examples/cvat/exchange-oracle/debug.py @@ -66,14 +66,20 @@ def patched_get_escrow(chain_id: int, escrow_address: str) -> EscrowData: logger.debug(f"DEV: Local manifests: {format_sequence(minio_manifests)}") candidate_files = [ - fn for fn in minio_manifests if PurePosixPath(fn).name == f"{escrow_address}.json" + fn + for fn in minio_manifests + if ( + "/" in escrow_address + and fn == f"{escrow_address}.json" + or PurePosixPath(fn).name == f"{escrow_address}.json" + ) ] if not candidate_files: return original_get_escrow(ChainId(chain_id), escrow_address) elif len(candidate_files) != 1: raise Exception( "Can't select local manifest to be used for escrow '{}'" - " - several manifests math: {}".format( + " - several manifests match: {}".format( escrow_address, format_sequence(candidate_files) ) ) @@ -92,7 +98,7 @@ def patched_get_escrow(chain_id: int, escrow_address: str) -> EscrowData: token="HMT", # noqa: S106 total_funded_amount=10, created_at=datetime.datetime(2023, 1, 1, tzinfo=datetime.timezone.utc), - manifest_url=(f"http://{Config.storage_config.endpoint_url}/manifests/{manifest_file}"), + manifest=(f"http://{Config.storage_config.endpoint_url}/manifests/{manifest_file}"), ) logger.info(f"DEV: Using local manifest '{manifest_file}' for escrow '{escrow_address}'") diff --git a/packages/examples/cvat/exchange-oracle/src/crons/cvat/state_trackers.py b/packages/examples/cvat/exchange-oracle/src/crons/cvat/state_trackers.py index 3eb027174a..f841397b45 100644 --- a/packages/examples/cvat/exchange-oracle/src/crons/cvat/state_trackers.py +++ b/packages/examples/cvat/exchange-oracle/src/crons/cvat/state_trackers.py @@ -1,5 +1,4 @@ import logging -from contextlib import suppress from sqlalchemy.orm import Session @@ -31,7 +30,7 @@ def process_incoming_cvat_webhooks(logger: logging.Logger, session: Session) -> for webhook in webhooks: try: - with session.begin_nested(): + with session.begin_nested(), db.suppress(db_errors.LockNotAvailable): cvat_webhook_handler(webhook, session) cvat_service.incoming_webhooks.handle_webhook_success( session, webhook_id=webhook.id @@ -131,10 +130,7 @@ def _reset_job_after_assignment(session: Session, assignment: cvat_models.Assign ) for assignment in assignments: - with ( - session.begin_nested(), - suppress(db_errors.LockNotAvailable), - ): + with session.begin_nested(), db.suppress(db_errors.LockNotAvailable): cvat_service.get_jobs_by_cvat_id( session, cvat_ids=[assignment.cvat_job_id], @@ -161,10 +157,7 @@ def _reset_job_after_assignment(session: Session, assignment: cvat_models.Assign ) for assignment in assignments: - with ( - session.begin_nested(), - suppress(db_errors.LockNotAvailable), - ): + with session.begin_nested(), db.suppress(db_errors.LockNotAvailable): cvat_service.get_jobs_by_cvat_id( session, cvat_ids=[assignment.cvat_job_id], @@ -189,10 +182,7 @@ def _reset_job_after_assignment(session: Session, assignment: cvat_models.Assign for assignment in assignments: if assignment.job.project.status != ProjectStatuses.annotation: - with ( - session.begin_nested(), - suppress(db_errors.LockNotAvailable), - ): + with session.begin_nested(), db.suppress(db_errors.LockNotAvailable): cvat_service.get_jobs_by_cvat_id( session, cvat_ids=[assignment.cvat_job_id], diff --git a/packages/examples/cvat/exchange-oracle/src/db/__init__.py b/packages/examples/cvat/exchange-oracle/src/db/__init__.py index e1d7018ea4..ba47219043 100644 --- a/packages/examples/cvat/exchange-oracle/src/db/__init__.py +++ b/packages/examples/cvat/exchange-oracle/src/db/__init__.py @@ -1,6 +1,5 @@ from contextlib import contextmanager from typing import TYPE_CHECKING, Any, ClassVar, Generic, TypeVar -from uuid import uuid4 import sqlalchemy from psycopg2.errors import Error diff --git a/packages/examples/cvat/recording-oracle/debug.py b/packages/examples/cvat/recording-oracle/debug.py index e250c6974e..4a8d40a42c 100644 --- a/packages/examples/cvat/recording-oracle/debug.py +++ b/packages/examples/cvat/recording-oracle/debug.py @@ -32,14 +32,20 @@ def patched_get_escrow(chain_id: int, escrow_address: str) -> EscrowData: logger.debug(f"DEV: Local manifests: {format_sequence(minio_manifests)}") candidate_files = [ - fn for fn in minio_manifests if PurePosixPath(fn).name == f"{escrow_address}.json" + fn + for fn in minio_manifests + if ( + "/" in escrow_address + and fn == f"{escrow_address}.json" + or PurePosixPath(fn).name == f"{escrow_address}.json" + ) ] if not candidate_files: return original_get_escrow(ChainId(chain_id), escrow_address) if len(candidate_files) != 1: raise Exception( f"Can't select local manifest to be used for escrow '{escrow_address}'" - f" - several manifests math: {format_sequence(candidate_files)}" + f" - several manifests match: {format_sequence(candidate_files)}" ) manifest_file = candidate_files[0] @@ -56,7 +62,7 @@ def patched_get_escrow(chain_id: int, escrow_address: str) -> EscrowData: token="HMT", # noqa: S106 total_funded_amount=10, created_at=datetime.datetime(2023, 1, 1, tzinfo=datetime.timezone.utc), - manifest_url=(f"http://{Config.storage_config.endpoint_url}/manifests/{manifest_file}"), + manifest=(f"http://{Config.storage_config.endpoint_url}/manifests/{manifest_file}"), ) logger.info(f"DEV: Using local manifest '{manifest_file}' for escrow '{escrow_address}'")