Releases: btclib-org/btclib
Releases · btclib-org/btclib
v2023.7.12
This is the last release supporting py37.
Major changes include:
- added first draft implementation of descriptors
- added first draft implementation of script engine
- added taproot psbt fields
- improved bip32 derivation (speeded-up, added one more test)
- supported py3.12 with btclib_libsecp256k1
- updated toolchain
v2023.5.30
Major changes include:
- Fix circular import between
script
andb32
v2023.2.3
v2023.1.17
Major changes include:
- exported names per module (bip32, block, ec, ecc, mnemonic, psbt, script, tx)
- added join_psbts and join_txs
- refactored bip340_nonce
- improved integration of libsecp256k1
- added secp256k1-py test vectors
- improved typing
- added SECURITY, CONTRIBUTING, bug report and feature request templates
- added pre-commit hooks
- adopted mypy --strict and from future import annotations
v2022.12.31
Major changes include:
- added support for Python 3.11
- fixed the OpenSSL 3.x RIPEMD160 issue in btclib/hashes.py
- added CONTRIBUTING and SECURITY
- solved issue #73 Re-import Tx subclasses into btclib.tx
v2022.7.20
Major changes include:
- by default ssa, dsa and point multiplication are now sped up using btclib_libsecp256k1;
this provides an 8 times speed up in benchmarks and 3 times in real world applications.
v2022.5.3
Major changes includes:
- dropped python 3.6 support
- added support for btclib_libsecp256k1
- the hashes.fingerprint function, removed in the previous version,
has been reinstated in the to_pub_key module - encode_num and decode_num have been moved from
script.op_codes to utils - op_pushdata and op_str have been renamed to
serialize_bytes_command and serialize_str_command - script.op_codes has been removed and its functions merged in script
- script serialization is now more consistent: all integers, even small
ones, are now considered like bytes. To put small integers on the stack
OP_X must be used explicitly. Using integers directly will lead to larger
scripts that will be likely to be rejected by the network as not standard - check_validity is now correctly propagated inside each function
v2022.2.9
This is the latest release to support python 3.6
Major changes includes:
- added bech32m
- added Taproot support
- introduced ScriptPubKey class
- used script_type instead of prefix/wit_ver for b58/b32 address functions
- split up op_int in op_num and op_int
- prevented bip32 account derivation with arbitrarily high index
- ensured der.Sig.r is congruent to a valid x-coordinate
- renamed ScriptToken as Command
- moved witness and script_pub_key into script folder
- removed dataclasses_json dependency
- introduced submodules
- renamed Tx.tx_id as Tx.id
- renamed deserialize as parse
- renamed signature functions: trailing underscore marks hash-reduced versions
- updated BIP32 test vectors
- moved continuous testing from TravisCI to Github Actions
- simplified configuration files
- fixed pylint and flake8 warnings
v2020.12.19
Major changes includes:
- added secp256k1 point multiplication based on efficient endomorphism
- fixed ssa batch verification functions' logic
- enforced snake_case variable naming convention, e.g. 'script_pub_key', etc.
- added BIP32KeyOrigin, BIP32KeyPath, and BIP32KeyPaths
- adopted str instead of bytes as default type for BIP32 keys, bms sigs, PSBTs, addresses, and WIFs; base58 and bech32 encodings keep returning bytes, like base64
- cleaned up and refactored all dataclasses, now using serialize/deserialized and possibly b58encode/b58decode, b64encode/b64decode, etc.
- renamed TxIn.witness as TxIn.script_witness
- fixed Witness management in TxIn and Tx, including equality operator
- consolidated sig_hash code into sig_hash module
- added more script_pub_key functions: assert_p2pkh, is_p2pkh, etc.
v2020.11.23
Major changes includes:
- updated BIP340 (Schnorr signature) implementation as per the latest changes in bitcoin core
- refactored PsbtIn, PsbtOut, and Psbt
- added legacy sighash
- made btclib compatible with python 3.6
- ssa.det_nonce now returns an int
- moved tagged_hash from ssa into hashes module
- added CurveGroup._y_aff_from_jac and removed unused methods
- discontinued y_odd in favor of y_even as y-simmetry tiebreaker criterium
- removed nonce input from dsa.sign and ssa.sign (only available from _sign functions)
- cleaned up Exception handling, avoided bare/broad except
- introduced btclib Exceptions that can be discriminated from regular Exceptions