Summary
This release enables transaction cut-through by allowing the receiver to add an arbitrary number of inputs and outputs, and allowing mixed input script types in Payjoin V2. Additionally, there are several changes to the payjoin directory API and the HPKE in an attempt to stabilize the V2 protocol. This release contains many breaking changes as a result.
Changelog
- Upgrade rustls v0.22.4
- Depend on bitcoin-ohttp
- Allow receiver to contribute multiple inputs and outputs
- Remove
contribute_witness_inputs
andcontribute_non_witness_inputs
in favor of a single consolidatedcontribute_inputs
function - Make
InputPair
public to facilitate working with inputs in coin selection and input contributions - Enable receiver fee contributions in
apply_fee
, which now requires a max_feerate parameter - Fix weight estimations for nested segwit inputs
- Fix mixed input scripts receiver check in Payjoin V1 to only error if the receiver would introduce mixed types
- Allow mixed input scripts in Payjoin V2
- Implement client end-to-end encryption using HPKE using bitcoin-hpke
- Make session initialization implicit
- Make payloads uniform by removing sender auth key
- Shorten subdirectory IDs to 64 pseudorandom bits #386
- Clarify send and receive module documentation #407
- Pad ohttp messages to consistent 8192 bytes #395
- encode subdirectory IDs in bech32 and other QR optimizations #417
- Upgrade to bitcoin v0.32.5
- Work around '#' escaping bug in bip21 crate #373
- Hide
_danger-local-https
feature behind_
prefix so it doesn't show up in docs #423
What's Changed
- Upgrade rustls v0.22.4 by @DanGould in #290
- Use More Semantic HTTP by @DanGould in #346
- Always clean up the tmp db in e2e tests by @DanGould in #347
- Move common boilerplate in
integration
module by @spacebear21 in #348 - Enable hyper-util/tokio for TokioIo by @DanGould in #349
- Add amount checks to integration tests by @spacebear21 in #351
- Remove superfluous debug print by @DanGould in #352
- Depend on bitcoin-ohttp by @DanGould in #354
- Pin tokio-util 0.7.11 for msrv 1.63.0 by @DanGould in #356
- Tx cut-through by @spacebear21 in #332
- Add Cargo-{minimal,recent}.lock to test deps by @DanGould in #357
- Implement client e2ee using HPKE by @DanGould in #355
- Make
try_preserving_privacy
param generic by @DanGould in #361 - Use native rust-bitcoin methods for weight calculations by @spacebear21 in #360
- Allow mixed input scripts in v2 by @spacebear21 in #367
- Make Session Initialization Implicit by @DanGould in #364
- Test that the encrypted payloads are uniform. by @DanGould in #374
- Derive Debug Clone on send,receive mod types by @DanGould in #376
- Add a script to update lock files by @DanGould in #379
- Modify try_preserving_privacy function signature by @spacebear21 in #377
- Minor test script fixes by @nothingmuch in #384
- Expose Sender::extract_v2 for bindings by @DanGould in #382
- Fix clippy warnings and add linting to CI by @spacebear21 in #383
- trivial: chmod a+x contrib/lint.sh by @nothingmuch in #387
- Add code coverage to CI with Coveralls integration by @spacebear21 in #385
- Shorten subdirectory IDs by @nothingmuch in #386
- Avoid uih naming by @DanGould in #400
- Remove unnecessary channel_name helper by @spacebear21 in #409
- Rust bitcoin 0.32.4 by @spacebear21 in #410
- docs: clarify send,receive function documentation by @0xBEEFCAF3 in #407
- Pad ohttp req/res messages to consistent 8192 bytes by @DanGould in #395
- Hide danger-local-https feature with _ prefix by @DanGould in #423
- Work around '#' escaping bug in bip21 crate by @nothingmuch in #373
- Reflect current Contributing practices by @DanGould in #424
- Bump payjoin version to 0.21.0 by @DanGould in #415
- Lint docs by @DanGould in #426
New Contributors
- @0xBEEFCAF3 made their first contribution in #407
Full Changelog: payjoin-0.20.0...payjoin-0.21.0