From 17ef5794ffd6d26eead05faacbe909110f0f4fe2 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Mon, 15 Apr 2024 18:15:13 +0530 Subject: [PATCH 01/22] Add retry logic, priority fees, compute budget --- solana-python/pyxfluencer/__init__.py | 80 +++++++++--------- solana-python/pyxfluencer/utils.py | 116 ++++++++++++++++++-------- 2 files changed, 121 insertions(+), 75 deletions(-) diff --git a/solana-python/pyxfluencer/__init__.py b/solana-python/pyxfluencer/__init__.py index 3c2e6159..f9a6cbba 100644 --- a/solana-python/pyxfluencer/__init__.py +++ b/solana-python/pyxfluencer/__init__.py @@ -10,7 +10,7 @@ from .utils import sign_and_send_transaction from .program_id import PROGRAM_ID -xfluencer_solana_python_client_version="1.2.1" +xfluencer_solana_python_client_version = "1.2.2" ################### # Version: 1.2.1 @@ -158,63 +158,67 @@ async def validate_escrow_to_delivered(validator_authority: Keypair, async def validate_escrow(validation_authority: Keypair, - business_address: str, + business_address: str, influencer_address: str, - target_escrow_state: EscrowState, + target_escrow_state: EscrowState, order_code: int, network: str = "https://api.devnet.solana.com", percentage_fee: int = 0, processing_spl_escrow: bool = False): - + business_pk = Pubkey.from_string(business_address) influencer_pk = Pubkey.from_string(influencer_address) - opts = TxOpts(skip_confirmation = True, - skip_preflight = True, - preflight_commitment="processed") - - args = {"target_state":target_escrow_state.value, "percentage_fee": percentage_fee} - - signers = [validation_authority] - - if not processing_spl_escrow: + args = {"target_state": target_escrow_state.value, + "percentage_fee": percentage_fee} + + signers = [validation_authority] + + if not processing_spl_escrow: print("Processing Escrow SOL case") SEEDS = [b"escrow", bytes(business_pk), bytes(influencer_pk), - bytes(str(order_code),"UTF-8")] + bytes(str(order_code), "UTF-8")] escrow_pda, _ = Pubkey.find_program_address(SEEDS, PROGRAM_ID) - + accounts = { - "validation_authority": validation_authority.pubkey(), - "influencer":influencer_pk, - "business":business_pk, - "escrow_account":escrow_pda - } - + "validation_authority": validation_authority.pubkey(), + "influencer": influencer_pk, + "business": business_pk, + "escrow_account": escrow_pda + } + ix = validate_escrow_sol(args, accounts, program_id=PROGRAM_ID) - #return await sign_and_send_transaction(ix, signers, opts, network) - + # return await sign_and_send_transaction(ix, signers, opts, network) + else: print("Processing Escrow SPL case") - - # find vault and escrows pdas + + # find vault and escrows pdas vault_account_pda, _ = \ - Pubkey.find_program_address([b"token-seed", - bytes(str(order_code),"UTF-8")], PROGRAM_ID) + Pubkey.find_program_address([b"token-seed", + bytes(str(order_code), "UTF-8")], PROGRAM_ID) escrow_account_pda, _ = \ - Pubkey.find_program_address([b"escrow-data", - bytes(str(order_code),"UTF-8")], PROGRAM_ID) - + Pubkey.find_program_address([b"escrow-data", + bytes(str(order_code), "UTF-8")], PROGRAM_ID) + accounts = { - "validation_authority": validation_authority.pubkey(), + "validation_authority": validation_authority.pubkey(), "vault_account": vault_account_pda, - "influencer":influencer_pk, - "business":business_pk, - "escrow_account":escrow_account_pda - } - + "influencer": influencer_pk, + "business": business_pk, + "escrow_account": escrow_account_pda + } + ix = validate_escrow_spl(args, accounts, program_id=PROGRAM_ID) - - return await sign_and_send_transaction(ix, signers, opts, network) \ No newline at end of file + + try: + tx_resp = await sign_and_send_transaction(ix, signers, network) + if tx_resp: + print(f"Escrow validation status: {tx_resp}") + return tx_resp + except Exception as e: + print(f"Error validating escrow {str(e)}") + raise Exception(f"Error validating escrow {e}") diff --git a/solana-python/pyxfluencer/utils.py b/solana-python/pyxfluencer/utils.py index d89a5ea5..21477ea9 100644 --- a/solana-python/pyxfluencer/utils.py +++ b/solana-python/pyxfluencer/utils.py @@ -8,37 +8,37 @@ from solana.transaction import Transaction from solana.rpc.core import RPCException +from solders.compute_budget import set_compute_unit_price, set_compute_unit_limit + import os from anchorpy import Wallet, Provider from anchorpy.utils import token from anchorpy.utils.rpc import AccountInfo +import asyncio def get_local_keypair_pubkey(keypair_file="id.json", path=None): home = os.getenv("HOME") assert home != None - ## take default_path from .env + # take default_path from .env default_path = f"{home}/.config/solana/{keypair_file}" path = default_path if path is None else path - with open(path,'r') as f: + with open(path, 'r') as f: secret_data = json.load(f) - - print(f"Loaded keypair secrets from {path}") + + print(f"Loaded keypair secrets from {path}") keypair_owner = Keypair.from_bytes(secret_data) pubkey_owner = keypair_owner.pubkey() return keypair_owner, pubkey_owner - - def select_client(network: str = None, async_client: bool = False, default_network: str = "devnet-helius"): - - + default_urls = { "devnet": "https://api.devnet.solana.com", "dev": "https://api.devnet.solana.com", @@ -50,13 +50,13 @@ def select_client(network: str = None, async_client: bool = False, default_netwo "devnet-helius": "https://devnet.helius-rpc.com/?api-key=b57191c8-c14e-4ae2-83b6-1ab88c2f3605", "mainnet-helius": "https://mainnet.helius-rpc.com/?api-key=b57191c8-c14e-4ae2-83b6-1ab88c2f3605" } - - if network is None: - print("[WARN] Client network selected is None, set devnet from 'helius' as default") - network=default_urls[default_network] - - try: + if network is None: + print( + "[WARN] Client network selected is None, set devnet from 'helius' as default") + network = default_urls[default_network] + + try: if async_client: return AsyncClient(network) return Client(network) @@ -65,33 +65,75 @@ def select_client(network: str = None, async_client: bool = False, default_netwo raise Exception(f"Selecting RPC Solana Client Network {e}") -async def get_token_account_info(ata_address: str, network : str) -> AccountInfo: - connection = select_client(network=network, async_client=True) +async def get_token_account_info(ata_address: str, network: str) -> AccountInfo: + connection = select_client(network=network, async_client=True) wallet = Wallet.local() provider = Provider(connection, wallet) - pubkey_token_account = Pubkey.from_string(ata_address) + pubkey_token_account = Pubkey.from_string(ata_address) try: return await token.get_token_account(provider, pubkey_token_account) except Exception as e: raise Exception(f"Getting Token Account Info {e}") -async def sign_and_send_transaction(ix, signers, opts, network, async_client: bool = True): - - try: - client = select_client(network=network, async_client=async_client) - tx = Transaction().add(ix) - - print("Sending transactions with options", opts) - - tx_res = await client.send_transaction(tx, *signers, opts=opts) - - print("Client Response tx signature: ", tx_res) - print("Waiting for transaction confirmation") - - signature_status = await client.confirm_transaction(tx_res.value) - - print("Confirm Transaction Status Value:", signature_status) - return signature_status.to_json() - except RPCException as e: - raise RPCException(f"RPC exception happened: {e}") - + +async def sign_and_send_transaction(ix, signers, network, async_client: bool = True): + max_attempts = 3 + wait_time = 2 # seconds + + for attempt in range(1, max_attempts + 1): + try: + client = select_client(network=network, async_client=async_client) + + # Obtain a recent blockhash + recent_blockhash_resp = await client.get_latest_blockhash() + recent_blockhash = recent_blockhash_resp.value.blockhash + + # Create the transaction with the recent blockhash + tx = Transaction(recent_blockhash=recent_blockhash) + + PRIORITY_RATE = 500000 # MICRO_LAMPORTS + PRIORITY_FEE_IX = set_compute_unit_price(PRIORITY_RATE) + tx.add(PRIORITY_FEE_IX) + + # Set compute unit limit + cu_set = 200_000 + modify_compute_units = set_compute_unit_limit(cu_set) + tx.add(modify_compute_units) + + tx.add(ix) + + tx.fee_payer = signers[0].pubkey() + + try: + tx_res = await client.send_transaction(tx, *signers) + print(tx_res) + except Exception as e: + print(f"Error sending transaction: {e}") + raise + + if tx_res: + + print("Client Response tx signature: ", tx_res) + print("Waiting for transaction confirmation") + + try: + signature_status = await client.confirm_transaction(tx_res.value) + except Exception as e: + print(f"Error confirming transaction: {e}") + raise + + if signature_status: + + print("Confirm Transaction Status Value:", signature_status) + return signature_status.to_json() + except RPCException as e: + print(f"RPC exception happened: {e}") + except Exception as e: + print(f"An unexpected error occurred: {e}") + if attempt < max_attempts: + print( + f"Attempt {attempt} failed, retrying in {wait_time} seconds...") + await asyncio.sleep(wait_time) + else: + print("Max attempts reached, giving up.") + raise From e7f92b2af589d7e16891e7fd08719485461f5f73 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Mon, 15 Apr 2024 18:15:25 +0530 Subject: [PATCH 02/22] Add binary packages --- .../dist/pyxfluencer-1.2.2-py3-none-any.whl | Bin 0 -> 25367 bytes .../pyxfluencer-1.2.2-py3-none-any.whl | Bin 0 -> 25367 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl create mode 100644 src/api/marketplace/pyxfluencer-1.2.2-py3-none-any.whl diff --git a/solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl b/solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..47d59c0f7958d3426cd71eb8530bfded598f058f GIT binary patch literal 25367 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 b|Ft+%kcNj$9-yFzAnyW5fL~qf`oI4Jx#Iv+ literal 0 HcmV?d00001 diff --git a/src/api/marketplace/pyxfluencer-1.2.2-py3-none-any.whl b/src/api/marketplace/pyxfluencer-1.2.2-py3-none-any.whl new file mode 100644 index 0000000000000000000000000000000000000000..47d59c0f7958d3426cd71eb8530bfded598f058f GIT binary patch literal 25367 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 b|Ft+%kcNj$9-yFzAnyW5fL~qf`oI4Jx#Iv+ literal 0 HcmV?d00001 From e4031017fc3619d8ac6febba55bbfbf027bc2c39 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Mon, 15 Apr 2024 18:15:33 +0530 Subject: [PATCH 03/22] Fix order status update and cancellation logic --- src/api/marketplace/orders/tasks.py | 5 ----- src/api/marketplace/orders/views.py | 5 ++++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/api/marketplace/orders/tasks.py b/src/api/marketplace/orders/tasks.py index ecbedd9f..ee4d4d07 100644 --- a/src/api/marketplace/orders/tasks.py +++ b/src/api/marketplace/orders/tasks.py @@ -216,11 +216,6 @@ def check_order_status(pk): if is_completed: confirm_escrow.apply_async(args=[order.id]) - # Create a Order Tracking for the order - create_order_tracking(order=order, status=order.status) - # Send notification to business - create_notification_for_order(order=order, old_status='accepted', new_status='completed') - def tweet(text, client): try: diff --git a/src/api/marketplace/orders/views.py b/src/api/marketplace/orders/views.py index 6979fa6e..3746a928 100644 --- a/src/api/marketplace/orders/views.py +++ b/src/api/marketplace/orders/views.py @@ -659,6 +659,9 @@ def get_object(self, pk): except Order.DoesNotExist: return None + async def async_cancel_escrow(self, pk, order_status): + return await cancel_escrow(pk, order_status) + def put(self, request, pk): try: order = self.get_object(pk) @@ -760,7 +763,7 @@ def put(self, request, pk): ) else: # Retry the transaction - res = cancel_escrow(pk, order_status) + res = self.async_cancel_escrow(pk, order_status) if res: # Cancel all order items order_items.update(status=order_status) From 32b939e7c80863e4c935f53448d112c4fca87354 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 16 Apr 2024 12:01:27 +0530 Subject: [PATCH 04/22] Add re-try logic and dynamic cu limits --- solana-python/pyxfluencer/utils.py | 56 +++++++++++++++++------------- 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/solana-python/pyxfluencer/utils.py b/solana-python/pyxfluencer/utils.py index 21477ea9..4a12fe26 100644 --- a/solana-python/pyxfluencer/utils.py +++ b/solana-python/pyxfluencer/utils.py @@ -18,6 +18,7 @@ import asyncio + def get_local_keypair_pubkey(keypair_file="id.json", path=None): home = os.getenv("HOME") @@ -77,30 +78,44 @@ async def get_token_account_info(ata_address: str, network: str) -> AccountInfo: async def sign_and_send_transaction(ix, signers, network, async_client: bool = True): - max_attempts = 3 - wait_time = 2 # seconds + client = select_client(network=network, async_client=async_client) - for attempt in range(1, max_attempts + 1): - try: - client = select_client(network=network, async_client=async_client) + recent_blockhash_resp = await client.get_latest_blockhash() + recent_blockhash = recent_blockhash_resp.value.blockhash + recent_block_height = recent_blockhash_resp.value.last_valid_block_height + block_height = (await client.get_block_height()).value + attempts = 0 - # Obtain a recent blockhash - recent_blockhash_resp = await client.get_latest_blockhash() - recent_blockhash = recent_blockhash_resp.value.blockhash + print(recent_block_height, block_height, recent_block_height) + while True and attempts < 10: + try: + if block_height >= recent_block_height: + break + attempts += 1 + # Obtain a recent blockhash + print("Attempt", attempts) # Create the transaction with the recent blockhash tx = Transaction(recent_blockhash=recent_blockhash) + tx.add(ix) - PRIORITY_RATE = 500000 # MICRO_LAMPORTS - PRIORITY_FEE_IX = set_compute_unit_price(PRIORITY_RATE) - tx.add(PRIORITY_FEE_IX) + try: + simulated_transaction_resp = await client.simulate_transaction(tx) + print(simulated_transaction_resp) + except Exception as e: + print(f"Error simulating transaction: {e}") + print("Retrying...") + block_height = (await client.get_block_height()).value + continue # Set compute unit limit - cu_set = 200_000 + cu_set = simulated_transaction_resp.value.units_consumed + 1000 modify_compute_units = set_compute_unit_limit(cu_set) tx.add(modify_compute_units) - tx.add(ix) + PRIORITY_RATE = 500000 # MICRO_LAMPORTS + PRIORITY_FEE_IX = set_compute_unit_price(PRIORITY_RATE) + tx.add(PRIORITY_FEE_IX) tx.fee_payer = signers[0].pubkey() @@ -112,28 +127,21 @@ async def sign_and_send_transaction(ix, signers, network, async_client: bool = T raise if tx_res: - print("Client Response tx signature: ", tx_res) print("Waiting for transaction confirmation") try: - signature_status = await client.confirm_transaction(tx_res.value) + signature_status = await client.confirm_transaction(tx_res.value, last_valid_block_height=recent_block_height) except Exception as e: print(f"Error confirming transaction: {e}") - raise + print("Retrying...") + block_height = (await client.get_block_height()).value + continue # Continue to the next iteration of the loop if signature_status: - print("Confirm Transaction Status Value:", signature_status) return signature_status.to_json() except RPCException as e: print(f"RPC exception happened: {e}") except Exception as e: print(f"An unexpected error occurred: {e}") - if attempt < max_attempts: - print( - f"Attempt {attempt} failed, retrying in {wait_time} seconds...") - await asyncio.sleep(wait_time) - else: - print("Max attempts reached, giving up.") - raise From fb98cd4dfe9d237720e1f6e6d3fcdf57fdf4c934 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 16 Apr 2024 13:28:33 +0530 Subject: [PATCH 05/22] Add update notes for the package version change --- .../dist/pyxfluencer-1.2.2-py3-none-any.whl | Bin 25367 -> 25477 bytes solana-python/pyxfluencer/__init__.py | 7 +++++++ .../pyxfluencer-1.2.2-py3-none-any.whl | Bin 25367 -> 25477 bytes 3 files changed, 7 insertions(+) diff --git a/solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl b/solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl index 47d59c0f7958d3426cd71eb8530bfded598f058f..9765ee60899a7ed70533a9166be9112a1a12ed9e 100644 GIT binary patch delta 5230 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 WeJ%XEati>Uxto=Dcj&kLhy51;n2&@2 delta 5168 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 diff --git a/solana-python/pyxfluencer/__init__.py b/solana-python/pyxfluencer/__init__.py index f9a6cbba..b8d5d3b8 100644 --- a/solana-python/pyxfluencer/__init__.py +++ b/solana-python/pyxfluencer/__init__.py @@ -12,6 +12,13 @@ xfluencer_solana_python_client_version = "1.2.2" +################### +# Version: 1.2.2 +# Bump: Patch +# Updated: 16.04.2024 +# - add re-try logic +# - add priority_ffes instruction +# - add compute unit instruction ################### # Version: 1.2.1 # Bump: Patch diff --git a/src/api/marketplace/pyxfluencer-1.2.2-py3-none-any.whl b/src/api/marketplace/pyxfluencer-1.2.2-py3-none-any.whl index 47d59c0f7958d3426cd71eb8530bfded598f058f..9765ee60899a7ed70533a9166be9112a1a12ed9e 100644 GIT binary patch delta 5230 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 WeJ%XEati>Uxto=Dcj&kLhy51;n2&@2 delta 5168 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 From ae1ace17eecb0450181ea0b35df54407c11a9ed7 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 16 Apr 2024 13:28:40 +0530 Subject: [PATCH 06/22] Update pyxfluencer package to version 1.2.2 --- .github/workflows/deploy_api.yml | 2 +- .github/workflows/deploy_prod_api.yml | 2 +- src/api/marketplace/Dockerfile | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy_api.yml b/.github/workflows/deploy_api.yml index fb9dd1b9..c585a128 100644 --- a/.github/workflows/deploy_api.yml +++ b/.github/workflows/deploy_api.yml @@ -39,7 +39,7 @@ jobs: source venv/bin/activate pip3 install -r requirements.txt pip3 uninstall pyxfluencer -y - pip3 install pyxfluencer-1.2.1-py3-none-any.whl + pip3 install pyxfluencer-1.2.2-py3-none-any.whl python3 manage.py migrate python3 manage.py collectstatic -link --noinput echo "Stopping previous processes..." diff --git a/.github/workflows/deploy_prod_api.yml b/.github/workflows/deploy_prod_api.yml index 47286f12..1b75bbbd 100644 --- a/.github/workflows/deploy_prod_api.yml +++ b/.github/workflows/deploy_prod_api.yml @@ -41,7 +41,7 @@ jobs: source venv/bin/activate pip3 install -r requirements.txt pip3 uninstall pyxfluencer -y - pip3 install pyxfluencer-1.2.1-py3-none-any.whl + pip3 install pyxfluencer-1.2.2-py3-none-any.whl python3 manage.py migrate python3 manage.py collectstatic -link --noinput echo "Stopping previous processes..." diff --git a/src/api/marketplace/Dockerfile b/src/api/marketplace/Dockerfile index 702fb655..12beda26 100644 --- a/src/api/marketplace/Dockerfile +++ b/src/api/marketplace/Dockerfile @@ -13,8 +13,8 @@ COPY ./requirements.txt /api/ RUN pip install --upgrade pip \ && pip install -r requirements.txt -COPY ./pyxfluencer-1.2.0-py3-none-any.whl /api/ -RUN pip install pyxfluencer-1.2.0-py3-none-any.whl +COPY ./pyxfluencer-1.2.2-py3-none-any.whl /api/ +RUN pip install pyxfluencer-1.2.2-py3-none-any.whl # copy project COPY . /api From 1bf62e81f9175218320f9b0674bb4896492e4b00 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 16 Apr 2024 14:52:45 +0530 Subject: [PATCH 07/22] Add priority fees to sign_and_send_transaction function --- solana-python/pyxfluencer/__init__.py | 30 ++++++++++++++++++++------- solana-python/pyxfluencer/utils.py | 5 ++--- src/api/marketplace/orders/tasks.py | 16 +++++++++++--- 3 files changed, 37 insertions(+), 14 deletions(-) diff --git a/solana-python/pyxfluencer/__init__.py b/solana-python/pyxfluencer/__init__.py index b8d5d3b8..e4cb9f33 100644 --- a/solana-python/pyxfluencer/__init__.py +++ b/solana-python/pyxfluencer/__init__.py @@ -84,6 +84,7 @@ class EscrowValidator: network: str = "https://api.devnet.solana.com" percentage_fee: int = 0 processing_spl_escrow: bool = False + priority_fees: int = 0 async def cancel(self): return await validate_escrow(self.validator_authority, @@ -93,7 +94,9 @@ async def cancel(self): self.order_code, self.network, self.percentage_fee, - self.processing_spl_escrow) + self.processing_spl_escrow, + self.priority_fees + ) async def deliver(self): return await validate_escrow(self.validator_authority, self.business_address, @@ -102,7 +105,9 @@ async def deliver(self): self.order_code, self.network, self.percentage_fee, - self.processing_spl_escrow) + self.processing_spl_escrow, + self.priority_fees + ) # NON SPL escrow @@ -111,7 +116,9 @@ async def validate_escrow_to_cancel(validator_authority: Keypair, influencer_address: str, order_code:int, network: str = "https://api.devnet.solana.com", - percentage_fee: int = 0): + percentage_fee: int = 0, + priority_fees: int = 0 + ): """ Args: @@ -132,7 +139,9 @@ async def validate_escrow_to_cancel(validator_authority: Keypair, order_code, network, percentage_fee, - processing_spl_escrow=False) + processing_spl_escrow=False, + priority_fees=priority_fees + ) # NON SPL escrow async def validate_escrow_to_delivered(validator_authority: Keypair, @@ -140,7 +149,9 @@ async def validate_escrow_to_delivered(validator_authority: Keypair, influencer_address: str, order_code:int, network: str = "https://api.devnet.solana.com", - percentage_fee: int = 0): + percentage_fee: int = 0, + priority_fees: int = 0 + ): """_summary_ Args: @@ -161,7 +172,9 @@ async def validate_escrow_to_delivered(validator_authority: Keypair, order_code, network, percentage_fee, - processing_spl_escrow=False) + processing_spl_escrow=False, + priority_fees=priority_fees + ) async def validate_escrow(validation_authority: Keypair, @@ -171,7 +184,8 @@ async def validate_escrow(validation_authority: Keypair, order_code: int, network: str = "https://api.devnet.solana.com", percentage_fee: int = 0, - processing_spl_escrow: bool = False): + processing_spl_escrow: bool = False, + priority_fees: int = 0): business_pk = Pubkey.from_string(business_address) influencer_pk = Pubkey.from_string(influencer_address) @@ -222,7 +236,7 @@ async def validate_escrow(validation_authority: Keypair, ix = validate_escrow_spl(args, accounts, program_id=PROGRAM_ID) try: - tx_resp = await sign_and_send_transaction(ix, signers, network) + tx_resp = await sign_and_send_transaction(ix, signers, network, priority_fees=priority_fees) if tx_resp: print(f"Escrow validation status: {tx_resp}") return tx_resp diff --git a/solana-python/pyxfluencer/utils.py b/solana-python/pyxfluencer/utils.py index 4a12fe26..a900c258 100644 --- a/solana-python/pyxfluencer/utils.py +++ b/solana-python/pyxfluencer/utils.py @@ -77,7 +77,7 @@ async def get_token_account_info(ata_address: str, network: str) -> AccountInfo: raise Exception(f"Getting Token Account Info {e}") -async def sign_and_send_transaction(ix, signers, network, async_client: bool = True): +async def sign_and_send_transaction(ix, signers, network, async_client: bool = True, priority_fees: int = 0): client = select_client(network=network, async_client=async_client) recent_blockhash_resp = await client.get_latest_blockhash() @@ -113,8 +113,7 @@ async def sign_and_send_transaction(ix, signers, network, async_client: bool = T modify_compute_units = set_compute_unit_limit(cu_set) tx.add(modify_compute_units) - PRIORITY_RATE = 500000 # MICRO_LAMPORTS - PRIORITY_FEE_IX = set_compute_unit_price(PRIORITY_RATE) + PRIORITY_FEE_IX = set_compute_unit_price(priority_fees) tx.add(PRIORITY_FEE_IX) tx.fee_payer = signers[0].pubkey() diff --git a/src/api/marketplace/orders/tasks.py b/src/api/marketplace/orders/tasks.py index ee4d4d07..630ced94 100644 --- a/src/api/marketplace/orders/tasks.py +++ b/src/api/marketplace/orders/tasks.py @@ -63,12 +63,16 @@ def cancel_escrow(order_id: str, status: str): escrow=escrow, transaction_type='cancel_escrow' ) + priority_fees = int(Configuration.objects.get( + key='priority_fees').value) + if order_currency.currency_type == 'SOL': result = asyncio.run(validate_escrow_to_cancel(validator_authority=val_auth_keypair, business_address=buyer_primary_wallet.wallet_address_id, influencer_address=influencer_primary_wallet.wallet_address_id, order_code=order.order_number, network=RPC_ENDPOINT, + priority_fees=priority_fees )) elif order_currency.currency_type == 'SPL': result = asyncio.run(validate_escrow( @@ -78,7 +82,8 @@ def cancel_escrow(order_id: str, status: str): target_escrow_state=EscrowState.CANCEL, order_code=order.order_number, network=RPC_ENDPOINT, - processing_spl_escrow=True + processing_spl_escrow=True, + priority_fees=priority_fees )) # Update all the values of the on_chain_transaction with result.value[0] result_dict = json.loads(result) @@ -143,13 +148,17 @@ def confirm_escrow(order_id: str): escrow=escrow, transaction_type='confirm_escrow' ) + priority_fees = int(Configuration.objects.get( + key='priority_fees').value) + if order_currency.currency_type == 'SOL': result = asyncio.run(validate_escrow_to_delivered(validator_authority=val_auth_keypair, business_address=buyer_primary_wallet.wallet_address_id, influencer_address=influencer_primary_wallet.wallet_address_id, order_code=order.order_number, network=RPC_ENDPOINT, - percentage_fee=platform_fees + percentage_fee=platform_fees, + priority_fees=priority_fees )) elif order_currency.currency_type == 'SPL': result = asyncio.run(validate_escrow( @@ -160,7 +169,8 @@ def confirm_escrow(order_id: str): order_code=order.order_number, network=RPC_ENDPOINT, percentage_fee=platform_fees, - processing_spl_escrow=True + processing_spl_escrow=True, + priority_fees=priority_fees )) # Update all the values of the on_chain_transaction with result.value[0] From e936d6dfebd3d592b060812746d69f11addd887a Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Tue, 16 Apr 2024 15:19:01 +0530 Subject: [PATCH 08/22] Remove fee_payer --- solana-python/pyxfluencer/utils.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/solana-python/pyxfluencer/utils.py b/solana-python/pyxfluencer/utils.py index a900c258..cf89395d 100644 --- a/solana-python/pyxfluencer/utils.py +++ b/solana-python/pyxfluencer/utils.py @@ -116,8 +116,6 @@ async def sign_and_send_transaction(ix, signers, network, async_client: bool = T PRIORITY_FEE_IX = set_compute_unit_price(priority_fees) tx.add(PRIORITY_FEE_IX) - tx.fee_payer = signers[0].pubkey() - try: tx_res = await client.send_transaction(tx, *signers) print(tx_res) From 6eb863493303fc113ea32237e9c2b8d30d576b50 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 17 Apr 2024 11:36:49 +0530 Subject: [PATCH 09/22] Add binary package files --- .../dist/pyxfluencer-1.2.2-py3-none-any.whl | Bin 25477 -> 25488 bytes .../pyxfluencer-1.2.2-py3-none-any.whl | Bin 25477 -> 25488 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl b/solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl index 9765ee60899a7ed70533a9166be9112a1a12ed9e..1cc36d23fd7f8c9858efefbd7a01946083aca58b 100644 GIT binary patch delta 5188 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 Z{2$FiDcrpU%=~xU|L!f&8|yzA{{oOfXX^j} diff --git a/src/api/marketplace/pyxfluencer-1.2.2-py3-none-any.whl b/src/api/marketplace/pyxfluencer-1.2.2-py3-none-any.whl index 9765ee60899a7ed70533a9166be9112a1a12ed9e..1cc36d23fd7f8c9858efefbd7a01946083aca58b 100644 GIT binary patch delta 5188 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 Z{2$FiDcrpU%=~xU|L!f&8|yzA{{oOfXX^j} From e32237ed7d5521a45c9349a81798faba12523ed0 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 17 Apr 2024 11:37:08 +0530 Subject: [PATCH 10/22] Update deploy files and dockerfile to find and install latest pyxfluencer package --- .github/workflows/deploy_api.yml | 2 +- .github/workflows/deploy_prod_api.yml | 2 +- src/api/marketplace/Dockerfile | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/deploy_api.yml b/.github/workflows/deploy_api.yml index c585a128..3e2e3c59 100644 --- a/.github/workflows/deploy_api.yml +++ b/.github/workflows/deploy_api.yml @@ -39,7 +39,7 @@ jobs: source venv/bin/activate pip3 install -r requirements.txt pip3 uninstall pyxfluencer -y - pip3 install pyxfluencer-1.2.2-py3-none-any.whl + latest_file=$(ls -v | grep 'pyxfluencer-[0-9.]*-py3-none-any.whl' | tail -n 1) && pip install $latest_file python3 manage.py migrate python3 manage.py collectstatic -link --noinput echo "Stopping previous processes..." diff --git a/.github/workflows/deploy_prod_api.yml b/.github/workflows/deploy_prod_api.yml index 1b75bbbd..edbdf38b 100644 --- a/.github/workflows/deploy_prod_api.yml +++ b/.github/workflows/deploy_prod_api.yml @@ -41,7 +41,7 @@ jobs: source venv/bin/activate pip3 install -r requirements.txt pip3 uninstall pyxfluencer -y - pip3 install pyxfluencer-1.2.2-py3-none-any.whl + latest_file=$(ls -v | grep 'pyxfluencer-[0-9.]*-py3-none-any.whl' | tail -n 1) && pip install $latest_file python3 manage.py migrate python3 manage.py collectstatic -link --noinput echo "Stopping previous processes..." diff --git a/src/api/marketplace/Dockerfile b/src/api/marketplace/Dockerfile index 12beda26..9c9a1761 100644 --- a/src/api/marketplace/Dockerfile +++ b/src/api/marketplace/Dockerfile @@ -13,13 +13,13 @@ COPY ./requirements.txt /api/ RUN pip install --upgrade pip \ && pip install -r requirements.txt -COPY ./pyxfluencer-1.2.2-py3-none-any.whl /api/ -RUN pip install pyxfluencer-1.2.2-py3-none-any.whl - # copy project COPY . /api +# find the latest .whl file and install it +RUN LATEST_WHL=$(ls -v | grep 'pyxfluencer-[0-9.]*-py3-none-any.whl' | tail -n 1) && pip install $LATEST_WHL + # Make ports available for dev EXPOSE 8000 -CMD ["python", "manage.py", "runsslserver", "0.0.0.0:8000"] +CMD ["python", "manage.py", "runsslserver", "0.0.0.0:8000"] \ No newline at end of file From 90a8a970cf04aa9f0e46904a57a8462fff10e87b Mon Sep 17 00:00:00 2001 From: Ruben Colomina Date: Wed, 17 Apr 2024 06:55:09 +0100 Subject: [PATCH 11/22] fix launch validate to use directly the package --- solana-python/launch_validate.py | 47 ++++++++------------------------ 1 file changed, 11 insertions(+), 36 deletions(-) diff --git a/solana-python/launch_validate.py b/solana-python/launch_validate.py index 6f69ae33..97d75119 100644 --- a/solana-python/launch_validate.py +++ b/solana-python/launch_validate.py @@ -1,8 +1,5 @@ import asyncio -from solders.pubkey import Pubkey -from solana.rpc.types import TxOpts - from pyxfluencer.instructions import validate_escrow_sol from pyxfluencer.utils import get_local_keypair_pubkey from pyxfluencer.utils import sign_and_send_transaction @@ -28,7 +25,7 @@ async def main(target_state): print(len(msg)*"*") configuration = load_configuration() - network = configuration["network"] + network = configuration["rpc"]["mainnet"] print("nework -->", network) @@ -36,47 +33,25 @@ async def main(target_state): validation_authority, validation_authority_pk \ = get_local_keypair_pubkey(path=keypair_paths.validation_authority) - _, business_pk = get_local_keypair_pubkey(path=keypair_paths.bussines_keypair) + _, business_pk = get_local_keypair_pubkey() #path=keypair_paths.bussines_keypair) _, influencer_pk = get_local_keypair_pubkey(path=keypair_paths.influencer_keypair) - + # check configuration matches local keypairs assert str(validation_authority_pk) == configuration["platform"] assert str(business_pk) == configuration["business"]["pubkey"] assert str(influencer_pk) == configuration["influencer"]["pubkey"] - order_code = configuration["order_code"] - SEEDS = [b"escrow", - bytes(business_pk), - bytes(influencer_pk), - bytes(str(order_code),"UTF-8") - ] - escrow_pda, _ = Pubkey.find_program_address(SEEDS, PROGRAM_ID) - print("Escrow SOL PDA",escrow_pda) - - # state 1 = unlock funds so business can re-fund - # state 2 = unlock funds so influencer can claim - # percentage_fee is passed is passed always (both cases cancel and deliver) - - args = {"target_state":target_state.value, "percentage_fee": 0 } + from pyxfluencer import EscrowValidator - accounts = { - "validation_authority": validation_authority_pk, - "influencer":influencer_pk, - "business":business_pk, - "escrow_account":escrow_pda - } - - opts = TxOpts(skip_confirmation = True, - skip_preflight = True, - preflight_commitment="processed") + escrow_validator = EscrowValidator(validation_authority, business_pk, influencer_pk, order_code, network) + if target_state == TargetState.CANCEL: + res = await escrow_validator.cancel() + else: + res = await escrow_validator.deliver() - ix = validate_escrow_sol(args, accounts, program_id=PROGRAM_ID) - - signers = [validation_authority] - - await sign_and_send_transaction(ix, signers, opts, network) + print("Results from Validator",res) import argparse @@ -93,5 +68,5 @@ async def main(target_state): exit() -asyncio.run(main(TargetState.DELIVERY)) +asyncio.run(main(target_state)) \ No newline at end of file From 91e1dd32ec4f0bcb0eb5c15114b2b1ca08c9183b Mon Sep 17 00:00:00 2001 From: Ruben Colomina Date: Wed, 17 Apr 2024 07:26:14 +0100 Subject: [PATCH 12/22] return custom error if simulation increase budget to 50 % --- solana-python/pyxfluencer/utils.py | 40 ++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/solana-python/pyxfluencer/utils.py b/solana-python/pyxfluencer/utils.py index cf89395d..3f8be5a3 100644 --- a/solana-python/pyxfluencer/utils.py +++ b/solana-python/pyxfluencer/utils.py @@ -1,12 +1,14 @@ +import json +from typing import List from solders.keypair import Keypair from solders.pubkey import Pubkey -from solana.rpc.api import Client -from solana.rpc.async_api import AsyncClient +from solana.rpc.api import Client # type: ignore +from solana.rpc.async_api import AsyncClient # type: ignore import json -from solana.transaction import Transaction -from solana.rpc.core import RPCException +from solana.transaction import Transaction # type: ignore +from solana.rpc.core import RPCException # type: ignore from solders.compute_budget import set_compute_unit_price, set_compute_unit_limit @@ -16,8 +18,9 @@ from anchorpy.utils import token from anchorpy.utils.rpc import AccountInfo -import asyncio - +from .errors.custom import from_code +from solana.rpc.api import SimulateTransactionResp +from solders.transaction_status import TransactionErrorInstructionError def get_local_keypair_pubkey(keypair_file="id.json", path=None): @@ -77,7 +80,7 @@ async def get_token_account_info(ata_address: str, network: str) -> AccountInfo: raise Exception(f"Getting Token Account Info {e}") -async def sign_and_send_transaction(ix, signers, network, async_client: bool = True, priority_fees: int = 0): +async def sign_and_send_transaction(ix, signers, network, async_client: bool = True, priority_fees: int = 0, extra_rpcs: List[str] = None): client = select_client(network=network, async_client=async_client) recent_blockhash_resp = await client.get_latest_blockhash() @@ -86,7 +89,7 @@ async def sign_and_send_transaction(ix, signers, network, async_client: bool = T block_height = (await client.get_block_height()).value attempts = 0 - print(recent_block_height, block_height, recent_block_height) + print("Recent Block Height", recent_block_height, "Block Heigth",block_height) while True and attempts < 10: try: @@ -100,16 +103,26 @@ async def sign_and_send_transaction(ix, signers, network, async_client: bool = T tx.add(ix) try: - simulated_transaction_resp = await client.simulate_transaction(tx) - print(simulated_transaction_resp) - except Exception as e: - print(f"Error simulating transaction: {e}") + simulated_transaction_resp: SimulateTransactionResp = await client.simulate_transaction(tx) + if simulated_transaction_resp.value.err is not None: + error_tx: TransactionErrorInstructionError = simulated_transaction_resp.value.err + error_tx_json : str = error_tx.to_json() + error_tx_dict : dict = json.loads(error_tx_json) + error: int = error_tx_dict[1]["Custom"] + if error >= 6000: + return from_code(error) + else: + print("Simulation LLooks OK") + except (KeyError, Exception) as e: + print(f"Error simulating transaction: {e}") print("Retrying...") block_height = (await client.get_block_height()).value continue # Set compute unit limit - cu_set = simulated_transaction_resp.value.units_consumed + 1000 + cu_budget:int = simulated_transaction_resp.value.units_consumed * 15 / 10 # increase 50% of simulated CU's + max_budget = 200_000 + cu_set = min(cu_budget, max_budget) modify_compute_units = set_compute_unit_limit(cu_set) tx.add(modify_compute_units) @@ -121,6 +134,7 @@ async def sign_and_send_transaction(ix, signers, network, async_client: bool = T print(tx_res) except Exception as e: print(f"Error sending transaction: {e}") + raise if tx_res: From 7fcc3c4bbffb46dfee25f669d1cc8cb4070e676a Mon Sep 17 00:00:00 2001 From: Ruben Colomina Date: Wed, 17 Apr 2024 07:40:25 +0100 Subject: [PATCH 13/22] merge and add comment to release 1.2.2 update wheel 1.2.2 --- .../dist/pyxfluencer-1.2.2-py3-none-any.whl | Bin 25488 -> 35144 bytes solana-python/pyxfluencer/__init__.py | 55 ++++++++++-------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl b/solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl index 1cc36d23fd7f8c9858efefbd7a01946083aca58b..0620692ca7b1f631b178d7f2d69650f31eff1b20 100644 GIT binary patch delta 14153 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 K@KOIi-~J!(gPeZ= delta 8116 zcmZvB1yqz#xAxFIq_p(VjihvlG}54y(kVG0!T%ITG)>(7b-p_vCefBx)-DmIViA9X=Mj%yJLP912008I!d+r#$kUPf9SyTXEjTS0O zLj}>-cbpf(^SLM^Eo7!ainOuxvco~1dFB*mGT!lWjA#)Fk>eE*Uti-TYsl-fABWM| zob%gz5pU7)lKTZpaol|ELc4O7oi^dR$ctdan%e?~%?-!0@q4MVWWZBhMZ5w#UwdP;u? zW4oW=Hal5c;>$zK3~`1&0&3$QuGhn9i}wdEl#2*!H!a(d8!qVUET^HZ0hNh-!r)Jm za#^lwQmdVn4Dm!`!M!4_7AR=AY{7HdPn1ytgZmm1jb)@qqO>%Cyr?niQ7A6xW849_ zmfd)0l5ul2%xFVhXgy1^@jh97Uc{Y{#{9m_{62AVZ*g(ds7zILY*3sRDJyRtp88j< zl#UZcO^hCmZqd{XDkR2G;_TVVq!oWm3|a;HLrnhSCf;78MA6TcY5~fTXzOfi-nYy{ z2b&NEM~9_wWBIa;pM%A%E1kc<4JR&V+a4#^ka@uwaXrhM1FV9FuyXIbOnO>~2J3g& zFY9bugV}@>1S=t>TxYcQHIrca4C{kPn$0{yAgmA^fo(*IVwdc^(|+IC%*v(8-}rW$ zgf93irx<=xr!~W?4hxx^-ImOUit;Q=t$fij6ZxY^|L99D8WnY>PjRSEmnyu@b+*a6 z@GSx{%XyzCkyxRT4VWr;O(%*$2HDA4$TgEYv7J$vwzY(HGxbBD1AfYDTCIsB`Ql;u z=%Iov>#jkw93p9v2lm`!w4(C;MWu5F;2DHQ)fd$GnK#$>CJ!4XuHjKgcOF6_;`Nki z5kM!in(?dBJ*albm!yZc>Aeku)P}LyUx=`A!+z(ZGZvZPGX~odm?vI9)X!t(n?iXGbEih)20|SNM)iWwfYeKG2X&H|vO7zIuSIA!=usYM!XyzDBTQi^eHBStL$h<8^O(OCB z$mBE69SD+dpu8!&D1n73hIL9sRmWWZTk62-Bj%Ps*3Ejlv_bTYhGm40rhM0JxClR9 zBkY3_XYJM9pC>N*jLtih&Qsb$glfG>jrN^?6@YT9UyO42YC;Ia^D1VVb;-C(^4mq0 z0_|hna+iUxYkbF1y*PGfbrHA`ZM`#C>bh3#2zy@@3%W9Pv+Q>=yOV%3souVc%txTb zPLfREO29~uOy+;{MClwqom04JLG&5=C=u#xo8d`2KJN1Ti-t9wkgHmtOZ(&8o*=Gs`C;VE$}U?MD~p? zPRgl-S1UvD_i6GesFfc#m^fDZwp!9mS%940di#_AkuAiUtU*3ShZ1j&mEJ3GRg8J~ z^tVp^mO_)ExQD1!<&9B#aJ~I{nI8dt#M@(m-b$w!%O@Z$t5K@Ghx%npR1C>orIG0} z7u@*XW8J}+T@92|y{_qJbNF%BgI^+2_%8g;io0EvBKT;Z+pygmt6w$fD0BEGgLyI^ zy7ztint5IKI=(Pb-!%h=PG--(v+dH{f#jI;Y@R^iHG*(0` zzFyuV{C5UyXYtqT^#9#s3(tox@B#hK6ie_YEuwmC=t{xU;v_s%5&@u+e#DScJ$uJ_ z0lfPI{aZ%YpJgQ zzURflah)J5ilr@sUJ@banys_$yFPrw>2Rg92G2Ai!=!qB|3pIJaYv{QvaZmk8}WLw zNX&X{tRfK9VHltHw2r>YBoMMc_QPLWyn3USKnNPAt$OI(@Qgc_M>TcfYWBF7k-m!f zY&fpmZSiF+XUc8p%L1BU-%=TqkDxEw9v3$xL!4GVlo!agjsYO3ei%9a*y}B#_2Lv;Q`l zCeQMFI!#C!1|rFOO++W(&@c*w8Yv{Wt)t_r#G-1TtBHA5h`Sk z0p2HbII@aTXQ8j^^1gLLY%~IGIHbKkI$|E=yv?eaq<`7v2cuNNUI~q=H50-OE2`?V z2DQ^&A`vS@z9}W;H;n|BjZm{cA98bljSq~jPJIhX;yh%)H|@?J<5-*p5%&Y`f@{R5!;dmE?K!Z&EjU1zONe3ba8Jp=YgaZ{bC*f!M+h{0- zUUKP61q%FHSEn(Y&u>&my!&DCxWqdb@o`mp1HaVo%Jrk{N2Lu>VhVEkn-wvFZ z%%;Is+q^tB23T=tW1$#zLZTnE=zb|8UuXw&}p+ND0I|TLIfp0ASwmMcNuexlmDvCOCXxY1>y-=IK3SrWY$JIqX=!xd2 zSJ%4OB)gsS{E1FfyFz2f!%T6KT9|i#q*B;KoGgh*7^Uvv9@$}tjU6<^ouY0#8%;ZOkU^0pJR2`r zKlC(}kk+*(SiJ_UJi4a>b|$OI+|}&}KR0W92l`#GTpFvigeTKiN>!HWuxVGaJ1WpW z7x`w!ZCr3684_LsoAz(|#3I&Ymn=w$RJ%jvDiZz;2d}wvV(8REQg4eg?8Tt!gYh#6 zNTd5i!&Dd+L+8a1>~G}P#Hxnk_aJgn9PL2Yge90O5b)e0FjP8sC(?=aaLgYMU2L*( zU(G&1MZnw8wSh~ZM!0tcWGL-XrmI(?k@*8vue}m~5+eIWkN>vR`6Z8U2Bx?sFjaWC1$?(NPBefTl;n5EQ zbZ?8A3|m1;-2|LzS5sZXTPBbcN2Azzoz1ij6<&+>>Cx_A$i`m9rJV&BB1i7&nHNeJ ze8{F@5s=%K+U{?7lw>ruBO*Q4xCf-+O8y&|_ioKBXJW57e5OJdwo;c96eW;i@7ul? zP|Ga)B35=B=IV&~!zkkWjhrGanxJQ2^&Ik%Ubc@pm>92P-F2gJ_!AD1fsKjUAj|Crm8rzwrO&w|i%xs%yw4KkE3L2#zvx>2DmWZg<9bk7PEXA( zfJ7yYE>~wwx5}5EXHr31oO2S%7;GU6FG&R@<~%FeWUwbLUaEb&?^&2QbsIbM=z&3DQUjGE6g#iCBUmCmbcntczTE15_eJtFmAY0fIL0r*Wr?ix=lk+SF?S} z$#vv{2gF(k3qBb&a}97;t}t^=KO29Y>ZCIem_+;;gesZ4QsjrRt2GuuOSuBK}@U!2|XWszE(c=zn9xG0qp zzDfiJyyl?jJIEM+k-eQ=*v#~jt)|UQg*EnK{UZ46y|4TeSIdf`K`_OrLR&@2>PM^_ z>iviswR4WRYh+>e_a?g7ejnx#LXmtUc+l%^x8!IVtsb3p(8;W zqrJ3e=EawHHDrp8CWjlQ7`Sm))irQTPJabygTnk;9 zv_ad$vs!vsEZRhAwpG#n1u>PLif~h-Zvd0NJW6=qUU195l`_&=9$XEB^6`7*8%8kK-9K+nqORyDMxd8kF$0! z%O*{^pA%wPfn#!ThA7uNt|| zw6qxmdor(Cv|eDy%D&7XaL*Y;O0P3#L$>3DAO~vE*Yzbu(AO;yw+I5V9r|1{&KLwf38 z$fT`PV>8LWl$k}X}^KjxKlI@>M+_+jO~1vG3`cwXBVI zDdh7_W(4y|Yb%-&fIh2vsL?=8U0jk+SLW>|8!Kl`2p2KhSRPHe@^p1cDK3NOexRpK zy$|5~Orp>xQ*e=izh{{!9tyu(;U3!+( zP^!M~kd+jb$Yk6X>cv?FTrpMDLOY!+Ri5(p zS(bT%qj<5QZVdv~&2=$|(W?6vK=5-J_7o}O2~KnQzoM_8V*!n`oSPzO1rW>ym*Cw4 zD~lDI@`QRAAgl|6B=(+@x<^}cZ%m^BBW5p745c-icgX}qJ6GGFts*h1|*D zWD^G}R}`^76cM5%4HBK;!%pEXOP8K~y%LTsK&(~m{yLP8%L8;$F^%s9s3RO8jg#hAUX)eMb90%|rQfc`<#=oGxXHgQ{wD+WO&1E0L#O za)=*d&{N_7Ea@EoCpT%*My3h3wAan+~j=DK@^|19hF=>RRL)j zn|AYrpSSQi*Hw`6FBoQ}b-7xl-e7DhB@44Lu9**Tb{R9S&og7l-(gGnm~<53c*vB{ z0<(leW{H3pj>Xgmkmo8rECEf6PV~(dfw4;McBJ;?~jIT;r8S_2KkP_YOm-mF;eCH$)7LYj(HpX3DFMqI%V482zAOeh%ghPt&)tT)83`uBVO45m;rF~dU z-52(2lG$!$QYTMCK4y3PDa?xD*}4YlfrZX+a@G!$Qc_QA7^>`zmeJm2W=!Z<;!lyE zSL_Sn7Wa{>wh-HFr|u`F@1+C~$z{xcIyB z*Tb6KvW_&tq&6{Q0jS+%eJ{-U(sQPuzk&GqS}zI51`{KOiSFL}<*xS21%%TWk}J!^ zZw*!9JL!UxMZm%y2VV;|TFBh%H}JQRnlUaZ1lMAlXd$X9YC9t@ep;rGuKhm3H^J@& zp%tQ#E6Uaf4X6HC9rK=eBVq~3OIVm(B?~j@3JYC$ zTM%`zSEt^WYm41#B)hr~C1|t1ino6|U+?b@u5bJnzx!a^)YKSP1`%V~j3W6cYUCs8 z*_xdez6uE&{}Q%5xwyVd*n|((weY;XncUR{=ittdA3~3BM~Bb~J~d2;rZ?XUwT(^{ zGEI`uQCBRHP2HlWmiO4Fk8ZB6T>j+R^Za$GYS&&TmV9-es*Icc>{q;(^NJS9n*I z#mxM+(VjP^e;@c%M$p;YddW+IVXxqU0v~og6ffxW?nsKLhfbhsXMZ=Oq3mrGhDBQB z*mEKD#nXrXzWDsPH{1ffl-|JW?mvST>SRw1Epg{T=9%Iffv&m>AUbnH$-tWUe~@I& zm8eI^06+r#>O=Pj3DJ;~QPYr(i0`h*(IJxibx&*sZErzB;ibcfHj%~$;a$acOusH$ zFx;#&?l%liEb(qz`c*v)V(b1MIetG()3f^#-QRJa5b*+!zUT)`)AS50zj$qf*3BD; zIaq++qClL(SS0Zsfn}+~Tf2d(L;cyYe8Xy$x65ujYY!CX6@jK|qfD&6;!J8_xj_1cB4l@B z#;i~bU!g*rp4Ybs1or(HBJHHo%AoYcz{kE4Ch^1x@(KUkSoDJuDJR1s6!$pN#1~A( z`5hR!=uoPc!s3|yGI=ubk~9c_te=bq=ZOC9TYUIs8Hs31~w z@3aRC(=Cnr6wy38nP=VC$wNtKTYjonC?y*j4B5(7b&SA2#BYAeu(}crCL6&W6P02P zGjY`F<6hZn@f|B@qbpH3A&%mMVcdk~fE4qmrs9WBw@tSZ zz6>{z3Ar&GxyY7w;VA*p;i|na8$B6@m_tQV_3B=YP8FByjg3yjIx7;VSx2lZV{)K~ z^4R(HfSnts5#*uRwD@@3W|(sSO1}R{1`W2%s34s;IdFT}K3rU;yj*>UZhvoa`cx7{ zp+>Ro9fD6gES(;N$=4v&A%v&Mdl-Hl)z%FupFILEq2N6D){IKEDxm(ts8kgByctZ>;w28?TO)s}K_O;!Y;I9s^4rrK*?LEMyv@ z)ZM(QRyGEO=pJR%l8vwOP(Ld|_oG2cw%hVk(C!mIgT*DFQW+O(wI|pv@KM`(RBmOs zijyhoO7l?e?AR=8X}S3g1loRHQiwd`j0x~BpcJIN%QYqS?DW4S!Xmv3YHDUcLrR_2 zKm8R_3GPm7xO{Po^ykm))$_-9bAkOw zpO$k}H4o^e(>In}M_Tn?#ixw1X@crH4#x4U-F;JIV|Z!L#Fp29^=<)~68ETV>PiTR zL`eU?fARnT68QJ@KTob704hO44juHx{#zgVk|F2%0nwmWzDzX#x7Ya}GXNmh?;9Gt z^GQboFE91vRi!FCpcww4t{?ya82^KU z|K|E-{Q*9sf!DWstw7aHE;y(N2mo;W1BxbugFw(06ioL2xxhb0qRK+XnMeSD2NnQ8 z|Bn$S>7xsG!odGyWK-B27=r)+_`?mU{xRC6fR6aHBf)EG=!5^Ckkmef3!XqpAx|Dx z3}!$(-h*5HhA)KjAIoi~N1)fICyy&`Q`%{1fdg(30RV=7fVk|?Z=ZM{*=&8sg_Pld zWq4DW?jI072Xw`p0-B+T3N3`-K8DBA-y*98?ldPnME`~-jqAU_xX_OQ_>cP;9q`Bb zLZ1Ip5J49L{%-W{qr&vrqk=w=hz4Hq>-FuwJEemA5rhH&F#qF6gTN!OClDLz6Nvkl zI`9uQweWu_s2`m>{y{S)4rkzkuY~0vhTG?lz#Vcts3iQb!S@U*74(O}PyA8g8ASdV zuvSbA#tk@w2Il`hA`6m_z@Z?r$5-L|Y%$-!<4_2X1JggRLY9RCS)kmXvHx@=pc0?| zyhio~l*Wn&8UYvnX@sOc3a4Mfh3wE}8^1f760%>7il4e`$;gZ3p4!7k~{P{{})y`;kT-jPuWV{6F`Y|FNX+ewo@( UU Date: Wed, 17 Apr 2024 12:22:26 +0530 Subject: [PATCH 14/22] fix typo --- .../dist/pyxfluencer-1.2.2-py3-none-any.whl | Bin 35144 -> 25902 bytes solana-python/pyxfluencer/utils.py | 2 +- .../pyxfluencer-1.2.2-py3-none-any.whl | Bin 25488 -> 25902 bytes 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl b/solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl index 0620692ca7b1f631b178d7f2d69650f31eff1b20..609d0d81b337aeb53b5c738406e40a82eb1ad871 100644 GIT binary patch delta 6540 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 delta 12105 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 diff --git a/solana-python/pyxfluencer/utils.py b/solana-python/pyxfluencer/utils.py index 3f8be5a3..9f32b70f 100644 --- a/solana-python/pyxfluencer/utils.py +++ b/solana-python/pyxfluencer/utils.py @@ -112,7 +112,7 @@ async def sign_and_send_transaction(ix, signers, network, async_client: bool = T if error >= 6000: return from_code(error) else: - print("Simulation LLooks OK") + print("Simulation Looks OK") except (KeyError, Exception) as e: print(f"Error simulating transaction: {e}") print("Retrying...") diff --git a/src/api/marketplace/pyxfluencer-1.2.2-py3-none-any.whl b/src/api/marketplace/pyxfluencer-1.2.2-py3-none-any.whl index 1cc36d23fd7f8c9858efefbd7a01946083aca58b..609d0d81b337aeb53b5c738406e40a82eb1ad871 100644 GIT binary patch delta 5621 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 delta 5200 zcmZXYWmFX2y2fGX8iuZs9%7^$1QZ16kOrlZ4#`mw2Sz|TX6Wt_fkA1d85%)4r4eb6 z5b2BmbIv{MuDjRT>-|0Nvp>Awp1n7wA2*=~mr-8}51$qX2ZtEPLnP5G@`~rr3?UBA z3P&O%E8N`NYfc9A=CqRWJs&$>oU2oyI|crah>DbLHejYc3;I+r7V_P#XeZ*91*121~7rBo6sl7qU;QOGC-)06ZW>Q%`= zi@qZh@=L~xJ63;XMUaJvd;WUQ7d(%QkP#|Y4ATE# zl-YTxX-Lv*&?BFf%ZkSnMPD#eoxX%1CE?KE+9#DPYZmLnOOt&`J-zE{>S*Qv;G1+A5 zrg97;{UmlToxz!i>8q_q;8dCdd{BU?joC1xi`<8RchgALG|xN|^)*C$#i%`vp+qsd zgg8o?f7LI1Mo=z0ZqGwxltW%^ptNGv0yd4?r2B}CD(~X_+U91>#xEuw@9Kq&oZ=U7 zb}Z1_p?>VFVh3d$nVNoMm($lc$YzNwNTnsGjQ(9h%u{MZ#S`I1{VeSiu7845Rn;;- zkz1dZw-o-p3DPKL700>P`O$mA6;q_$c`zf66zM_N|CtqyWl~xk6?pce(d^8^Xc`zcW2QYD6kc2?e?`3?x(YWe+twoS%y!?Snuna;ftS-;i<`N^6^8@mk z%e~az&B7^6I*{OER;yYVe*T3>FfG-7B&iwcs+(e1!6Q`oz1svu?p-b=c$P;lM;}Gq+bz_#gT<%Zf#aiZ z>d-EgxC_)8pkF1DIxhie4=7m_@p0iwZCTUhz#q+E&T9e!LA1+ zAEXGUkmST=NIs?0I-$xDGIN@+jEFf2shkmTWij-S-fzz>6Z^9t6GZ^(I>cpwL4{(9 zJYvb9D7#k!@FyN`p8V)pK6CbafpN?>OJ}?+PyY&`3+S4de_g)bvlk`e=&)hXsBOAd zr}(sK{%m54S$zE2Wy+r-B2Ngnz~TI5a6f*>q~>oZ+GySY_)EU_r2L@~>=Jsv;KGz5 z^XPtHJ9k;l6!Rp?IYb0Tk2Jold*Glg#mwch`4(~D26tg*A@5v$VU-i{#bdQHgqkbX?w3?wwRfTu9mL3agmvfU%c2t@$%AdJ;i*br z%H+OZrh|#w1_VcD-BS{?R7vN9sj->jry<8>J$_oT;vDx}?_OK$pEa6j3kGMvMDuP` z!;IIxtl%yhjhd*}Rw?04Fwq8*C=X-bE~LjGptRF-htM&{c96o{k}##TTkQ3Eggdb{ z`Qnr&uYPJf$&u9Ev%q*B>PP2#Y^Nk<9XMIhM`;X(9JFcJE@7yGOT8QwulBIPlAPm* zKi9bb4L~eE!mJDNyVvbD4t;MoDuDc#NF$s|c2&dU^W&*Jo)c zfs-4zSvrl-ikpwAeLt1uRE*Yf?`PW`6bYaMjWue@pu0Kd+7y z%DjwHN3%z0&+8gKPM^$jH^c-W2+rjtgd zbo6Nk=zI{x^)FBPBw()t(JMpLPD)nLF7V3ogR*!8&BF)ajt)-HIMdcgz{wPckq|CNK@SgCTIC*tS=Q%D)2R4>PhFZflAZk9qtQ|UPB z@#o@?J+21uFjqn4z}H@+dxduS^%Gp`-60sT7Wq}Bwc8qo65GQWJGk?#aN#B$*cTC{N`}e7L~QlIWVY* zo5`UZQ~r_jFy+@a0kr{>{!>*Rm-0@4Ak$sjZ9zgfX<^Eb9J>S*i&;j6x&{kXgP->( z#k;4v!$AX>WJ>z2)8wRDv#&q(uRfW_dyFVs5+tIFBwI8|B9bSQ&<;~D=S?wDR|~SF z4BbX0E!o=%~T+ zN+go-#8Z4U`LYhFQ(RX$TN}?7H?$a3g?(=$ZNuYWRTQqo#+8kyt!{tm4F40s=G=p45z zbX-F=h*yCbPf}r!iw2wS?=bC0y1Jtx16V$977!Un4RUMp#}t4v%%hI7XgK`pBlPQG z+9NwUFdwG+ylvCYm=lL4d&qC}Vg*ub0rarHg0(WwbKSjsdqiqrHty-P|CsdmjF@sb zW(v{#mS3USJwqCd*RaLvCl~XP0@TtqK6Lcrf!PK)`q7~7jkN?EV$gGFU@MDB;%Q}o^cS3nncuh4djyV2xRK(tD{Z!HhiLUs3uT{8 zc7NNjfoFPIA?Hliv)6RQ9I;a)JwNfS1IsG9&?IsP0Xcc6S|sB5w$ZVdZSaPkk03A; zd&96?uM6cKV~iGJjr7{Th5uOLvEZA@sP7wDiz%A-@sQUYHE6bni@|{E&ix`21q6mA zdBDm$&aoMF{K3q#1Wz41>S<%WN_N#lB#59HVuD$fNsTL6PZLUDSh8qraEw-DSgFp# zeKr+`PunZPwO=uL<6^OI;FBCD=I_2bWus?{l;hLp$7iZcaR4pUcSp*XU;UzmI>Q&S z7S&nwu!VO;!}H!dt6~x zHlM;YCT=(QcXdYT`?D{r?>;0SKULTJc-{Mb{K$WF|3x>-(h(2{gUh{(2?n!&uzz1@ z+dvI!pjUI=;l6W4*_L!ziDTV(r2)TlBxxe76n~kGtFPyFM@aa<7X&2x9vyKw;@}q= zpk3wQmvcOLUrZhQz`T`}sSNlwcOSBKrhBELfI)Bct-MLq)S@IB^I$bPKc}kFK^V)3Mn_fo@@ujSw(1tjAO(PrNVS3vBgt(= znVO{kEr%wCBtEyv!_-nuc!1J16^8dz6`Ihh{=BAlMq%6V2*fx^5^R*IAfPj3=hTzR z@0RPItp_Y)(#nH67Jk-!gWT<@i5t8A#@@UAni%1=O9MCsah0}W3~i6eO3GH&IQ)Zv zq=RVUHVyhhp3?g@xcm#9LB@@&o%#~L)Ebv-gM7EK&|Vb9V^KHEk;06nJG?=bmCCmk zrP-#BMQ_pwdn0CsCQr1-pX258osq}@Uy?|bA3R5D0-l_uCw{C`Ufc8>Fj@$ZideeW zmGJ!c`;L&ARmzA??@Jnim{rGeq66c(ow!L!82?a{^|9_gVSLTbd1U<L|c9V2k<6ADaV zKsa$m{u?5;;1crf=Y>_|wHdUSQN0xmbqs_{IsHAQ;GIc95ah8>G1h_hDj64~i)v-m zO(|iI$dnuKVySbNy^0Ys@#la4-oK`I#)kON#I}G4Gm6TfumRxsFkkzv66yVXQ(m zz_@wO3bRapuLAXq^(>%jRYnBS2<^37z-7iG3(sETxp|9N{Y~urQI1l?v(JF((9xW=NWYst!6-% z2TYc8VeCyQyTsufbl0SqAf;pRj@f%9m8b~#MuDzZEY&_$%N_3Jr34t$Fy*Mc5?{29 zmr=jSqLB25r<)ECle_e4iz=z{dO)C2 zui0Ub`v!~2;ewEgH!5|?fHcMSW6t9{dOpn@z!nIoSm2&S0G`?64UGwU0lskGr5_vW zJFgJJIIQOEMAF1vqFYm!@ex04(;xI^8zCCT{fft!q!dC{>oOy3iraT_Hn$hm8@Yap zOq!<3qTsD9*F_^E|B$a?ZtoT};*Nz9LlJ1OG{;quE#u2B#3d~m<5hTb3pWv7)|C0t z&&X<6Pj>SK?)_9c)2WHPiK*#SJhi@PNwXJq{_tPD3Ylm}!86w$vuHsjZe@F~WroDn zaW)5~l6OnqGe_TKNxewZrOL-;s$b=2pmSz5pLMtk9b)RzKo>dpBs}y>#0%-AQ zaj5_Q4;3onsWC1PweXaW{r_Ilad7^AX#Hmug?uDJ@mM|pZ~;;6ObjTvr6eH#U+4v* zLM>QA0SPq!I9?ziO4v#QK+1S4A*d)TC}5ifmB&wq8nBWCG~D?I8LY(to4mKkigLAv z0w@Jg*5WLvPu7wED#2UiK#|x80+@ zSZPa!qO+q!b;{9_|94(C*?*hzfXjRTpp6|NiqcLT5Tf{RDGm7k;1*d>7-b4nyB!pO zukw#1wwD2@JVNE#3!pshg#lCQxA-?-Pz&~8K#CSh*MSwq>_GdsBjNxCd^Ec42>(^^ vTcu_EkI!yOf$DW2XaC>)!N Date: Wed, 17 Apr 2024 12:32:56 +0530 Subject: [PATCH 15/22] cast to int after division --- solana-python/pyxfluencer/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/solana-python/pyxfluencer/utils.py b/solana-python/pyxfluencer/utils.py index 9f32b70f..b21eeced 100644 --- a/solana-python/pyxfluencer/utils.py +++ b/solana-python/pyxfluencer/utils.py @@ -120,7 +120,8 @@ async def sign_and_send_transaction(ix, signers, network, async_client: bool = T continue # Set compute unit limit - cu_budget:int = simulated_transaction_resp.value.units_consumed * 15 / 10 # increase 50% of simulated CU's + cu_budget: int = simulated_transaction_resp.value.units_consumed * \ + 15 // 10 # increase 50% of simulated CU's max_budget = 200_000 cu_set = min(cu_budget, max_budget) modify_compute_units = set_compute_unit_limit(cu_set) From f8f171f65d21bb4491e081ffd36cfd391262e4ec Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 17 Apr 2024 12:59:23 +0530 Subject: [PATCH 16/22] Fix cancel_escrow and confirm_escrow functions to handle EscrowAlreadyCancel and EscrowAlreadyReleased errors --- src/api/marketplace/orders/tasks.py | 42 +++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/src/api/marketplace/orders/tasks.py b/src/api/marketplace/orders/tasks.py index 630ced94..3c22ca06 100644 --- a/src/api/marketplace/orders/tasks.py +++ b/src/api/marketplace/orders/tasks.py @@ -20,6 +20,7 @@ from pyxfluencer import validate_escrow_to_cancel, validate_escrow_to_delivered, validate_escrow from pyxfluencer.utils import get_local_keypair_pubkey +from pyxfluencer.errors.custom import EscrowAlreadyCancel, EscrowAlreadyReleased import time import json @@ -85,9 +86,28 @@ def cancel_escrow(order_id: str, status: str): processing_spl_escrow=True, priority_fees=priority_fees )) - # Update all the values of the on_chain_transaction with result.value[0] - result_dict = json.loads(result) + if isinstance(result, EscrowAlreadyCancel): + # Escrow already cancelled + # Update the order status to cancelled + if order.status != status: + order.status = status + order.save() + + create_order_tracking(order=order, status=status) + create_notification_for_order( + order=order, old_status='accepted', new_status=status) + + escrow.status = "cancelled" + escrow.save() + + on_chain_transaction.is_confirmed = True + on_chain_transaction.save() + + return True + + result_dict = json.loads(s=result) + # Update all the values of the on_chain_transaction with result.value[0] # Access the first item in the 'value' list transaction_result = result_dict['result']['value'][0] @@ -173,6 +193,24 @@ def confirm_escrow(order_id: str): priority_fees=priority_fees )) + if isinstance(result, EscrowAlreadyReleased): + # Escrow already released + if order.status != 'completed': + order.status = 'completed' + order.save() + + create_order_tracking(order=order, status=order.status) + create_notification_for_order( + order=order, old_status='accepted', new_status='completed') + + escrow.status = "delivered" + escrow.save() + + on_chain_transaction.is_confirmed = True + on_chain_transaction.save() + + return True + # Update all the values of the on_chain_transaction with result.value[0] result_dict = json.loads(result) From 45a0fdbc149b3916e298ae36593c7ea02cfb0c31 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 17 Apr 2024 14:22:36 +0530 Subject: [PATCH 17/22] Add exception handling for max attempts in sign_and_send_transaction function --- solana-python/pyxfluencer/utils.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/solana-python/pyxfluencer/utils.py b/solana-python/pyxfluencer/utils.py index b21eeced..16148507 100644 --- a/solana-python/pyxfluencer/utils.py +++ b/solana-python/pyxfluencer/utils.py @@ -157,3 +157,6 @@ async def sign_and_send_transaction(ix, signers, network, async_client: bool = T print(f"RPC exception happened: {e}") except Exception as e: print(f"An unexpected error occurred: {e}") + + # If max attempts reached, raise an exception + raise Exception("Max attempts reached, transaction failed") From e521cf3d9648f4547e89415034792cce3e7e8e2d Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 17 Apr 2024 14:23:00 +0530 Subject: [PATCH 18/22] Log errors in onchaintransactions --- src/api/marketplace/orders/tasks.py | 112 +++++++++++++++++++--------- 1 file changed, 75 insertions(+), 37 deletions(-) diff --git a/src/api/marketplace/orders/tasks.py b/src/api/marketplace/orders/tasks.py index 3c22ca06..277c2cfc 100644 --- a/src/api/marketplace/orders/tasks.py +++ b/src/api/marketplace/orders/tasks.py @@ -68,24 +68,43 @@ def cancel_escrow(order_id: str, status: str): key='priority_fees').value) if order_currency.currency_type == 'SOL': - result = asyncio.run(validate_escrow_to_cancel(validator_authority=val_auth_keypair, - business_address=buyer_primary_wallet.wallet_address_id, - influencer_address=influencer_primary_wallet.wallet_address_id, - order_code=order.order_number, - network=RPC_ENDPOINT, - priority_fees=priority_fees - )) + try: + result = asyncio.run(validate_escrow_to_cancel(validator_authority=val_auth_keypair, + business_address=buyer_primary_wallet.wallet_address_id, + influencer_address=influencer_primary_wallet.wallet_address_id, + order_code=order.order_number, + network=RPC_ENDPOINT, + priority_fees=priority_fees + )) + except Exception as e: + logger.error('Error in cancelling escrow: %s', str(e)) + on_chain_transaction.is_confirmed = False + on_chain_transaction.err = { + 'message': 'Error in cancelling escrow', 'error': str(e) + } + on_chain_transaction.save() + return False + elif order_currency.currency_type == 'SPL': - result = asyncio.run(validate_escrow( - validation_authority=val_auth_keypair, - business_address=buyer_primary_wallet.wallet_address_id, - influencer_address=influencer_primary_wallet.wallet_address_id, - target_escrow_state=EscrowState.CANCEL, - order_code=order.order_number, - network=RPC_ENDPOINT, - processing_spl_escrow=True, - priority_fees=priority_fees - )) + try: + result = asyncio.run(validate_escrow( + validation_authority=val_auth_keypair, + business_address=buyer_primary_wallet.wallet_address_id, + influencer_address=influencer_primary_wallet.wallet_address_id, + target_escrow_state=EscrowState.CANCEL, + order_code=order.order_number, + network=RPC_ENDPOINT, + processing_spl_escrow=True, + priority_fees=priority_fees + )) + except Exception as e: + logger.error('Error in cancelling escrow: %s', str(e)) + on_chain_transaction.is_confirmed = False + on_chain_transaction.err = { + 'message': 'Error in cancelling escrow', 'error': str(e) + } + on_chain_transaction.save() + return False if isinstance(result, EscrowAlreadyCancel): # Escrow already cancelled @@ -143,7 +162,7 @@ def cancel_escrow(order_id: str, status: str): return False -@celery_app.task(base=QueueOnce, once={'graceful': True}, autoretry_for=(Exception,), retry_kwargs={'max_retries': 3}) +@celery_app.task(base=QueueOnce, once={'graceful': True}, autoretry_for=(Exception,), retry_kwargs={'max_retries': 5}) def confirm_escrow(order_id: str): try: # Get order and corresponding escrow @@ -172,26 +191,45 @@ def confirm_escrow(order_id: str): key='priority_fees').value) if order_currency.currency_type == 'SOL': - result = asyncio.run(validate_escrow_to_delivered(validator_authority=val_auth_keypair, - business_address=buyer_primary_wallet.wallet_address_id, - influencer_address=influencer_primary_wallet.wallet_address_id, - order_code=order.order_number, - network=RPC_ENDPOINT, - percentage_fee=platform_fees, - priority_fees=priority_fees - )) + try: + result = asyncio.run(validate_escrow_to_delivered(validator_authority=val_auth_keypair, + business_address=buyer_primary_wallet.wallet_address_id, + influencer_address=influencer_primary_wallet.wallet_address_id, + order_code=order.order_number, + network=RPC_ENDPOINT, + percentage_fee=platform_fees, + priority_fees=priority_fees + )) + except Exception as e: + logger.error('Error in confirming escrow: %s', str(e)) + on_chain_transaction.is_confirmed = False + on_chain_transaction.err = { + 'message': 'Error in confirming escrow', 'error': str(e) + } + on_chain_transaction.save() + raise Exception('Error in confirming escrow', str(e)) + elif order_currency.currency_type == 'SPL': - result = asyncio.run(validate_escrow( - validation_authority=val_auth_keypair, - business_address=buyer_primary_wallet.wallet_address_id, - influencer_address=influencer_primary_wallet.wallet_address_id, - target_escrow_state=EscrowState.DELIVERED, - order_code=order.order_number, - network=RPC_ENDPOINT, - percentage_fee=platform_fees, - processing_spl_escrow=True, - priority_fees=priority_fees - )) + try: + result = asyncio.run(validate_escrow( + validation_authority=val_auth_keypair, + business_address=buyer_primary_wallet.wallet_address_id, + influencer_address=influencer_primary_wallet.wallet_address_id, + target_escrow_state=EscrowState.DELIVERED, + order_code=order.order_number, + network=RPC_ENDPOINT, + percentage_fee=platform_fees, + processing_spl_escrow=True, + priority_fees=priority_fees + )) + except Exception as e: + logger.error('Error in confirming escrow: %s', str(e)) + on_chain_transaction.is_confirmed = False + on_chain_transaction.err = { + 'message': 'Error in confirming escrow', 'error': str(e) + } + on_chain_transaction.save() + raise Exception('Error in confirming escrow', str(e)) if isinstance(result, EscrowAlreadyReleased): # Escrow already released From 1bc204d50db19d4fc447ce5d67868bae4d8b0e25 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 17 Apr 2024 14:23:04 +0530 Subject: [PATCH 19/22] Refactor cancel_escrow function to remove async/await usage --- src/api/marketplace/orders/views.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/api/marketplace/orders/views.py b/src/api/marketplace/orders/views.py index 3746a928..6979fa6e 100644 --- a/src/api/marketplace/orders/views.py +++ b/src/api/marketplace/orders/views.py @@ -659,9 +659,6 @@ def get_object(self, pk): except Order.DoesNotExist: return None - async def async_cancel_escrow(self, pk, order_status): - return await cancel_escrow(pk, order_status) - def put(self, request, pk): try: order = self.get_object(pk) @@ -763,7 +760,7 @@ def put(self, request, pk): ) else: # Retry the transaction - res = self.async_cancel_escrow(pk, order_status) + res = cancel_escrow(pk, order_status) if res: # Cancel all order items order_items.update(status=order_status) From 985a1dde8c2c25d7382e21a80075e035530acaef Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 17 Apr 2024 14:23:26 +0530 Subject: [PATCH 20/22] Add binary files --- .../dist/pyxfluencer-1.2.2-py3-none-any.whl | Bin 25902 -> 25944 bytes .../pyxfluencer-1.2.2-py3-none-any.whl | Bin 25902 -> 25944 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl b/solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl index 609d0d81b337aeb53b5c738406e40a82eb1ad871..abab7de1a3b4689ef50fdf7b4fa12f8aac7d02d0 100644 GIT binary patch delta 3671 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

