Skip to content

Releases: bitcoindevkit/bdk-sp

Release 0.1.0

28 Aug 23:15
v0.1.0
79cfaf1

Choose a tag to compare

Release 0.1.0 Pre-release
Pre-release

Summary

This initial version focuses on establishing core components for sending, receiving, and indexing Silent Payments, along with utility features and a testing framework.

This release lays a foundation for the Silent Payments integration into BDK. We encourage developers to explore the features and provide feedback for future enhancements.

Changelog

  • Silent Payments Core Library (bdk_sp):
    • Functions for encoding and decoding Silent Payment Codes (BIP352).
    • Support for deriving Silent Payment script pubkeys and shared secrets.
    • Capabilities for scanning transactions to identify Silent Payment outputs.
    • Implementation for signing PSBTs that spend Silent Payment outputs.
    • Error handling for Silent Payment-related operations.
  • Wallet Functionality (bdk_sp_wallet):
    • Wallet creation from descriptor keys for Silent Payments.
    • Balance calculation and transaction management.
    • Address derivation for spending and change.
    • Chain state tracking and block processing for relevant transactions.
    • Integration with bdk_tx for transaction handling.
  • Indexing and Scanning (bdk_sp_indexer):
    • SpIndexerV2 for scanning, indexing, and tracking Silent Payment transactions.
    • Methods for block processing, transaction relevance determination, and label management.
    • ChangeSet for tracking minimal changes to Silent Payment data.
    • Optional serde serialization for smaller builds.
  • Oracles and Data Retrieval (bdk_sp_oracles):
    • Kyoto-based filter infrastructure for accessing compact block filters.
    • BlindBit client implementation for connecting to tweak server endpoints.
    • Mechanisms to match tweaks against filters to identify transactions of interest.
  • Command Line Interface (bdk_sp_cli):
    • A CLI tool providing examples of Silent Payment wallet functionality.
    • Commands for creating and managing wallets, displaying Silent
    • Payment codes, scanning the blockchain, creating transactions, and checking balances.
    • Support for scanning payments using Kyoto Compact Block Filters (CBF) and BlindBit.
    • PSBT signing and creation capabilities.
  • Development and Testing Infrastructure:
    • Comprehensive unit tests for core Silent Payment functions.
    • Integration tests covering various Silent Payment flows, including sending and receiving.
    • Functional tests with namespacing for BIP352 vectorized cases.
    • Code harnesses for fuzz testing with AFL, libFuzz, and honggfuzz.
    • Continuous Integration (CI) with mutation testing, coverage reports, and build stability checks.
    • Documentation for contributing guidelines and API usage.

Breaking Changes

As this is the first release, there are no prior versions from which breaking changes would occur. All APIs introduced in this version are new.

What's Changed

  • Add github issue and pull request templates by @nymius in #9
  • Fix duplicated names in github templates by @nymius in #10
  • ci: update coverage job by @nymius in #16
  • ci: add incremental-mutants job to execute cargo mutants against PR diff by @nymius in #17
  • test: add code harness to fuzz with AFL, libFuzz and honggfuzz by @nymius in #23
  • test: add unit test for get smallest outpoint by @nymius in #18
  • test: add unit test for create silentpayment spks by @nymius in #19
  • test: add unit test for create partial secret by @nymius in #20
  • test: add unit test for tag_txin by @nymius in #21
  • Replace get_smallest_lexicographic_outpoint by LexMin by @nymius in #26
  • Refactor and test psbt::derive_sp by @nymius in #27
  • Scope/rename tests and sort imports by @nymius in #32
  • Rename SpInputs variants by @nymius in #33
  • docs: add CONTRIBUTING.md by @nymius in #34
  • Refactor indexer to improve example_crates interface by @nymius in #40
  • Bump version to 0.1.0 by @nymius in #42

Full Changelog: https://github.com/bitcoindevkit/bdk-sp/commits/v0.1.0