Transaction object

Transaction

Used by Client class.

This transaction may be signed with only one client.

May transform to MultiTransaction object if you use litewax.clients.Transaction.payer() method with Client as payer.

class litewax.clients.Transaction(client: Client, *actions: tuple[Action, ...])[source]

litewax.clients.Transaction object Create a transaction object for pushing to the blockchain

Parameters:
Example:

>>> from litewax import Client
>>> # init client with private key
>>> client = Client(private_key=private_key)
>>> # create transaction object
>>> trx = client.Transaction(
>>>     client.Contract("eosio.token").transfer(
>>>         "account1", "account2", "1.00000000 WAX", "memo"
>>>     )
>>> )
>>> print(trx)
litewax.Client.Transaction(
    node=https://wax.greymass.com,
    sender=account1,
    actions=[
        [active] account1 > eosio.token::transfer({"from": "account1", "to": "account2", "quantity": "1.00000000 WAX", "memo": "memo"})
    ]
)
>>> # Add payer for CPU
>>> # init payer client with private key
>>> payer = Client(private_key=private_key2)
>>> # add payer to transaction
>>> trx = trx.payer(payer)
>>> print(trx)
litewax.MultiClient.MultiTransaction(
    node=ttps://wax.greymass.com,
    accounts=[account1, account2],
    actions=[
        [active] account1 > eosio.token::transfer({"from": "account1", "to": "account2", "quantity": "1.00000000 WAX", "memo": "memo"}),
        [active] account2 > litewaxpayer::noop({})
    ]
)
>>> # push transaction
>>> push_resp = trx.push()
>>> print(push_resp)
{'transaction_id': '928802d253bffc29d6178e634052ec5f044b2fcce0c4c8bc5b44d978e22ec5d4', ...}
```
property client: Client

Client object

property actions: list[Action]

List of actions

payer(payer: Union[Client, atomichub, neftyblocks, str], permission: Optional[str] = 'active') Union[MultiTransaction, AtomicHub, NeftyBlocks][source]

Set payer for all actions

Parameters:
Raises:

NotImplementedError – if payer is not litewax.clients.Client, litewax.payers.AtomicHub or litewax.payers.NeftyBlocks.

Returns:

litewax.clients.MultiTransaction object or litewax.payers.AtomicHub object or litewax.payers.NeftyBlocks object

Return type:

litewax.clients.MultiTransaction or litewax.payers.AtomicHub or litewax.payers.NeftyBlocks

pack(chain_info: Optional[dict] = {}, lib_info: Optional[dict] = {}, expiration: Optional[int] = 180)[source]

Pack transaction with client and return litewax.types.TransactionInfo.

Parameters:
  • chain_info (dict) – chain info. Provide it if you not want to get it from blockchain (optional)

  • lib_info (dict) – lib info. Provide it if you not want to get it from blockchain (optional)

  • expiration (int) – transaction expiration time in seconds (optional): default 180

Returns:

litewax.types.TransactionInfo

Return type:

litewax.types.TransactionInfo

prepare_trx(chain_info: Optional[dict] = {}, lib_info: Optional[dict] = {}, expiration: Optional[int] = 180) TransactionInfo[source]

Sign transaction with client and return litewax.types.TransactionInfo.

Parameters:
  • chain_info (dict) – chain info. Provide it if you not want to get it from blockchain (optional)

  • lib_info (dict) – lib info. Provide it if you not want to get it from blockchain (optional)

  • expiration (int) – transaction expiration time in seconds (optional): default 180

Returns:

litewax.types.TransactionInfo

Return type:

litewax.types.TransactionInfo

push(data: Optional[TransactionInfo] = {}, expiration: Optional[int] = 180) dict[source]

Push transaction to blockchain

Parameters:
Raises:
Returns:

transaction information

Return type:

dict

MultiTransaction

Used by Multi Client class.

This transaction may be signed with many clients.

class litewax.clients.MultiTransaction(client: MultiClient, *actions: tuple[Action, ...])[source]

MultiTransaction class for creating and pushing transactions using many signatures

Parameters:
Example:

>>> from litewax import MultiClient
>>> # init client with private keys
>>> client = MultiClient(
>>>     private_keys = [
>>>         "EOS7...1",
>>>         "EOS7...2"
>>>     ],
>>>     node = "https://wax.greymass.com"
>>> )
>>> # create transaction object
>>> trx = client.Transaction(
>>>     client[0].Contract("eosio.token").transfer(
>>>         "from", "to", "1.00000000 WAX", "memo"
>>>     )
>>> )
>>> # add payer
>>> trx = trx.payer(client[1])
>>> # push transaction
>>> trx.push()
property wax: Cleos

eospy.cleos.Cleos

property client: MultiClient

client.MultiClient object

property actions: List[Action]

Actions list

payer(payer: Union[Client, atomichub, neftyblocks, str], permission: Optional[str] = 'active') Union[MultiTransaction, AtomicHub, NeftyBlocks][source]

Set payer

Parameters:
Raises:

NotImplementedError – if payer is not litewax.clients.Client, litewax.payers.AtomicHub or litewax.payers.NeftyBlocks

Returns:

litewax.clients.MultiTransaction object or litewax.payers.AtomicHub or litewax.payers.NeftyBlocks object

Return type:

litewax.clients.MultiTransaction or litewax.payers.AtomicHub or litewax.payers.NeftyBlocks

pack(chain_info: Optional[dict] = {}, lib_info: Optional[dict] = {}, expiration: Optional[int] = 180)[source]

Pack transaction with client and return litewax.types.TransactionInfo.

Parameters:
  • chain_info (dict) – chain info. Provide it if you not want to get it from blockchain (optional)

  • lib_info (dict) – lib info. Provide it if you not want to get it from blockchain (optional)

  • expiration (int) – transaction expiration time in seconds (optional): default 180

Returns:

litewax.types.TransactionInfo

Return type:

litewax.types.TransactionInfo

prepare_trx(chain_info: Optional[dict] = {}, lib_info: Optional[dict] = {}, expiration: Optional[int] = 180) TransactionInfo[source]

Sign transaction with clients and return signatures, packed and serialized transaction

Parameters:
  • chain_info (dict) – chain info. Provide it if you not want to get it from blockchain (optional)

  • lib_info (dict) – lib info. Provide it if you not want to get it from blockchain (optional)

  • expiration (int) – transaction expiration time in seconds (optional): default 180

Returns:

litewax.types.TransactionInfo object

Return type:

litewax.types.TransactionInfo

push(data: Optional[TransactionInfo] = {}, expiration: Optional[int] = 180) dict[source]

Push transaction to blockchain

Parameters:
Raises:
Returns:

transaction information

Return type:

dict