Transaction

class pyxdc.transaction.Transaction(provider: Union[web3.providers.rpc.HTTPProvider, web3.providers.websocket.WebsocketProvider] = <web3.providers.rpc.HTTPProvider object>)

XinFin Transaction.

Parameters

provider (HTTPProvider, WebsocketProvider) – XinFin provider, default to HTTP_PROVIDER.

Returns

Transaction – XinFin transaction instance.

fee(unit: str = 'Wei')Union[int, float]

Get XinFin transaction fee/gas.

Parameters

unit (str) – XinFIn unit, default to Wei.

Returns

int, float – XinFin transaction fee/gas.

>>> from pyxdc import HTTP_PROVIDER
>>> from pyxdc.transaction import NormalTransaction
>>> transaction: NormalTransaction = NormalTransaction(provider=HTTP_PROVIDER)
>>> transaction.build_transaction(...)
>>> transaction.fee()
367400
hash()str

Get XinFin transaction hash.

Returns

str – XinFin transaction hash.

>>> from pyxdc import HTTP_PROVIDER
>>> from pyxdc.transaction import NormalTransaction
>>> transaction: NormalTransaction = NormalTransaction(provider=HTTP_PROVIDER)
>>> transaction.build_transaction(...)
>>> transaction.hash()
"2993414225f65390220730d0c1a356c14e91bca76db112d37366df93e364a492"
json()dict

Get XinFin transaction json format.

Returns

dict – XinFin transaction json format.

>>> from pyxdc import WEBSOCKET_PROVIDER
>>> from pyxdc.transaction import ContractTransaction
>>> transaction: ContractTransaction = ContractTransaction(provider=WEBSOCKET_PROVIDER)
>>> transaction.build_transaction(...)
>>> transaction.json()
{'gas': 134320, 'gasPrice': 20000000000, 'chainId': 1337, 'from': '0x053929E43A1eF27E3822E7fb193527edE04C415B', 'nonce': 15, 'value': 100, 'to': '0x9f77B9f27e8Bc8ad0b58FBf99aeA28feEC7eC50b', 'data': '0x335ef5bd00000000000000000000000031aa61a5d8756c84ebdf0f34e01cab90514f2a573a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb000000000000000000000000000000000000000000000000000000005ea55961'}
raw()str

Get XinFin transaction raw.

Returns

str – XinFin transaction raw.

>>> from pyxdc import HTTP_PROVIDER
>>> from pyxdc.transaction import ContractTransaction
>>> transaction: ContractTransaction = ContractTransaction(provider=HTTP_PROVIDER)
>>> transaction.build_transaction(...)
>>> transaction.raw()
"f8cc0f8504a817c80083020cb0949f77b9f27e8bc8ad0b58fbf99aea28feec7ec50b64b864335ef5bd00000000000000000000000031aa61a5d8756c84ebdf0f34e01cab90514f2a573a26da82ead15a80533a02696656b14b5dbfd84eb14790f2e1be5e9e45820eeb000000000000000000000000000000000000000000000000000000005ea55961820a95a08bae7e0a7481d11518f7771fedc6f25ab5cc85bc24a0767573ce60e52a090c8da04d6efaafedc5096ecc998cdbca5b3ea4fc6b009b44a8041b8c71be5520c3a356"

ContractTransaction

class pyxdc.transaction.ContractTransaction(provider: Union[web3.providers.rpc.HTTPProvider, web3.providers.websocket.WebsocketProvider] = <web3.providers.rpc.HTTPProvider object>)

XinFin Contract Transaction.

Parameters

provider (HTTPProvider, WebsocketProvider) – XinFin provider, default to HTTP_PROVIDER.

Returns

ContractTransaction – XinFin contract transaction instance.

build_transaction(address: str, abi: list, bytecode: str, value: int = 0, gas: Optional[int] = None, estimate_gas: bool = True, gas_price: int = 250000000, *args, **kwargs)pyxdc.transaction.ContractTransaction

Build XinFin contract transaction.

Parameters
  • address (str) – XinFin from address.

  • abi (list) – XinFin smart contact abi.

  • bytecode (str) – XinFin smart contact bytecode.

  • value (int) – XinFin Wei value, defaults to 0.

  • gas (int) – XinFin transaction fee/gas, defaults to None.

  • estimate_gas (bool) – XinFin transaction estimate fee/gas, defaults to True.

  • gas_price (int) – XinFin gas price, defaults to 0.25 Gwei.

Returns

ContractTransaction – XinFin contract transaction instance.

