Releases: payjoin/rust-payjoin
payjoin-0.21.0
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
payjoin-cli-0.0.9-alpha
Summary
Improved checking logic and backwards compatible sends for v2
users
Changelog
- Fix output checks
- Make backwards-compatible v2 to v1 sends possible
What's Changed
- Fix README.md typo by @DanGould in #329
- Pin tokio by @DanGould in #331
- Remove unused release action by @DanGould in #330
- Make tests less verbose by @spacebear21 in #334
- Bump bitcoin-v0.32.2 by @DanGould in #333
- Send v1 to v1 receivers if v2 unsupported by @DanGould in #335
- Fix check outputs by @spacebear21 in #338
- Remove
contribute_non_witness_input
by @spacebear21 in #340 - Bump payjoin 0.20.0 by @DanGould in #343
Full Changelog: payjoin-cli-0.0.8-alpha...payjoin-cli-0.0.9-alpha
payjoin-0.20.0
Summary
Improved checking logic and backwards compatible sends for v2
users
Changelog
- remove
contribute_non_witness_input
because it was unused - Fix output checks
- Make backwards-compatible v2 to v1 sends possible
- Bump bitcoin to v0.32.2
What's Changed
- Bump payjoin-cli version to 0.0.8-alpha by @DanGould in #327
- Fix README.md typo by @DanGould in #329
- Pin tokio by @DanGould in #331
- Remove unused release action by @DanGould in #330
- Make tests less verbose by @spacebear21 in #334
- Bump bitcoin-v0.32.2 by @DanGould in #333
- Send v1 to v1 receivers if v2 unsupported by @DanGould in #335
- Fix check outputs by @spacebear21 in #338
- Remove
contribute_non_witness_input
by @spacebear21 in #340 - Bump payjoin 0.20.0 by @DanGould in #343
Full Changelog: payjoin-0.19.0...payjoin-0.20.0
payjoin-cli-0.0.8-alpha
Summary
This release attempts to stabilize the Payjoin V2 Bitcoin URI format. That includes placing v2-specific parameters in the URI's pj parameter's fragment and including the exp expiration parameter.
Commit
Changelog
- Update to payjoin-0.19.0
What's Changed
- Bump payjoin to 0.18.0 and payjoin-cli to 0.0.7-alpha by @DanGould in #310
- Update README.md by @DanGould in #315
- Cli readme ver by @DanGould in #314
- Run tests from script by @DanGould in #316
- Rewrite
send::error::ResponseError
docs by @jbesraa in #307 - Refactor ohttp keys by @DanGould in #317
- Pin cc 1.0.105 for MSRV 1.63 by @DanGould in #318
- Specify rust-version 1.63 in Cargo.toml by @DanGould in #319
- Parse and set
ohttp=
parameter frompj
URL fragment by @DanGould in #300 - Correctly set
v=2
query parameter for v2 senders by @spacebear21 in #320 - Remove vestigial TODO comment by @DanGould in #321
- Contribute even when a sender makes no change by @DanGould in #259
- Error if send or receive session expired by @DanGould in #299
- feat: implemented Clone for PjUriBuilder by @BitcoinZavior in #323
- Bump payjoin version to 0.19.0 by @DanGould in #324
- Bump payjoin-cli version to 0.0.8-alpha by @DanGould in #327
New Contributors
- @BitcoinZavior made their first contribution in #323
Full Changelog: payjoin-cli-0.0.7-alpha...payjoin-cli-0.0.8-alpha
payjoin-0.19.0
Summary
This release attempts to stabilize the Payjoin V2 Bitcoin URI format. That includes placing v2-specific parameters in the URI's pj parameter's fragment and including the exp expiration parameter.
Commit
Changelog
- Error if send or receive session expires with
exp
parameter #299 - Encode
&ohttp=
and&exp=
parameters in the&pj=
URL as a fragment instead of as URI params #298 - Allow receivers to make payjoins out of sweep transactions #259
- Fix: Correctly set v=2 query parameter for v2 senders #320
What's Changed
- Bump payjoin to 0.18.0 and payjoin-cli to 0.0.7-alpha by @DanGould in #310
- Update README.md by @DanGould in #315
- Cli readme ver by @DanGould in #314
- Run tests from script by @DanGould in #316
- Rewrite
send::error::ResponseError
docs by @jbesraa in #307 - Refactor ohttp keys by @DanGould in #317
- Pin cc 1.0.105 for MSRV 1.63 by @DanGould in #318
- Specify rust-version 1.63 in Cargo.toml by @DanGould in #319
- Parse and set
ohttp=
parameter frompj
URL fragment by @DanGould in #300 - Correctly set
v=2
query parameter for v2 senders by @spacebear21 in #320 - Remove vestigial TODO comment by @DanGould in #321
- Contribute even when a sender makes no change by @DanGould in #259
- Error if send or receive session expired by @DanGould in #299
- feat: implemented Clone for PjUriBuilder by @BitcoinZavior in #323
- Bump payjoin version to 0.19.0 by @DanGould in #324
New Contributors
- @BitcoinZavior made their first contribution in #323
Full Changelog: payjoin-0.18.0...payjoin-0.19.0
payjoin-cli-0.0.7-alpha
Summary
An upgraded asynchronous payjoin experience. This update includes a new resume
subcommand to continue any prior session. It also stops using .json files to persist data opting for a sled database instead.
Changelog
- Resume multiple payjoins easily with the
resume
subcommand. A repeatsend
subcommand will also resume an existing session (#283) - Normalize dash-separated long args (#295)
- Use sled database. Old .json storage files will no longer be read and should be deleted.
- read Network::from_core_arg (#304)
- Don't needlessly substitute outputs for v2 receivers (#277)
- Print instructions and info on interrupt (#303)
What's Changed
- Prepare Payjoin PSBT with no output keypaths by @DanGould in #270
- Improve payjoin-cli ergonomics by @DanGould in #275
- Read v2 pj_directory, not v1 pj_endpoint by @DanGould in #282
- Restore sender UTXOs before Payjoin Signing by @DanGould in #280
- Pin url 2.5.0 for MSRV 1.63.0 by @DanGould in #285
- Use url/serde by @DanGould in #286
- Fix clippy by not cloning Option by @DanGould in #289
- Bump payjoin version to 0.17.0 by @DanGould in #293
- Update release issue template by @DanGould in #292
- Pin reqwest 0.12.4 for MSRV 1.63.0 by @DanGould in #294
- Normalize dash-separated long args by @DanGould in #295
- Handle response status by @DanGould in #284
- Use sled Database to persist data by @DanGould in #281
- Add polling steps to v2_to_v2 integration test by @grizznaut in #296
- Format all projects in the repository by @DanGould in #297
- Depend on bhttp =0.5.1 exactly by @DanGould in #302
- Resume multiple payjoins by @DanGould in #283
- Use explicit names for error enum with many fields by @DanGould in #304
- cli: read Network::from_core_arg by @DanGould in #305
- Refactor output substitution by @grizznaut in #277
- Print instructions and info on interrupt by @DanGould in #303
- Document all pub
receive::v2
structs by @DanGould in #308
Full Changelog: payjoin-cli-0.0.6-alpha...payjoin-cli-0.0.7-alpha
payjoin-0.18.0
Summary
An upgraded asynchronous payjoin experience. This update focused semantically describing a Payjoin V2 "Session" and includes various enhancements and bugfixes.
Changelog
- Handle OHTTP encapsulated response status (#284)
- Upgrade
receive::v2
Typestate machine to resume multiple payjoins simultaneously (#283)Enroller
becameSessionInitializer
Enrolled
becameActiveSession
fallback_target()
becamepj_url()
pj_url_builder()
was introduced
ContextV2
becameSessionContext
- Include a bitcoin address in
SessionContext
- Include a bitcoin address in
send::ResponseError
variants fields got explicit names (#304)- Refactor output substitution with new fallable
try_substitute_outputs
(#277)
What's Changed
- Update release issue template by @DanGould in #292
- Pin reqwest 0.12.4 for MSRV 1.63.0 by @DanGould in #294
- Normalize dash-separated long args by @DanGould in #295
- Handle response status by @DanGould in #284
- Use sled Database to persist data by @DanGould in #281
- Add polling steps to v2_to_v2 integration test by @grizznaut in #296
- Format all projects in the repository by @DanGould in #297
- Depend on bhttp =0.5.1 exactly by @DanGould in #302
- Resume multiple payjoins by @DanGould in #283
- Use explicit names for error enum with many fields by @DanGould in #304
- cli: read Network::from_core_arg by @DanGould in #305
- Refactor output substitution by @grizznaut in #277
- Print instructions and info on interrupt by @DanGould in #303
- Document all pub
receive::v2
structs by @DanGould in #308
Full Changelog: payjoin-0.17.0...payjoin-0.18.0
payjoin-0.17.0
Summary
These updates help to play nicely with wallets like Bitcoin Dev Kit and Sparrow.
Changelog
- Prepare Payjoin PSBT with no output keypaths (#270)
- Restore sender UTXOs before Payjoin Signing (#280)
- Deserialize
url::Url
withurl/serde
feature instead of custom deserializer (#286)
New Contributors (since last summarized release)
- @GoodDaisy made their first contribution in #171
- @grizznaut made their first contribution in #232
- @thebrandonlucas made their first contribution in #262
Full Changelog: payjoin-0.13.0...payjoin-0.17.0
payjoin-0.13.0
Summary
payjoin-0.13.0
improves taproot and v2 payjoin support for integration with downstream projects. Much improved response error handling thanks to @jbesraa's persistence
API
- Parse json errors from the receiver into WellKnown or other ResponseErrors
Fixes
- Fixed problem where outdated OHTTP Config issue was unclear (#153)
- Support Taproot PSBT field clearing and validation (#157)
- Build v2 docs
Selected PRs
- Supply & parse receiver response errors by @jbesraa in #120
- Support taproot PSBTs by @DanGould in #147
- Fix #154
process_response
returnResponseError
by @DanGould in #155
Full Changelog: payjoin-0.12.0...payjoin-0.13.0
payjoin-0.12.0
- Introduce
v2
feature with oblivious, asynchronous, serverless payjoin - Return
RequestContext
from which either v1 or v2(Request, Context)
tuples may be extracted - Derive
Debug, Clone
fromsend::Request
,receive::UncheckedProposal
,optional_parameters::Params
- Don't derive
Debug, Clone
fromuri::{Payjoin, PayjoinParams}
- Derive
Serialize, Deserialize
forRequestContext
andEnrolled
inv2
to enable persistent state for asynchronous requests UncheckedProposal::check_can_broadcast
became::check_broadcast_suitability
allowing receiver to specify minnimum acceptable feerate