Skip to content

Releases

Release 1.6.0

Choose a tag to compare

@jgriffiths jgriffiths released this 05 Nov 00:20
release_1.6.0
b14bee4

Version 1.6.0

This release contains important bug and security fixes; users are advised to update as soon as possible.

This release contains ABI changes; it is not ABI compatible with prior versions. Principally the ABI changes involve increased validation on library input parameters, particularly for PSBT and descriptor inputs and transaction signing.

Please ensure you test this version thoroughly before upgrading.

The authors would like to thank @odudex, @kkdao, Bruno Garcia, Guillermo Rodas, 0xaudron, @habakan, Moin, and Efstratios Kaplanellis (@5tratan) of Almamater Technologies for their help investigating, fixing issues, testing and contributing features to this release.

Added

  • descriptor: Add taproot tapscript descriptor support.
  • descriptor: Add descriptor_derive_bip32_key() to derive a given descriptor key.
  • psbt: Add WALLY_PSBT_PARSE_FLAG_COMPLETE to reject trailing data when parsing.
  • psbt: Add psbt_has_input_amount() to determine if an input amount is present.
  • crypto: Add ec_public_key_compress() to produce a compressed pubkey.
  • crypto: Add ec_public_key_strict_verify() to verify a non-hybrid pubkey.
  • tests: Add a large number of exhaustive memory clearing/allocation failure tests.
  • sha256/sha512: Add support for the mbed-tls PSA crypto interface.

Changed

  • ABI: The library is more careful to reject output buffers that are not either
    NULL and empty (NULL pointer plus 0 length), or non-NULL with a provided length.
    Callers should check their code to ensure these invariants hold when calling.
  • ABI: The library is more careful to return WALLY_OK and return the required
    buffer length when fetching data into a variable length buffer that is too short.
  • descriptor: Reject non-sane descriptors by default unless parsed
    with WALLY_MINISCRIPT_ALLOW_NON_SANE. This is an ABI change.
  • descriptor: Policies are now always checked for sanity and key uniqueness
    checks cannot be disabled for policies. This is an ABI change.
  • descriptor: WALLY_MINISCRIPT_UNIQUE_KEYPATHS is now deprecated as it
    has no effect. This is an ABI change.
  • descriptor: Reject un-derivable keys at parse instead of generation time.
  • descriptor: Ensure accepted descriptors are compatible with Bitcoin core.
  • crypto: Allow no-op calls to ec_public_key_compress/decompress.
  • cmake: Add WALLYCORE_ENABLE_MBED_TLS rather than auto-enabling based on
    the presence of include headers. This is an ABI change.
  • tx: Ignore pre-bip144 serialization for Elements transactions rather than
    returning an error.
  • psbt: Don't require a witness utxo to sign segwit inputs.
  • psbt: Ensure witness and non-witness utxos are consistent before signing.
  • psbt: Increase the number of tapleaf hashes allowed to 512. This is an ABI change.
  • psbt: Update modifiable flags after signing.
  • python: Allow None to be passed for output buffers where the C API allows
    NULL and zero-length buffers.
  • docker: Migrate to trixie-slim for a smaller docker image.
  • deps: Bump libsecp256k1-zkp to current master branch, update wasm deps,
    nodejs, include libmbedtls for docker builds.

Fixed

  • java: Fix various wrapper issues.
  • python: Fixes for new Python versions and Apple builds.
  • cmake: Multiple fixes to reflect recent library changes.
  • descriptor: Respect script limits when generating.
  • descriptor: Reject confidential descriptors/fragments for Bitcoin descriptors.
  • descriptor: Many fixes to input validation to reject invalid descriptors.
  • psbt: Fix taproot finalization to remove non-final fields.
  • psbt: Add missing output taproot tree validation.
  • sign: Disallow overlong DER encoding/invalid signatures early.
  • sign: Fix several instances where invalid sigs might be created.
  • bip32: Fix bip32_key_with_tweak_from_parent_path incorrect tweaking,
    disallow tweaking for non-elements builds.
  • bip32: Fix detection of various invalid BIP32 path constructs.
  • bech32: Require an exact witness program in addr_segwit_from_bytes().
  • taproot: Fix enforcing the BIP-341 merkle path depth limit.
  • aes: Parameter validation fixes.
  • sha256: Fix for sha256_midstate() under mbed-tls for some hardware variants.
  • memory: Fixes to ensure memory is cleared in more error paths.
  • memory: Improve attempts to prevent the compiler eliding memory clearing
    and spilling secret data through registers.
  • general: Ensure overflow conditions from excessively large inputs are handled.
  • general: Ensure underlying memory allocation errors are propagated to the
    caller as WALLY_ENOMEM errors rather than returned as a different error code.
  • general: Fix a number of missing parameter validation checks.
  • general: Fix a number of places where output parameters were not wiped or
    initialized when an error occurred.
  • general: Fix a large number of miscellaneous bugs and build warnings.
  • build: Don't require overriding CFLAGS when building debug versions.

