Skip to content

Latest commit

 

History

History
285 lines (245 loc) · 14.2 KB

CHANGELOG.md

File metadata and controls

285 lines (245 loc) · 14.2 KB

Changelog

Changelog information can also be found in each release's git tag (which can be viewed with git tag -ln100 "v*"), as well as on the GitHub releases page. See DEVELOPMENT_CYCLE.md for more details.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

This release brings the latest alpha 11 release of the Rust bdk_wallet library, as well as the new Electrum client, the new memory wallet, and a whole lot of new types and APIs across the library. Also of note are the much simpler-to-use full_scan and sync workflows for syncing wallets.

Added:

  • Amount type #533
  • TxIn type #536
  • Transaction.input() method #536
  • Transaction.output() method #536
  • Transaction.lock_time() method #536
  • Electrum client #535
  • Memory wallet #528

This release brings back into the 1.0 API a number of APIs from the 0.31 release, and adds the new flat file persistence feature, as well as more fine-grain errors.

This release is the first alpha release of the 1.0 API for the bindings libraries. Here is what is now available:

  • Create and recover wallets using descriptors, including the four descriptor templates
  • Sync a wallet using a blocking Esplora client
  • Query the wallet for balance and addresses
  • Create and sign transactions using the transaction builder
  • Broadcast transactions

This release updates the bindings libraries to bdk version 0.29.0, updating rust-bitcoin to version 0.30.2.

  • APIs Changed:
    • BumpFeeTxBuilder.allow_shrinking() now takes a Script as its argument #443
    • The Address constructor now takes a Network argument #443
    • The Payload::PubkeyHash and Payload::ScriptHash now have string arguments instead of byte arrays #443
  • APIs Added:
    • The Address type now has the is_valid_for_network() method #443

This release has a new API and a few internal optimizations and refactorings.

  • APIs Added
    • Add BIP-86 descriptor templates #388

This release has a number of new APIs, and adds support for Windows in bdk-jvm.

