Skip to content

Commit 8456a6a

Browse files
authored
Bump payjoin directory 0.0.2 (#649)
Use standard Oblivious HTTP Key Configuration bootstrapping and decentralize directory operation
2 parents 55a4b7e + 5860274 commit 8456a6a

File tree

5 files changed

+31
-17
lines changed

5 files changed

+31
-17
lines changed

Cargo-minimal.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1651,7 +1651,7 @@ dependencies = [
16511651

16521652
[[package]]
16531653
name = "payjoin-directory"
1654-
version = "0.0.1"
1654+
version = "0.0.2"
16551655
dependencies = [
16561656
"anyhow",
16571657
"bhttp",

Cargo-recent.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1651,7 +1651,7 @@ dependencies = [
16511651

16521652
[[package]]
16531653
name = "payjoin-directory"
1654-
version = "0.0.1"
1654+
version = "0.0.2"
16551655
dependencies = [
16561656
"anyhow",
16571657
"bhttp",

payjoin-directory/CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# payjoin-directory Changelog
22

3+
## 0.0.2
4+
5+
- Do not log ERROR on directory validation errors [#628](https://github.com/payjoin/rust-payjoin/pull/628)
6+
- Use payjoin 0.23.0 (056a39b8a8849451ee605dc7ae786f9cda31ace5)
7+
- Announce allowed purposes (6282ffb2c76a93e1849ecc1a84c9f54ccf152cc5)
8+
- Serve `/.well-known/ohttp-gateway` as per RFC 9540 (6282ffb2c76a93e1849ecc1a84c9f54ccf152cc5)
9+
- Rely on `payjoin/directory` feature module [#502](https://github.com/payjoin/rust-payjoin/pull/502)
10+
- Introduce db-module-specific `Result` [#488](https://github.com/payjoin/rust-payjoin/pull/488)
11+
- Return bound port on listen for test stability (d4fa3d440abd102fcbb061b721480dee14ff91dc)
12+
313
## 0.0.1
414

515
- Release initial payjoin-directory to store and forward payjoin payloads using secp256k1 hpke

payjoin-directory/Cargo.toml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
[package]
22
name = "payjoin-directory"
3-
version = "0.0.1"
3+
version = "0.0.2"
44
authors = ["Dan Gould <[email protected]>"]
5-
description = "A directory server for Payjoin V2 coordination"
5+
description = "A store-and-forward and Oblivious Gateway Resource directory server for Async Payjoin"
66
repository = "https://github.com/payjoin/rust-payjoin"
77
readme = "README.md"
8-
keywords = ["bip78", "bip77", "payjoin", "bitcoin", "relay"]
8+
keywords = ["bip78", "bip77", "payjoin", "bitcoin", "ohttp"]
99
categories = ["cryptography::cryptocurrencies", "network-programming"]
1010
license = "MITNFA"
1111
edition = "2021"
12+
rust-version = "1.63"
1213
resolver = "2"
1314

1415
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

payjoin-directory/README.md

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
1-
# payjoin-directory
1+
# Payjoin Directory
22

3-
## Payjoin v2 Directory Server
3+
[BIP 77](https://github.com/bitcoin/bips/pull/1483) Async Payjoin (v2)
4+
peers store and forward HTTP client messages via a directory server in order to
5+
make asynchronous Payjoin transactions. This is a reference implementation of
6+
such a server
47

5-
Payjoin v2 peers store and forward HTTP client messages via a directory server in order to coordinate an asynchronous Payjoin transaction. Version 1 Requires the receiver to host a public HTTP server and to set up security using either HTTPS or Onion Services above and beyond typical HTTP client operation.
8+
V2 clients encapsulate requests using
9+
[Oblivious HTTP](https://www.ietf.org/rfc/rfc9458.html) (OHTTP) which allows
10+
them to make payjoins without the directory being able to link payjoins to
11+
specific client IP. Payjoin Directory is therefore an [Oblivious Gateway
12+
Resource](https://www.ietf.org/rfc/rfc9458.html#dfn-gateway).
613

7-
V2 clients use Hybrid Pubkey Encryption established in the bitcoin URI payment request for security instead, allowing lightweight clients secure communication without the burden of setup, which is done by the operator of this third-party directory server. This directory only sees OHTTP encapsulated, encrypted requests to prevent it from collecting metadata to break the privacy benefits of payjoin for messages who follow the spec.
8-
9-
This directory *only* accepts v2 payloads via Oblivious HTTP (OHTTP) and requests used to bootstrap OHTTP, preventing it from identifying IP addresses of clients.
10-
11-
## Architecture
12-
13-
The directory is a simple store-and-forward server. Receivers may enroll by making a request to a pubkey identified subdirectory. After success response, they may share this subdirectory as payjoin endpoint to the sender in a bitcoin URI. The sender may poll the subdirectory with a request posting their encrypted Fallback PSBT expecting a Payjoin Proposal PSBT response. The receiver may poll the enroll endpoint to await a request, later posting their Payjoin Proposal PSBT for the sender to receive, sign, and broadcast.
14-
15-
The directory does depend on a second independent Oblivious HTTP Relay server to help secure request/response metadata from the Payjoin Directory.
14+
Payjoin Directory also behaves as an [unsecured public-facing HTTP
15+
server](https://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki#unsecured-payjoin-server)
16+
in order to provide backwards-compatible support for [BIP
17+
78](https://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki) Payjoin (v1)
18+
clients.

0 commit comments

Comments
 (0)