Release 1.5.6

Choose a tag to compare

@jgriffiths jgriffiths released this 11 Jul 18:41
release_1.5.6
0c41f38

Version 1.5.6

Note: This release contains important bug fixes. Users are advised to update as soon as possible.

The developers would like to thank @pythcoiner and @odudex for their contributions to this release.

Fixed

  • internal: De-optimize some memcpy calls on x86 to prevent leaks via extended registers.
  • descriptor: Require base miniscript expressions for sh()/wsh().
  • descriptor: Reject nested expressions with unconsumed trailing input.

Release 1.5.4

Choose a tag to compare

@jgriffiths jgriffiths released this 17 Jun 04:40
release_1.5.4
c559183

Version 1.5.4

Note: This release contains important bug fixes. Users are advised to update as soon as possible.

Added

  • descriptor: Add support for elements confidential wallet policies.
  • docker: Build amd64/arm64 multi-arch images, migrate to blockstream/wallycore.
  • python: Add support and release wheels for Python 3.14.

Changed

  • build: Move CI and docker images to Debian Trixie.
  • deps: Bump libsecp256k1-zkp to current master branch, update emsdk.
  • java: update source version to v17 for supported Java installs.
  • js: Move to Node v24, bump fast-uri dependency.

Fixed

  • python: Remove internal dependency on distutils (which is now deprecated).
  • descriptor: Disallow leading zero in numbers/policy key indices.
  • descriptor: Return WALLY_ENONMEM correctly on out-of-memory errors.
  • elements: Align unblinding behaviour with elements-core.
  • build: Add missing cmake defines.
  • build: Various build and test fixes.

Release 1.5.3

Choose a tag to compare

@jgriffiths jgriffiths released this 16 Apr 00:33
release_1.5.3
0001373

Version 1.5.3

Note: This release contains important bug fixes. Users are advised to update as soon as possible.

Added

  • bip32: Add updated BIP checks to bip32_key_unserialize().
  • build: Add support for fuzzing wally API calls.

Fixed

  • psbt: correctly handle allocation failures in psbt_set_global_tx().
  • tx: Avoid quadratic behaviour parsing txs with a huge number of witnesses.
  • tx: Fix parsing Liquid transactions with short commitments.
  • tx: Reject non-corresponding output as per bip341 when signing.
  • map: Fix incorrect clear when reinserting an integer after removing bytes.
  • js: Pass empty buffers as NULL + length zero.
  • js: Bump webpack, serialize-javascript and terser-webpack-plugin dependencies.
  • Various minor code and build fixes.

Release 1.5.2

Choose a tag to compare

@jgriffiths jgriffiths released this 02 Feb 13:19
release_1.5.2
6439e6e

Version 1.5.2

Note: This release contains important bug fixes. Users are advised to update as soon as possible.

Added

  • taproot: add bip341_control_block_verify().

Changed

  • map: ignore duplicates in map_merkle_path_add() for consistency.

Fixed

  • build: Fix building with the Elements ABI disabled.
  • tx: Fix BIP118 ANYPREVOUTANYSCRIPT sighash computation.
  • psbt: Fix merkle path, witness and buffer length checks when parsing.

Release 1.5.1

Choose a tag to compare

@jgriffiths jgriffiths released this 22 Aug 04:40
release_1.5.1
a445157

Version 1.5.1

Added

  • python: Add wheels for Python 3.13, remove support for Python 3.8.

Fixed

  • python: Fix source builds for newer pip versions.
  • java: Fix tx_get_input_signature_hash to allow passing a null cache to disable caching.

Release 1.5.0

Choose a tag to compare

@jgriffiths jgriffiths released this 31 Jul 16:42
release_1.5.0
a90aa3c

Version 1.5.0