Changelog

  • Add support for Windows in bdk-jvm #336
  • Add support for older version of Linux distros in bdk-jvm #345
  • APIs added
    • Expose is_mine() method on the Wallet type #355
    • Expose to_bytes() method on the Script type #369
  • Update BDK to version 0.28.0 #341
  • Drop support of pypy releases of Python libraries #351
  • Drop support for Python 3.6 and 3.7 #351
  • Drop support for very old Linux versions that do not support the manylinux_2_17_x86_64 platform tag #351
  • APIs changed:
    • Expose Address payload and network properties. #325
    • Add SignOptions to Wallet.sign() params. #326
    • address field on AddressInfo type is now of type Address #333
    • new PartiallySignedTransaction.json_serialize() function to get JSON serialized value of all PSBT fields. #334
    • Add from_script constructor to Address type #337
  • Update BDK to version 0.27.1 #312
  • APIs changed
    • PartiallySignedTransaction.extract_tx() returns a Transaction instead of the transaction bytes. #296
    • Blockchain.broadcast() takes a Transaction instead of a PartiallySignedTransaction. #296
  • APIs added
    • New Transaction structure that can be created from or serialized to consensus encoded bytes. #296
    • Add Wallet.get_internal_address() API #304
    • Add AddressIndex::Peek(index) and AddressIndex::Reset(index) APIs #305
  • Update BDK to version 0.26.0 #288
  • APIs changed
    • The descriptor and change_descriptor arguments on the wallet constructor now take a Descriptor instead of a String. #260
    • TxBuilder.drain_to() argument is now Script instead of address String. #279
  • APIs added
    • Added RpcConfig, BlockchainConfig::Rpc, and Auth #125
    • Added Descriptor type in #260 with the following methods:
      • Default constructor requires a descriptor in String format and a Network
      • new_bip44 constructor returns a Descriptor with structure pkh(key/44'/{0,1}'/0'/{0,1}/*)
      • new_bip44_public constructor returns a Descriptor with structure pkh(key/{0,1}/*)
      • new_bip49 constructor returns a Descriptor with structure sh(wpkh(key/49'/{0,1}'/0'/{0,1}/*))
      • new_bip49_public constructor returns a Descriptor with structure sh(wpkh(key/{0,1}/*))
      • new_bip84 constructor returns a Descriptor with structure wpkh(key/84'/{0,1}'/0'/{0,1}/*)
      • new_bip84_public constructor returns a Descriptor with structure wpkh(key/{0,1}/*)
      • as_string returns the public version of the output descriptor
      • as_string_private returns the private version of the output descriptor if available, otherwise return the public version
  • Update BDK to version 0.25.0 #272
  • APIs Added:
    • from_string() constructors now available on DescriptorSecretKey and DescriptorPublicKey #247
  • Update BDK to version 0.24.0 #221
  • APIs changed
    • The constructor on the DescriptorSecretKey type now takes a Mnemonic instead of a String.
  • APIs added
    • Added Mnemonic struct #219 with following methods:
      • new(word_count: WordCount) generates and returns Mnemonic with random entropy
      • from_string(mnemonic: String) converts string Mnemonic to Mnemonic type with error
      • from_entropy(entropy: Vec) generates and returns Mnemonic with given entropy
      • as_string() view Mnemonic as string
  • APIs removed
    • generate_mnemonic(word_count: WordCount)
  • Update BDK to version 0.23.0 #204
  • Update uniffi-rs to latest version 0.21.0 #216
  • Breaking Changes
    • Changed TxBuilder.finish() to return new TxBuilderResult #209
    • TxBuilder.add_recipient() now takes a Script instead of an Address #192
    • AddressAmount is now ScriptAmount #192
  • APIs Added
    • Added TxBuilderResult with PSBT and TransactionDetails #209
    • Address and Script structs have been added #192
    • Add PartiallySignedBitcoinTransaction.extract_tx() function #192
    • Add secret_bytes() method on the DescriptorSecretKey #199
    • Add PartiallySignedBitcoinTransaction.combine() method #200
  • Breaking Changes
    • Rename get_network() method on Wallet interface to network() #185
    • Rename get_transactions() method on Wallet interface to list_transactions() #185
    • Remove generate_extended_key, returned ExtendedKeyInfo #154
    • Remove restore_extended_key, returned ExtendedKeyInfo #154
    • Remove dictionary ExtendedKeyInfo {mnenonic, xprv, fingerprint} #154
    • Remove interface Transaction #190
    • Changed Wallet interface list_transaction() to return array of TransactionDetails #190
    • Update bdk dependency version to 0.22 #193
  • APIs Added #154
    • generate_mnemonic(), returns string mnemonic
    • interface DescriptorSecretKey
      • new(Network, string_mnenoinc, password), constructs DescriptorSecretKey
      • derive(DerivationPath), derives and returns child DescriptorSecretKey
      • extend(DerivationPath), extends and returns DescriptorSecretKey
      • as_public(), returns DescriptorSecretKey as DescriptorPublicKey
      • as_string(), returns DescriptorSecretKey as String
    • interface DescriptorPublicKey
      • derive(DerivationPath) derives and returns child DescriptorPublicKey
      • extend(DerivationPath) extends and returns DescriptorPublicKey
      • as_string() returns DescriptorPublicKey as String
    • Add to interface Blockchain the get_height() and get_block_hash() methods #184
    • Add to interface TxBuilder the set_recipients(recipient: Vec<AddressAmount>) method [#186]
    • Add to dictionary TransactionDetails the confirmation_time field #190
  • Interfaces Added #154
    • DescriptorSecretKey
    • DescriptorPublicKey
    • DerivationPath
  • Update BDK to version 0.20.0 #169
  • APIs Added
    • TxBuilder.add_data(data: Vec<u8>) #163
    • Wallet.list_unspent() returns Vec<LocalUtxo> #158
    • Add coin control methods on TxBuilder #164
  • Update BDK to version 0.19.0
    • fixes sqlite-db issue causing wrong balance
    • adds experimental taproot descriptor and PSBT support
  • APIs Removed
    • Wallet.get_new_address(), returned String, #137
    • Wallet.get_last_unused_address(), returned String #137
  • APIs Added
    • Wallet.get_address(AddressIndex), returns AddressInfo #137
  • APIs Changed
    • Wallet.sign(PartiallySignedBitcoinTransaction) now returns a bool, true if finalized #161
  • Update BDK to version 0.18.0
  • Add BumpFeeTxBuilder to bump the fee on an unconfirmed tx created by the Wallet
  • Change TxBuilder.build() to TxBuilder.finish() to align with bdk function name
  • Fix Wallet.broadcast function, now returns a tx id as a hex string
  • Remove creating a new spending Transaction via the PartiallySignedBitcoinTransaction constructor
  • Add TxBuilder for creating new spending PartiallySignedBitcoinTransaction
  • Add TxBuilder .add_recipient, .fee_rate, and .build functions
  • Add TxBuilder .drain_wallet and .drain_to functions
  • Update generate cli tool to generate all binding languages and rename to bdk-ffi-bindgen
  • Add dual license MIT and Apache 2.0
  • Add sqlite database support
  • Fix memory database configuration enum, remove junk field
  • Remove hard coded sync progress value (was always returning 21.0)
  • Move bdk-kotlin bindings and ios example to separate repos
  • Add bin to generate Python bindings
  • Add PartiallySignedBitcoinTransaction::deserialize function as named constructor to decode from a string per BIP 0174
  • Add PartiallySignedBitcoinTransaction::serialize function to encode to a string per BIP 0174
  • Remove PartiallySignedBitcoinTransaction.details struct field