Nolooking Roadmap Lightning PayJoin Beta Tracking
Chaincase Lightning PayJoin Roadmap
If we don't follow user feedback we will never know what they want! This is a sprint to their feedback. Let's define exactly what that means
☑ Proof of Concept
Our PoC(s) already exists. We can open a scheduled channel via lightning interaction (loptos). We can host payjoin receiving server from iOS. Epic channel funding.
- [x] PoC article
☑ Alpha: Minimum Viable P2EP
Think of the utility of Pay-to-Endpoint first PayJoin is CoinJoin functionality built on top of the P2EP interaction.
The minimum quantum of usefulness we can reliably deliver seems to be channel opens from BTCPayServer's internal wallet to their Lightning LND/CLN node. I think [Voltage(https://voltage.cloud/)] is the most popular way to do LN. Say a merchant made some bitcoins and wants to cash out KYC-free to thebitcoincompany.com's lightning only visa cards. They have to open a channel. Users ask for it
Typically, they'd move funds from BTCPay On-Chain -> LND On Chain ->, request their LN peer's channel ID, then Open a channel to them. Instead, the first step can be asking that peer for a channel ID, Queueing a channel open to them, and then spend funds directly from BTCPay On-Chain to LND Channel.
This seems to me to be the minimum stable quantum of value we can offer even before privacy preserving. It's strictly better than the first flow. I especially think e.g. Cash app will be interested in this because it's purely p2p and already in rust
- [x] CLI interface
- [x] a package / name that Chaincase ships
- [x] LND Setup ("loptos")
- [x] Depends on github.com/kixunil/payjoin
- [x] 90% crash-free PayJoin Receiver: error handling and fallbacks in payjoin receiver
- even though it doesn't crash, many errors aren't propagated into the UI. this is ok for alpha but not beta
- [x] end to end integration test payjoin library https://github.com/Kixunil/payjoin/pull/29 depends on https://github.com/Kixunil/payjoin/pull/30 or https://github.com/Kixunil/payjoin/pull/27 merged and a release published
- [x] smoke test lightning receiver
- [x] update to rust-bitcoin v0.28.1
- [x] a video demo
- [x] a demo article README
- [x] open channel from wasabi send
- [x] open channel from btcpayserver send
- [x] open channel from LND with PayJoin receive
☐ Beta PayJoin: We're preserving privacy now
Because the above alpha protocol is input substitution only and has no regard for receiver coin selection it's simple to deploy. However, CoinJoin has the added benefit of defeating common input ownership heuristic
- [x] usable channel open scheduling GUI
- [x] Get bootstrapped with 1 QR
- [x] #47 #51
- [x] #40
- [x] 90% error-handled LND & PayJoin Receiver: display errors and provide fallbacks
- https://github.com/chaincase-app/nolooking/issues/50 #60
- https://github.com/chaincase-app/nolooking/issues/33
- handle channel size was too small for peer
- Introduce
ApiErroron non-SUCCESS HTTP response instead of panic. from #10
- https://github.com/chaincase-app/nolooking/issues/54 (ACK pj request posted? https://github.com/getumbrel/umbrel-apps/pull/261)
- https://github.com/chaincase-app/nolooking/issues/34
- https://github.com/chaincase-app/nolooking/issues/50 #60
- [x] Getting Started Guide: Get receiver running on lightning node in < 20 minutes
- [x] port forwarding is the hitch here. use existing Onion? Umbrel app?
- [x] receiver coin selection (manual or automatic)
- [x] Avoid unnecessary input heuristic 1 joinmarket discussion, GKJSW '21 UIH & PayJoin paper
- [ ] Avoid UIH2. Employ output splitting perhaps
- [ ] open channel from CLN with PayJoin receive
- [x] open channel from sparrow wallet sender
- [ ] open channel joinmarket sender
- [ ] open channel from coldcard via ckbunker sender
- [ ] open channel from sideshift.ai sender
- [ ] open channel from bluewallet sender
- [ ] stretch: fee to get outside Chaincase inputs to avoid UIH via 3rd payjoin participant
☐ Production Batching Beast: ship with btcpayserver, umbrel, passport, blue wallet receiver
- [x] Semver all dependencies so we can upload to crates.io for
cargo install - [ ] Delightful channel opening scheduler GUI
- [x] Receiver running on lightning node in < 5 minutes (Umbrel)
- [ ] Stretch: Integrated GUI: Ride the Lightning, ThunderHub, an externally connected Lightning GUI (Zeus, Zap, Spark, etc) supports us
- [ ] open Taproot channels
After we have complete spec support thoroughly tested we will release into the stores without any beta label. Increments from here will continue to be driven from user feedback.