>>> from pyxdc import WEBSOCKET_PROVIDER
>>> from pyxdc.transaction import ContractTransaction
>>> contract_transaction: ContractTransaction = ContractTransaction(provider=WEBSOCKET_PROVIDER)
>>> contract_transaction.build_transaction(address="xdc571ae1504e92fa40f85359efdb188c704a224eac", abi=[...], bytecode="...", value=0, estimate_gas=True)
<pyxdc.transaction.ContractTransaction object at 0x0409DAF0>
sign_transaction(private_key: Optional[str] = None, root_xprivate_key: Optional[str] = None, path: str = "m/44'/550'/0'/0/0")pyxdc.transaction.ContractTransaction

Sign XinFin contract transaction.

Parameters
  • private_key (str) – XinFin private key, default to None.

  • root_xprivate_key (str) – XinFin root xprivate key, default to None.

  • path (str) – XinFin derivation path, default to DEFAULT_PATH.

Returns

ContractTransaction – Signed XinFin contract transaction instance.

>>> from pyxdc import WEBSOCKET_PROVIDER
>>> from pyxdc.transaction import ContractTransaction
>>> contract_transaction: ContractTransaction = ContractTransaction(provider=WEBSOCKET_PROVIDER)
>>> contract_transaction.build_transaction(address="xdc571ae1504e92fa40f85359efdb188c704a224eac", abi=[...], bytecode="...", value=0, estimate_gas=True)
>>> contract_transaction.sign_transaction(private_key="4235d9ffc246d488d527177b654e7dd5c02f5c5abc2e2054038d6825224a24de")
<pyxdc.transaction.ContractTransaction object at 0x0409DAF0>

NormalTransaction

class pyxdc.transaction.NormalTransaction(provider: Union[web3.providers.rpc.HTTPProvider, web3.providers.websocket.WebsocketProvider] = <web3.providers.rpc.HTTPProvider object>)

XinFin Normal Transaction.

Parameters

provider (HTTPProvider, WebsocketProvider) – XinFin provider, default to HTTP_PROVIDER.

Returns

NormalTransaction – XinFin normal transaction instance.

build_transaction(address: str, recipient: str, value: int, gas: Optional[int] = None, estimate_gas: bool = True, gas_price: int = 250000000)pyxdc.transaction.NormalTransaction

Build XinFin normal transaction.

Parameters
  • address (str) – XinFin from address.

  • recipient (str) – Recipients XinFin address.

  • value (int) – XinFin Wei value.

  • gas (int) – XinFin transaction fee/gas, defaults to None.

  • estimate_gas (bool) – XinFin transaction estimate fee/gas, defaults to True.

  • gas_price (int) – XinFin gas price, defaults to 0.25 Gwei.

Returns

NormalTransaction – XinFin normal transaction instance.

>>> from pyxdc import HTTP_PROVIDER
>>> from pyxdc.transaction import NormalTransaction
>>> normal_transaction: NormalTransaction = NormalTransaction(provider=HTTP_PROVIDER)
>>> normal_transaction.build_transaction(address="xdc571ae1504e92fa40f85359efdb188c704a224eac", recipient="xdc3e0a9B2Ee8F8341A1aEaD3E7531d75f1e395F24b", value=1_000_000_000, estimate_gas=True)
<pyxdc.transaction.NormalTransaction object at 0x0409DAF0>
sign_transaction(private_key: Optional[str] = None, root_xprivate_key: Optional[str] = None, path: str = "m/44'/550'/0'/0/0")pyxdc.transaction.NormalTransaction

Sign XinFin normal transaction.

Parameters
  • private_key (str) – XinFin private key, default to None.

  • root_xprivate_key (str) – XinFin root xprivate key, default to None.

  • path (str) – XinFin derivation path, default to DEFAULT_PATH.

Returns

NormalTransaction – Signed XinFin normal transaction instance.

>>> from pyxdc import HTTP_PROVIDER, DEFAULT_PATH
>>> from pyxdc.transaction import NormalTransaction
>>> normal_transaction: NormalTransaction = NormalTransaction(provider=HTTP_PROVIDER)
>>> normal_transaction.build_transaction(address="xdc571ae1504e92fa40f85359efdb188c704a224eac", recipient="xdc3e0a9B2Ee8F8341A1aEaD3E7531d75f1e395F24b", value=1_000_000_000, estimate_gas=True)
>>> normal_transaction.sign_transaction(root_xprivate_key="xprv9s21ZrQH143K3i9qWtfiAawwn2iLAcKKfXHCsTdUsy7RYsAma9qzrrwEwsu9buLocH7qFQmTow5bSysKDmq8VB3hYPQgMTmXAfdmhNdRZYz", path=DEFAULT_PATH)
<pyxdc.transaction.NormalTransaction object at 0x0409DAF0>