q(le!G6?{r2yu`o)3ucVY7umRKY|_f zp6xoa07VFS;uv5Np$jtN29^*^Km|8Bpkpfnin{wJF5V>v(riVDOM%a}hQ#Fny`4U> zJYa8U33_xNqX+@Q>}Y^ZI|b4HB}_^nL-rxjy0I;!i}{?96mfT;a%of^P8h=77LfCF(3V8KBS^iK1}VxTmD znxhD45%#B`ro{~8Tt`2h|3>=jR_Jer1lS1zlF|cGO}T)-ofvP3mJ`(t zDY+&aH-rn&F{2jybD6hpCJ&hC|K`gf2@%m7av~z$|2B9dwGoPDK!h1Tvwh N-lbq7A}{Nk^gp{i=(PX< diff --git a/src/api/marketplace/pyxfluencer-1.2.2-py3-none-any.whl b/src/api/marketplace/pyxfluencer-1.2.2-py3-none-any.whl index 609d0d81b337aeb53b5c738406e40a82eb1ad871..abab7de1a3b4689ef50fdf7b4fa12f8aac7d02d0 100644 GIT binary patch delta 3671 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

q(le!G6?{r2yu`o)3ucVY7umRKY|_f zp6xoa07VFS;uv5Np$jtN29^*^Km|8Bpkpfnin{wJF5V>v(riVDOM%a}hQ#Fny`4U> zJYa8U33_xNqX+@Q>}Y^ZI|b4HB}_^nL-rxjy0I;!i}{?96mfT;a%of^P8h=77LfCF(3V8KBS^iK1}VxTmD znxhD45%#B`ro{~8Tt`2h|3>=jR_Jer1lS1zlF|cGO}T)-ofvP3mJ`(t zDY+&aH-rn&F{2jybD6hpCJ&hC|K`gf2@%m7av~z$|2B9dwGoPDK!h1Tvwh N-lbq7A}{Nk^gp{i=(PX< From bffe3b7fc04932e066db7493adc0e221af60abb0 Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 17 Apr 2024 14:41:37 +0530 Subject: [PATCH 21/22] Fix percentage_fee parameter in validate_escrow_to_delivered function --- solana-python/pyxfluencer/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/solana-python/pyxfluencer/__init__.py b/solana-python/pyxfluencer/__init__.py index 22d7be3d..251a8e18 100644 --- a/solana-python/pyxfluencer/__init__.py +++ b/solana-python/pyxfluencer/__init__.py @@ -172,7 +172,7 @@ async def validate_escrow_to_delivered(validator_authority: Keypair, EscrowState.DELIVERED, order_code, network, - percentage_fee=priority_fees, + percentage_fee=percentage_fee, processing_spl_escrow=False, priority_fees=priority_fees ) From d155f456f03c3bd740574814a34d444e97f62e6e Mon Sep 17 00:00:00 2001 From: Mudit Mahajan Date: Wed, 17 Apr 2024 14:50:52 +0530 Subject: [PATCH 22/22] Update binary files --- .../dist/pyxfluencer-1.2.2-py3-none-any.whl | Bin 25944 -> 25939 bytes .../pyxfluencer-1.2.2-py3-none-any.whl | Bin 25944 -> 25939 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl b/solana-python/dist/pyxfluencer-1.2.2-py3-none-any.whl index abab7de1a3b4689ef50fdf7b4fa12f8aac7d02d0..5ce2463d52af87d6fe874801986755c754b2473f 100644 GIT binary patch delta 3615 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 D$;!v8 delta 3669 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 W|0}8veSD>11tcHS5~uzd3;Gv!@44y# diff --git a/src/api/marketplace/pyxfluencer-1.2.2-py3-none-any.whl b/src/api/marketplace/pyxfluencer-1.2.2-py3-none-any.whl index abab7de1a3b4689ef50fdf7b4fa12f8aac7d02d0..5ce2463d52af87d6fe874801986755c754b2473f 100644 GIT binary patch delta 3615 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 D$;!v8 delta 3669 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 W|0}8veSD>11tcHS5~uzd3;Gv!@44y#