Added

  • psbt: add psbt_get_input_signature_type to get the type of signature required by an input.
  • descriptor: Add support for Elements el-prefixed descriptor builtins as used in rust-elements.
  • descriptor: Add support for parsing Elements ct descriptors with slip77(), elip150() and raw hex blinding keys.
  • descriptor: Add support for generating Elements confidential addresses from ct descriptors.
  • descriptor: Expose functions to perform ELIP-150 blinding key tweaking.
  • crypto: Add ec_public_key_tweak to tweak standard (non-xonly) pubkeys.
  • elements: Add asset_blinding_key_to_ec_public_key to compute the blinding pubkey from a blinding key.

Changed

  • psbt: Speed up p2tr signing slightly.
  • descriptor: Allow U type children for thresh() expressions.
  • build: Further extend CI coverage for scan-build/valgrind/asan checks.

Fixed

  • tx: Fix taproot cached hashing when using external sha256 implementations.
  • wasm: Fixes for es6 and cjs.
  • address_to_scriptpubkey: Correctly handle WALLY_NETWORK_BITCOIN_REGTEST.
  • amalgamation: Support all supported standard configurations. Minor improvements to make usage easier/more robust.
  • Various minor code and build fixes.

Version 1.4.0

Choose a tag to compare

@jgriffiths jgriffiths released this 11 Mar 19:13
release_1.4.0
12f5ac4

Version 1.4.0

Added

  • tx: Add caching to signature hash generation/PSBT signing making signing faster.
  • tx: Add support for generating Elements taproot signature hashes and signing Elements taproot inputs.
  • descriptor: Add support for "tr()/rawtr()" keyspend-only taproot descriptors.
  • descriptor: Add support for parsing Elements-core compatible descriptors, including taproot.
  • psbt: Add accessors for keypath/taproot related fields.
  • pset: Add support for ELIP-101 genesis hash.
  • psbt: Add support for serializing/parsing/combining signature-only PSBTs.
  • script: Add support for generating Elements p2tr scripts.
  • BIP85: Add support for deriving RSA keys via BIP85.
  • base64/psbt: Add support for parsing from known length (non-NUL terminated) strings.
  • build: Add Debian Bookworm docker build image.

Changed

  • tx: Re-implement signature hash generation to use less stack space and CPU independently of caching.
  • amalgamation: Provide the amalgamated build as a single source file, make it simpler to use.
  • build: CI improvements: New valgrind, scan-build and ubsan/addrcheck/etc builds. Add CI/test runs
    for builds with elements support disabled and minimal (embedded) builds.
  • build: Update/extend tests to make it easier to catch errors in the new CI builds.

Fixed

  • psbt: Fix detection of expired CSV inputs for v0 PSBTs.
  • psbt: Fix finalization of non-optimized CSV inputs (e.g. Green Liquid 2of2).
  • tx: Fix incorrect sighash masking for BTC taproot inputs.
  • build: Various fixes and test improvements for non-Elements builds.
  • Various minor code and build fixes.

Release 1.3.1

Choose a tag to compare

@jgriffiths jgriffiths released this 26 Sep 11:53
release_1.3.1
e04e8b3

Version 1.3.1

Added

  • Elements: Add wally_tx_get_elements_weight_discount for computing ELIP-0200 weight discounts.

Changed

  • Update JS dependencies.

Fixed

  • Minor build/CI fixes.

Release 1.3.0

Choose a tag to compare

@jgriffiths jgriffiths released this 20 Jul 22:02
release_1.3.0
11e1bf6

Version 1.3.0

Added

  • script: Add support for fetching the CSV block count for Green CSV scripts.
  • psbt_finalize: Add support for finalizing Green CSV inputs.

Changed

  • PSBT: Do not serialize witness data for input non-witness UTXOs, in order to match the current behaviour of Bitcoin core.
  • Java: Bump source version from 1.7 to 1.8 as 1.7 is no longer supported.

Fixed

  • psbt_sign_bip32: Fix signing with parent/master keys. Only already-derived keys would result in signed inputs previously.
  • PSET: Allow signing pre-segwit inputs.
  • PSET: Allow generating explicit proofs for inputs with only a non-witness UTXO.
  • wally_scriptpubkey_get_type: Mark all scripts starting with OP_RETURN as WALLY_SCRIPT_TYPE_OP_RETURN.
  • bip32: Fix/generalize Elements pubkey tweaking
  • Tx: Allow arbitrarily large transactions when constructing from hex/bytes.
  • Build: cmake fixes