Skip to main content

This library provides a Python interface for building BitcoinSV scripts and transactions.

Project description

TX Engine

This library provides a Python interface for building BitcoinSV scripts and transactions.

For documentation of the Python Classes see below.

Python Installation

As this library is hosted on PyPi (https://pypi.org/project/tx-engine/) and is installed using:

pip install tx-engine

Example Tx class usage

So to parse a hex string to Tx:

from tx_engine import Tx

src_tx = "0100000001c7151ebaf14dbfe922bd90700a7580f6db7d5a1b898ce79cb9ce459e17f12909000000006b4830450221008b001e8d8110804ac66e467cd2452f468cba4a2a1d90d59679fe5075d24e5f5302206eb04e79214c09913fad1e3c0c2498be7f457ed63323ac6f2d9a38d53586a58d41210395deb00349c0ae73412a55bec70a7793fc6860a193d29dd61d73c6271ffcbd4cffffffff0103000000000000001976a91496795fb99fd6c0f214f7a0e96019f642225f52d288ac00000000"

tx = tx.parse_hexstr(src_tx)
print(tx)

> PyTx { version: 1, tx_ins: [PyTxIn { prev_tx: "0929f1179e45ceb99ce78c891b5a7ddbf680750a7090bd22e9bf4df1ba1e15c7", prev_index: 0, sequence: 4294967295, script_sig: [0x48 0x30450221008b001e8d8110804ac66e467cd2452f468cba4a2a1d90d59679fe5075d24e5f5302206eb04e79214c09913fad1e3c0c2498be7f457ed63323ac6f2d9a38d53586a58d41 0x21 0x0395deb00349c0ae73412a55bec70a7793fc6860a193d29dd61d73c6271ffcbd4c] }], tx_outs: [PyTxOut { amount: 3, script_pubkey: [OP_DUP OP_HASH160 0x14 0x96795fb99fd6c0f214f7a0e96019f642225f52d2 OP_EQUALVERIFY OP_CHECKSIG] }], locktime: 0 }

Overview of the tx-engine Classes

The tx-engine provides the following classes:

tx-engine classes

Python Classes

This provides an overview of the Python Classes their properties and methods, including:

Script

The Script class represents bitcoin script. For more details about bitcoin script see https://wiki.bitcoinsv.io/index.php/Script.

Script has the following property:

  • cmds - byte arrary of bitcoin operations

Script has the following methods:

  • __init__(self, cmds: bytes=[]) -> Script - Constructor that takes an array of bytes
  • append_byte(self, byte: byte) - Appends a single opcode or data byte
  • append_data(self, data: bytes) - Appends data (without OP_PUSHDATA)
  • append_pushdata(self, data: bytes) - Appends the opcodes and provided data that push it onto the stack
  • raw_serialize(self) -> bytes - Return the serialised script without the length prepended
  • serialize(self) -> bytes - Return the serialised script with the length prepended
  • get_commands(self) -> bytes - Return a copy of the commands in this script
  • __add__(self, other: Script) -> Script - Enable script addition e.g. c_script = a_script + b_script
  • to_string(self) -> String - return the script as a string, that can be parsed by parse_string(). Note also that you can just print the script (print(script))
  • is_p2pkh(self) -> bool - returns True if script is a Pay to Public Key Hash script
  • append_integer(self, i64) - adds an integer to the stack (assumes base 10)
  • append_big_integer(self, arbitrary_sized_integer) - adds an arbitrary sized integer to the stack (assumes base 10)

Script has the following class methods:

  • Script.parse_string(in_string: str) -> Script - Converts a string of OP_CODES into a Script
  • Script.parse(in_bytes: bytes) -> Script - Converts an array of bytes into a Script

Stack

The 'Stack' python class provides the python user direct access to the Stack structures used by the intepreter

Stack has the following methods:

  • __init__(self, items: List[List[bytes]]) -> Stack - Constructor that takes a List of List of bytes
  • push_bytes_integer(self, List[bytes]) - push a arbitrary number in bytes onto the stack
  • decode_element(self, index: option<Int>) - returns the item at stack location index. Assumption is its an arbitrary sized number
  • size(self) - returns the size of the stack
  • __getitem__(self, index: int) - allows array subscript syntax e.g. stack[i]
  • __eq__(&self, other: Stack) - allows an equality test on Stack objects

Context

The context is the environment in which bitcoin scripts are executed.

Context has the following properties:

  • cmds - the commands to execute
  • ip_start - the byte offset of where to start executing the script from (optional)
  • ip_limit - the number of commands to execute before stopping (optional)
  • z - the hash of the transaction
  • stack - main data stack
  • alt_stack - seconary stack

Context has the following methods:

  • __init__(self, script: Script, cmds: Commands = None, ip_limit: int , z: bytes) - constructor
  • evaluate_core(self, quiet: bool = False) -> bool - evaluates the script/cmds using the the interpreter and returns the stacks (tack, alt_stack). if quiet is true, dont print exceptions
  • evaluate(self, quiet: bool = False) -> bool - executes the script and decode stack elements to numbers (stack, alt_stack). Checks stack is true on return. if quiet is true, dont print exceptions.
  • get_stack(self) -> Stack - Return the stack as human readable
  • get_altstack(self) -> Stack- Return the alt_stack as human readable
  • set_ip_start(self, start: int) - sets the start location for the intepreter.
  • set_ip_limit(self, limit: int) - sets the end location for the intepreter

Example from unit tests of using evaluate_core and raw_stack:

script = Script([OP_PUSHDATA1, 0x01, b"\x85", OP_4, OP_NUM2BIN])
context_py_stack = Context_PyStack(script=script)
self.assertTrue(context_py_stack.evaluate_core())
self.assertEqual(context_py_stack.get_stack(), Stack([[0x85, 0x00, 0x00, 0x00]]))

script1 = Script.parse_string('19 1 0 0 1 OP_DEPTH OP_1SUB OP_PICK 0x13 OP_EQUALVERIFY OP_ROT OP_ADD OP_TOALTSTACK OP_ADD OP_DEPTH OP_1SUB OP_ROLL OP_TUCK OP_MOD OP_OVER OP_ADD OP_OVER OP_MOD OP_FROMALTSTACK OP_ROT OP_TUCK OP_MOD OP_OVER OP_ADD OP_SWAP OP_MOD 1 OP_EQUALVERIFY 1 OP_EQUAL')
context_py_stack = Context_PyStack(script=script1)
self.assertTrue(context_py_stack.evaluate_core())
self.assertEqual(context_py_stack.get_stack(), Stack([[1]])

script = Script([OP_1, OP_2, OP_3, OP_4, OP_5, OP_6, OP_2ROT])
context_py_stack = Context_PyStack(script=script)
self.assertTrue(context_py_stack.evaluate())
self.assertEqual(context_py_stack.get_stack(), Stack([[3], [4], [5], [6], [1], [2]]))

Quiet Evalutation

Both evaluate and evaluate_core have a parameter quiet. If the quiet parameter is set to True the evaluate function does not print out exceptions when executing code. This quiet parameter is currently only used in unit tests.

Tx

Tx represents a bitcoin transaction.

Tx has the following properties:

  • version - unsigned integer
  • tx_ins - array of TxIn classes,
  • tx_outs - array of TxOut classes
  • locktime - unsigned integer

Tx has the following methods:

  • __init__(version: int, tx_ins: [TxIn], tx_outs: [TxOut], locktime: int=0) -> Tx - Constructor that takes the fields
  • id(self) -> str - Return human-readable hexadecimal of the transaction hash
  • hash(self) -> bytes - Return transaction hash as bytes
  • is_coinbase(self) -> bool - Returns true if it is a coinbase transaction
  • serialize(self) -> bytes - Returns Tx as bytes
  • to_hexstr(self) -> str - Returns Tx as hex string
  • copy(self) -> Tx - Returns a copy of the Tx
  • to_string(self) -> String - return the Tx as a string. Note also that you can just print the tx (print(tx)).
  • validate(self, [Tx]) -> Result - provide the input txs, returns None on success and throws a RuntimeError exception on failure. Note can not validate coinbase or pre-genesis transactions.

Tx has the following class methods:

  • Tx.parse(in_bytes: bytes) -> Tx - Parse bytes to produce Tx
  • Tx.parse_hexstr(in_hexstr: String) -> Tx - Parse hex string to produce Tx

So to parse a hex string to Tx:

from tx_engine import Tx

src_tx = "0100000001c7151ebaf14dbfe922bd90700a7580f6db7d5a1b898ce79cb9ce459e17f12909000000006b4830450221008b001e8d8110804ac66e467cd2452f468cba4a2a1d90d59679fe5075d24e5f5302206eb04e79214c09913fad1e3c0c2498be7f457ed63323ac6f2d9a38d53586a58d41210395deb00349c0ae73412a55bec70a7793fc6860a193d29dd61d73c6271ffcbd4cffffffff0103000000000000001976a91496795fb99fd6c0f214f7a0e96019f642225f52d288ac00000000"

tx = tx.parse_hexstr(src_tx)
print(tx)

PyTx { version: 1, tx_ins: [PyTxIn { prev_tx: "0929f1179e45ceb99ce78c891b5a7ddbf680750a7090bd22e9bf4df1ba1e15c7", prev_index: 0, sequence: 4294967295, script_sig: [0x48 0x30450221008b001e8d8110804ac66e467cd2452f468cba4a2a1d90d59679fe5075d24e5f5302206eb04e79214c09913fad1e3c0c2498be7f457ed63323ac6f2d9a38d53586a58d41 0x21 0x0395deb00349c0ae73412a55bec70a7793fc6860a193d29dd61d73c6271ffcbd4c] }], tx_outs: [PyTxOut { amount: 3, script_pubkey: [OP_DUP OP_HASH160 0x14 0x96795fb99fd6c0f214f7a0e96019f642225f52d2 OP_EQUALVERIFY OP_CHECKSIG] }], locktime: 0 }

TxIn

TxIn represents is a bitcoin transaction input.

TxIn has the following properties:

  • prev_tx - Transaction Id as hex string
  • prev_index - unsigned int
  • script_sig - Script
  • sequence - int

TxIn has the following constructor method:

  • __init__(prev_tx: String, prev_index: int, script_sig: Script=[], sequence: int=0xFFFFFFFF) -> TxIn - Constructor that takes the fields

Note txin can be printed using the standard print, for example:

print(txin)
PyTxIn { prev_tx: "5c866b70189008586a4951d144df93dcca4d3a1b701e3786566f819450eca9ba", prev_index: 0, sequence: 4294967295, script_sig: [] }

TxOut

TxOut represents a bitcoin transaction output.

TxOut has the following properties:

  • amount - int
  • script_pubkey - Script

TxOut has the following constructor method:

  • __init__(amount: int, script_pubkey: Script) -> TxOut - Constructor that takes the fields

Note txin can be printed using the standard print, for example:

print(txout)
PyTxOut { amount: 100, script_pubkey: [OP_DUP OP_HASH160 0x14 0x10375cfe32b917cd24ca1038f824cd00f7391859 OP_EQUALVERIFY OP_CHECKSIG] }

Wallet

This class represents the Wallet functionality, including handling of private and public keys and signing transactions.

Wallet class has the following methods:

  • __init__(wif_key: str) -> Wallet - Constructor that takes a private key in WIF format

  • sign_tx(self, index: int, input_tx: Tx, tx: Tx) -> Tx - Sign a transaction input with the provided previous tx and sighash flags, Returns new signed tx

  • sign_tx_sighash(self, index: int, input_tx: Tx, tx: Tx, sighash_type: int) -> Tx - Sign a transaction input with the provided previous tx and sighash flags, Returns new signed tx

  • sign_tx_sighash_flags_checksig_index(self, index: int, input_tx: Tx, tx: Tx, sighash_type: int, checksig_index: int) -> Tx - as sign_tx_sighash with checksig_index

  • get_locking_script(self) -> Script - Returns a locking script based on the public key

  • get_public_key_as_hexstr(self) -> String - Return the public key as a hex string

  • get_address(self) -> String - Return the address based on the public key

  • to_wif(self) -> String - Return the private key in WIF format

  • get_network(self) -> String - Returns the current network associated with this keypair

  • to_int(self) -> Integer - Returns the scaler value of the private key as a python integer

  • to_hex(self) -> String - Returns the scaler value of the private key as a string in hex format

  • Wallet.generate_keypair(network) -> Wallet - Given network (BSV_Testnet) return a keypair in Wallet format

  • Wallet.from_hexstr(network, hexstr) -> Wallet - Given a network identifier and scalar value as a hex string, return a keypair in Wallet format

  • Wallet.from_bytes(network, bytes) -> Wallet - Given a network identifier and a scalar value as a byte array, return a keypair in Wallet format

  • Wallet.from_int(network, integer) -> Wallet - Given a network identifier and a scaler value as an integer, return a keypair in Wallet format

The library provides some additional helper functions to handle keys in different formats.

  • wif_to_bytes(wif: string) -> bytes - Given a key in WIF format, it returns a byte array of the scalar value of the private key
  • bytes_to_wif(key_bytes, network) -> String - Given a byte array and a network identifier, returns the WIF format for the private key
  • wif_from_pw_nonce(password, nonce, optional<network>) -> WIF - Given a password, nonce (strings) return a WIF format for the private key. The default for the network is BSV_Mainnet. For a testnet format, please use BSv_Testnet
  • create_wallet_from_pem_file -> Wallet - Given a path to PEM format file, return a keypair in Wallet format
  • create_pem_from_wallet -> String - Given a Wallet, returns a PEM (pkcs8) formatted string of the private key

Bitcoin Keys

Interface Factory

The InterfaceFactory is class for creating interfaces to the BSV blockchain (BlockchainInterface).

The InterfaceFactory class one method:

  • set_config(self, config: ConfigType) -> BlockchainInterface - This reads the configuration interface_type field and returns the configured BlockchainInterface

Blockchain Interface

The BlockchainInterface class provides an interface to the BSV network.

BlockchainInterface class has the following methods:

  • __init__(self) - Constructor that takes no parameters
  • set_config(self, config) - configures the interface based on the provide config
  • get_addr_history(self, address) - Return the transaction history with this address
  • is_testnet(self) -> bool - Return true if this interface is connected to BSV Testnet
  • get_utxo(self, address) - Return the utxo associated with this address
  • get_balance(self, address) - Return the balance associated with this address
  • get_block_count(self) - Return the height of the chain
  • get_best_block_hash(self) - Return the hash of the latest block
  • get_merkle_proof(self, block_hash: str, tx_id: str) -> str - Given the block hash and tx_id return the merkle proof
  • get_transaction(self, txid: str) - Return the transaction (as Dictionary) associated with this txid
  • get_raw_transaction(self, txid: str) -> Optional[str] - Return the transaction (as kexstring) associated with this txid, use cached copy if available.
  • broadcast_tx(self, transaction: str) - broadcast this tx to the network
  • get_block(self, blockhash: str) -> Dict - Return the block given the block hash
  • get_block_header(self, blockhash: str) -> Dict - Returns te block_header for a given block hash

WoC Interface

The WoCInterface is a BlockchainInterface that communicates with the WhatsOnChain API. Note that if you are using this you will need to install the python library requests.

Mock Interface

The Mock Interface is a BlockchainInterface that is used for unit testing.

RPC Interface

The RPC Interface is a BlockchainInterface that is used for connecting to the RPC interface of mining nodes.

SIGHASH Functions

  • sig_hash(tx: Tx, index: int, script_pubkey: Script, satoshi: int, sighash_flags: int) - Return the transaction digest/hash
  • sig_hash_preimage(tx: Tx, index: int, script_pubkey: Script, satoshi: int, sighash_flags: int) - Return the transaction data prior to the hash function

For multiple OP_CHECKSIG in script:

  • sig_hash_checksig_index(tx: Tx, index: int, script_pubkey: Script, checksig_index:int, satoshi: int, sighash_flags: int) - Return the transaction digest/hash
  • sig_hash_preimage_checksig_index(tx: Tx, index: int, script_pubkey: Script, checksig_index: int, satoshi: int, sighash_flags: int) - Return the transaction data prior to the hash function

Given:

  • tx - Spending transaction
  • index - Spending input index
  • script_pubkey - The lock_script of the output being spent
  • checksig_index - The index of the OP_CHECKSIG to be used for the hash (if more than one)
  • satoshis - The satoshi amount in the output being spent
  • sighash_flags - Sighash flags

Note the sighash flags can be obtained from the SIGHASH class which supports the following flags:

    ALL
    NONE
    SINGLE
    ANYONECANPAY
    FORKID
    ALL_FORKID = ALL | FORKID
    NONE_FORKID = NONE | FORKID
    SINGLE_FORKID = SINGLE | FORKID
    ALL_ANYONECANPAY_FORKID = ALL_FORKID | ANYONECANPAY
    NONE_ANYONECANPAY_FORKID = NONE_FORKID | ANYONECANPAY
    SINGLE_ANYONECANPAY_FORKID = SINGLE_FORKID | ANYONECANPAY

For further details see https://wiki.bitcoinsv.io/index.php/SIGHASH_flags

Example usage:

sig_hash_value = sig_hash(own_tx, 0, script_pubkey, 99904, SIGHASH.ALL_FORKID)

Other Functions

These are public key and address functions that are likely to be used if you don't have the private key and are not using the Wallet class.

  • address_to_public_key_hash(address: str) -> bytes - Given the address return the hash160 of the public key
  • hash160(data: bytes) -> bytes - Returns the hash160 of the provided data (usually the public key)
  • p2pkh_script(h160: bytes) -> Script - Takes the hash160 of the public key and returns the locking script
  • public_key_to_address(public_key: bytes, network: str) -> String - Given the public key and the network (either BSV_Mainnet or BSV_Testnet) return the address

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tx_engine-0.7.3.tar.gz (443.5 kB view details)

Uploaded Source

Built Distributions

tx_engine-0.7.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

tx_engine-0.7.3-cp313-cp313-win_amd64.whl (836.9 kB view details)

Uploaded CPython 3.13Windows x86-64

tx_engine-0.7.3-cp313-cp313-win32.whl (759.1 kB view details)

Uploaded CPython 3.13Windows x86

tx_engine-0.7.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

tx_engine-0.7.3-cp313-cp313-macosx_11_0_arm64.whl (919.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tx_engine-0.7.3-cp313-cp313-macosx_10_12_x86_64.whl (972.4 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

tx_engine-0.7.3-cp312-cp312-win_amd64.whl (835.9 kB view details)

Uploaded CPython 3.12Windows x86-64

tx_engine-0.7.3-cp312-cp312-win32.whl (758.2 kB view details)

Uploaded CPython 3.12Windows x86

tx_engine-0.7.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

tx_engine-0.7.3-cp312-cp312-macosx_11_0_arm64.whl (918.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tx_engine-0.7.3-cp312-cp312-macosx_10_12_x86_64.whl (971.8 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

tx_engine-0.7.3-cp311-cp311-win_amd64.whl (838.9 kB view details)

Uploaded CPython 3.11Windows x86-64

tx_engine-0.7.3-cp311-cp311-win32.whl (757.5 kB view details)

Uploaded CPython 3.11Windows x86

tx_engine-0.7.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

tx_engine-0.7.3-cp311-cp311-macosx_11_0_arm64.whl (921.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tx_engine-0.7.3-cp311-cp311-macosx_10_12_x86_64.whl (975.0 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

Details for the file tx_engine-0.7.3.tar.gz.

File metadata

  • Download URL: tx_engine-0.7.3.tar.gz
  • Upload date:
  • Size: 443.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.8.3

File hashes

Hashes for tx_engine-0.7.3.tar.gz
Algorithm Hash digest
SHA256 879810585174d9b3c4a3afbd5a68d02ac2e851e1b779878073e4f7ebd949fc4d
MD5 ad2cfb4577a6a2a0f4549125fe9a2377
BLAKE2b-256 95f30296600f65069c9285c39b5d3cee86fed4041248559d2486cd5e7c39b2c1

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tx_engine-0.7.3-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 943766642667255eea82e1572c4e67396a6555fa750046c0800a270680bc7c3a
MD5 134ed0ab0bbcd6adab50f57e5b911144
BLAKE2b-256 92438c66bafb2d980995dc635f3fff12116264177e7abb98611117505c8a1b1f

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for tx_engine-0.7.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 35fc1f5fa5afc24fe11763676cede8a7f32425498fc2aa7f9295312648c9e36c
MD5 46cf36872c7639464d4a2b735409bb8d
BLAKE2b-256 4c87c2b8453d6b26e0a1b2c1c423d086dd19dac905518a4216eaf86dc21eb995

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp313-cp313-win32.whl.

File metadata

  • Download URL: tx_engine-0.7.3-cp313-cp313-win32.whl
  • Upload date:
  • Size: 759.1 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.8.3

File hashes

Hashes for tx_engine-0.7.3-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 84e22945e0cbdf80f85b8ff1d2ef5e041a23dba813c4692820dfa4ee6d703b2a
MD5 fd0b84eae9cb38725a28546ccc6778c8
BLAKE2b-256 20687fa8652ba7c4f9c097e9ec6b6b3312f9740b1ad3d6dd2c4f531d9cda2096

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tx_engine-0.7.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 65829ef80c06dd7b99fc3f94bfc164fedba4683e039648b904264af3f215d599
MD5 c083a2383028d54e25f0712a1b111e61
BLAKE2b-256 4c7e2b9bdac9cb4cdc751df27f1ece5f7a0599a4474e35d064526528d5b403ff

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tx_engine-0.7.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 33c15c88f41bb45c72725816c5b11a3c4b283b6f04d6fc025eaf26bccae965f8
MD5 26810a5563ba3eb282d195399ba1e2f0
BLAKE2b-256 f8c147f5a65f64b9c92a39fbb8f37422059c92cc50ab10025eb810ac4863553f

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for tx_engine-0.7.3-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 70e8ce8d3466d5907bba8b3d436fd9d2633526789a8b20c1d56dc60d186ee706
MD5 9d1640725387e1ae34476f3767223c96
BLAKE2b-256 e8c34c643e3eb7b24affb187b2e1f75cd777030e5a0b87d2173b40de622d9b18

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for tx_engine-0.7.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e18dfda5114526c38d4f0192988b728d97cd79639eee1501771c5971393d4cff
MD5 9aad2e829473a5c4709d23ac11e6594c
BLAKE2b-256 bc32a6f138a7206573617949a74d405ec74c75ef8dcde26e5ccf38ccb2e5b4a2

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp312-cp312-win32.whl.

File metadata

  • Download URL: tx_engine-0.7.3-cp312-cp312-win32.whl
  • Upload date:
  • Size: 758.2 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.8.3

File hashes

Hashes for tx_engine-0.7.3-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 72732b4fb975217ccf2bf06b7cb3a29a75331eea5bfeecbe33748353ef5a9339
MD5 f690f385d13045a9ffe2ba165378d175
BLAKE2b-256 bad274a2d893cb532ed1ce3eefb664c80f9b19a84e70724a44d7887ea5b6c577

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tx_engine-0.7.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4597cb2e80ef49aeb1f1984247578f6fbca22d08e45b85b7cd274592d90d1254
MD5 dd5fce66d70ed4cfc5c0c7fdb9a33af7
BLAKE2b-256 0576be43ce4fd092b2ba071902dd659bbae06fbefe3ec0071e7903a8d52ed64b

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tx_engine-0.7.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6ea32a4f0e232f194305acac09195036b487a3e2e4879e5b4b801325f568ae39
MD5 898cd5170a3551d7ca9a52b0706d9911
BLAKE2b-256 9ece1636c9ad6ed14abc9e6e5139adca3d8d9defbd88fae2de09f73e4d32e13b

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for tx_engine-0.7.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a7c407c124ff22e8940a511a7982b95a02a10feb96fbd5e820ad13ecd08624af
MD5 eaad79d0aff1049ac484bdc0072d6bc2
BLAKE2b-256 d483c1abe85ebc70bbb31b3b1281b264c4249857a642c33d7511a6a864b59a20

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for tx_engine-0.7.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 2d5a08aab1650740ff8a5a6697011900268e3dc418b5014ad27c9b523f25dbc9
MD5 d18e538ce3e5d61e1875f6d6c68cc59d
BLAKE2b-256 1e17b22ad87f1b01aa6eba3a67f18cbf8fd2905599ad8b93f72416c0c3a9b959

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp311-cp311-win32.whl.

File metadata

  • Download URL: tx_engine-0.7.3-cp311-cp311-win32.whl
  • Upload date:
  • Size: 757.5 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.8.3

File hashes

Hashes for tx_engine-0.7.3-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 b76bae27b10c4686ac979da652a8b5185c30f06327dd074d4f8ccae1aa4a123a
MD5 cb4ba3b58ef2156010a54fefe0dcdcca
BLAKE2b-256 7b962133a8ec826e1992f81ebecc97ded8d833315c8c91a609118e208b54a4b2

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for tx_engine-0.7.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9087e35e9aa30104561ced35f9560f553dd9c6f6bc61b512d204affe61bc3f64
MD5 c362a43247b907b3926f27f19fb0e321
BLAKE2b-256 0d215a784a20b96830294ba0ae60a90dec30b8bf998c587e1df9ff1a88cbfcd0

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tx_engine-0.7.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 54bcea46d9354089db991366463ef10bdcc2e7ffb85b19c82865eeb91650b7e7
MD5 a3f953ca769ff9fea23d0fe229487a01
BLAKE2b-256 6680f5ed0c15918c6a43c8b6c7dd0601545c76a079b450761debedbba8a9d0d4

See more details on using hashes here.

File details

Details for the file tx_engine-0.7.3-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for tx_engine-0.7.3-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4c86016ffd430a143268c840a89b9d9427a68d4b015c824bf1c44978681ea84f
MD5 6b98628b7eb5f9512f1802909886d3f7
BLAKE2b-256 4258c20f9bfe3449daa6a755aeb60d20302c52d0e3284488f13fbe462bbe1d7d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page