Funding channels on a lightning node can be a pain. First, I need to send funds 
to my node on-chain. Then I need to make another transaction to open channels. 
Instead, we can use the BIP 78 PayJoin P2EP protocol to fund and open channels 
in a single transaction.

We do not communicate over the shared blockchain, we share the blockchain by 
communicating.

Here is an illustration of how the BIP 78 protocol pairs with the BOLT 2 
Channel establishment protocol:

┌──────────────┐ ┌─────────────────┐ ┌──────┐
│Lightning Peer│ │My Lightning Node│ │Sender│
└──────┬───────┘ └───────┬─────────┘ └───┬──┘
│ │ │
│ BOLT 2 ├─────── Bip21 with ?pj= ───────►│
│ Channel Establishment │ │
│ │◄────── Original PSBT ──────────┤
│ │ │
│ │ │
│◄──────── open_channel ─────────┤ │
│ │ │
├──────── accept_channel ───────►│ │
│ │ BIP 78 │
│ │ │
│◄─────── funding_created ───────┤ │
│ │ │
├──────── funding_signed ───────►│ │
│ │ │
│ │ PayJoin Proposal │
│ ├────── PSBT ───────►│
│ │ │
│ │ │
│ │ ┌─ PayJoin + Funding ───────┤
│ │ │ Transaction │
│ │ │ │
x│xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx│xxx ▼ xxxxxxxxxxxxxxxxxxxxxxxxxx│x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx BITCOIN NETWORK xxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
x│xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx│xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx│x
│ │ │
│◄────────channel_ready ─────────┤ │
│ │ │
├──────── channel_ready ────────►│ │
│ │ │

We use P2EP to automate [PSBT Channel 
establishment](https://gist.github.com/yuyaogawa/3d69bfa03b0702b8ff12c210bc795a6a)
 communications. As an added benefit, The BIP 78 spec helps avoid surveillance 
heuristics as well. On-chain, these transactions look like regular PayJoins 
when using Taproot outputs.

I thank Martin Habovštiak for the initial work on this idea. Thank you to 
Riccardo Casatta for developing the rust payjoin crate further. Thank you to 
Evan Lin for early hacking late nights on this idea. Thanks to my Legends of 
Lightning Tournament teammates Armin Sabouri and Nick Farrow.

We have released "nolooking," an experimental alpha that implements this work, 
on the Umbrel app store.

A brand new node can become totally connected in a single transaction that 
opens channels to outbound peers, and could immediately swap for inbound 
capacity. Just by scanning a single QR code.

[Source](https://github.com/chaincase-app/nolooking)

Want to help? The rust [payjoin crate](https://github.com/Kixunil/payjoin) 
needs love in the form of code review and unit testing. Don’t hesitate to reach 
out.

Dan
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Reply via email to