diff --git a/zksync_sdk/zksync_provider/transaction.py b/zksync_sdk/zksync_provider/transaction.py index 1db6a5a4..c366f28e 100644 --- a/zksync_sdk/zksync_provider/transaction.py +++ b/zksync_sdk/zksync_provider/transaction.py @@ -2,6 +2,7 @@ from dataclasses import dataclass from enum import Enum, auto from typing import Optional +from zksync_sdk.types.responses import BlockInfo class TransactionStatus(Enum): @@ -14,6 +15,7 @@ class TransactionStatus(Enum): class TransactionResult: status: TransactionStatus fail_reason: str + block: Optional[BlockInfo] class Transaction: @@ -40,12 +42,12 @@ async def await_committed(self, attempts: Optional[int] = None, attempts_timeout if attempts is not None: attempts -= 1 if "failReason" in transaction_details and transaction_details["failReason"] is not None: - return TransactionResult(TransactionStatus.FAILED, transaction_details['failReason']) + return TransactionResult(TransactionStatus.FAILED, transaction_details['failReason'], transaction_details['block']) if "block" in transaction_details: block = transaction_details["block"] if block is not None and "committed" in block and block["committed"]: - return TransactionResult(TransactionStatus.COMMITTED, "") + return TransactionResult(TransactionStatus.COMMITTED, "", block) if attempts_timeout is not None: await asyncio.sleep(attempts_timeout / 1000) @@ -63,19 +65,19 @@ async def await_verified(self, attempts: Optional[int] = None, attempts_timeout: if attempts is not None: attempts -= 1 if "failReason" in transaction_details and transaction_details["failReason"] is not None: - return TransactionResult(TransactionStatus.FAILED, transaction_details['failReason']) + return TransactionResult(TransactionStatus.FAILED, transaction_details['failReason'], transaction_details['block']) if "block" in transaction_details: block = transaction_details["block"] if block is not None and "committed" in block and block["committed"]: - intermediate_status = TransactionResult(TransactionStatus.COMMITTED, "") + intermediate_status = TransactionResult(TransactionStatus.COMMITTED, "", block) if "block" in transaction_details: block = transaction_details["block"] if block is not None and \ "verified" in block and \ block["verified"]: - return TransactionResult(TransactionStatus.VERIFIED, "") + return TransactionResult(TransactionStatus.VERIFIED, "", block) if attempts_timeout is not None: await asyncio.sleep(attempts_timeout / 1000)