-
Notifications
You must be signed in to change notification settings - Fork 72
Description
Integrations 1.0
The ultimate blocker for releasing payjoin-1.0 proper is to validate that the API is sufficiently stable to satisfy the needs of multiple integration candidates, ideally including a mobile wallet and an exchange-like service provider. This checklist is an attempt at narrowing the scope of our focus so that we can achieve this and make the release by the end of the year.
BullBitcoin Mobile, Boltz, and Liana were selected as primary targets because they're the furthest along and already have buy-in from the respective teams. Getting the reference implementation polished is also important but IMO doesn't satisfy the "working demo" criterion for 1.0 (we need to demonstrate that our library satisfies real needs in other peoples' code).
Another pre-requisite to satisfy these integrations is ensuring that there are multiple reliable directories.
The dates below are estimated deadlines that I think we need to meet to be in good shape for 1.0 release by EOY, and I tagged relevant stakeholders in each section.
Directory Reliability - 11/1
@nothingmuch, @spacebear21, @arminsabouri
- ACME support
- Merge Support requesting certificates using ACME #1026 (comment)
- Launch secondary server with ACME
- Point primary server to that
- Decentralization
- Re-launch old server with ACME as secondary server
- Check in with Vinteum - indicated that they're willing to host one
- Bridge OHTTP relay and BIP77 to Nostr https://gist.github.com/arminsabouri/1d41501b4e5caa38870097f70ec0e604
- Metrics and alerting
- Setup a liveness script to check payjo.in/health at a frequent interval
- Setup a secondary liveness script to do a full e2e payjoin with payjo.in at a less frequent interval
- These should trigger some alerting system in case of failure. Github CI? Discord bot? Direct to email?
- Check in on discord bot
- Formalize deployment process for directory upgrades
- Publish up-to-date Docker image (or ship Rust binary since we no longer need redis and lets encrypt bot)
- Document deployment of the new payjo.in server
Bull Bitcoin Mobile - 12/1
- Upgrade to 1.0-rc with events in-memory adapter (no db migration)
- Mostly done already in https://github.com/spacebear21/bullbitcoin-mobile/commits/upgrade-payjoin/
- Needs rebase and upgrade to 1.0-rc
- DB migration for proper event persistence and processing
Boltz - Q1 2026
- Follow up on [Draft] Payjoin Submarine Swap Consolidation BoltzExchange/boltz-backend#892
- Rebase (rewrite?) and upgrade to 1.0-rc
- Gather feedback/review from Boltz devs
Liana - Q1 2026
- have Liana update to 1.85.0 MSRV
- Figure out next sprint dates & get Payjoin in there start: Nov 10 end: Q1 2026
- UNBLOCK via comms with Manuel
- Upgrade lianad draft PR to 1.0-rc WIP - Payjoin POC - DO NOT MERGE wizardsardine/liana#1806
- Split changes into smaller PRs that can be merged individually as spelled out in Payjoin integration wizardsardine/liana#1822
- Unresolved UI issues:
- Expecting difficulties w.r.t. hardware signers for PSBTs containing foreign inputs, see https://docs.google.com/presentation/d/1BZooMjRR5SseIxelsxrXPtK5JU995bprfU41XHlGL30/edit?slide=id.p#slide=id.p
payjoin-cli - 11/1
- Demonstrate proper failure handling with broadcast of fallback tx
- Implement cancel command @nothingmuch 10/14/25
- Review history command
- FK to closed session event Completed_at should be a FK to the closed session event #1146
- Fix payjoin-cli receiver returns a 500 error after a successful payjoin. #1154
- Tag & release payjoin-cli 1.0-rc.0
FFI - 12/1
- Tag & release uniffi-dart 0.1.0
- Uniformly use primitive types in FFI boundary, with runtime validation Uniformly use primitive types in FFI boundary, with runtime validation #738
- Does this remove the need for Ben's bitcoin-ffi fork dependency?
- Clean up error wrappers
- Remove public From<String> implementations from FFI error wrappers #1117
- After primitive types are enforced, revisit
ForeignError
category (I expect runtime validation and conversion of primitive types to result in a new category of errors)
- Audit exposed interface surface area (everything
pub
should be accessible in FFI downstream) - Tag payjoin-ffi 1.0-rc.0
- Tag & release payjoin_python 1.0-rc.0
- Tag & release payjoin_dart 1.0-rc.0
- Do we want to suffix language in downstream package managers? Just
payjoin
where possible seems cooler
1.0 release - 12/15
- Audit tasks in https://github.com/payjoin/rust-payjoin/milestone/1
- Write documentation
- Update README
- Validated in at least 2 fully working demos, preferably BBM + Boltz (working demo != released product)
- Tag & release payjoin 1.0
Sustainable Adoption (medium/long-term)
- Publish case studies on successful integrations (see https://lightningdevkit.org/case-studies/ and https://bitcoindevkit.org/adoption/all/)
- Write an integration guide / FAQ informed by the above
- Create demand for organic adoption (ultimately we should not have to babysit every integration)
- Have a process for tracking integrations at all stages (potential leads, in-flight, completed...)