Source code for terra_sdk.core.broadcast

"""Transaction broadcast result data types."""

from __future__ import annotations

from typing import List, Optional, Union

import attr

from terra_sdk.core.auth import TxLog, parse_tx_logs
from terra_sdk.util.json import JSONSerializable

__all__ = [
    "BlockTxBroadcastResult",
    "SyncTxBroadcastResult",
    "AsyncTxBroadcastResult",
    "is_tx_error",
]


[docs]@attr.s class BlockTxBroadcastResult(JSONSerializable): """Data object that contains the response result from node after transaction has been broadcasted with the ``block`` broadcast mode.""" height: int = attr.ib(converter=int) """Height at which transaction was included.""" txhash: str = attr.ib() """Transaction hash.""" raw_log: Optional[str] = attr.ib() """Raw JSON of transaction events.""" gas_wanted: int = attr.ib(converter=int) """Gas requested by the transaction.""" gas_used: int = attr.ib(converter=int) """Actual amount of gas consumed by transaction.""" logs: Optional[List[TxLog]] = attr.ib(converter=parse_tx_logs) # type: ignore """List of transaction logs.""" code: Optional[int] = attr.ib(default=None) """If this is present, the transaction failed.""" codespace: Optional[str] = attr.ib(default=None) """Error subspace name: used alongside ``code``.""" info: Optional[str] = attr.ib(default=None) """""" data: Optional[str] = attr.ib(default=None) """""" timestamp: Optional[str] = attr.ib(default=None) """timestamp""" def is_tx_error(self) -> bool: """Returns whether the transaction failed.""" return is_tx_error(self)
[docs]@attr.s class SyncTxBroadcastResult(JSONSerializable): """Data object that contains the response result from node after transactionco has been broadcasted with the ``sync`` broadcast mode.""" txhash: str = attr.ib() """Transaction hash.""" raw_log: Optional[str] = attr.ib() """Raw JSON of transaction events.""" code: Optional[int] = attr.ib(default=None) """If this is present, the transaction failed.""" codespace: Optional[str] = attr.ib(default=None) """Error subspace name: used alongside ``code``.""" def is_tx_error(self) -> bool: """Returns whether the transaction failed.""" return is_tx_error(self)
[docs]@attr.s class AsyncTxBroadcastResult(JSONSerializable): """Data object that contains the response result from node after transaction has been broadcasted with the ``sync`` broadcast mode.""" txhash: str = attr.ib() """Transaction hash."""
[docs]def is_tx_error(result: Union[BlockTxBroadcastResult, SyncTxBroadcastResult]): """Returns whether the transaction failed.""" return result.code != 0