[DIS] fiber-payjoin-kit: Collaborative Channel Funding Privacy for the Nervos Fiber Network RESub
Executive Summary
When a Fiber Network payment channel is opened, the funding transaction is permanently recorded on CKB Layer 1. Standard channel openings use a single funder, all CellInputs belong to one wallet. Chain surveillance tools use this to identify who opened the channel and cluster their complete transaction history.
fiber-payjoin-kit is an open-source Rust library enabling collaborative channel funding on the Nervos Fiber Network. Both parties contribute CellInputs to the funding transaction, making chain attribution impossible.
This proposal requests $6,000 for Phase 1: the core coordination primitive and two working end-to-end demos against a real Fiber node.
Funding Request
| Component | Amount | Purpose |
|---|---|---|
| Phase 1 — Core Primitive + Demos | $6,000 | CellInput coordination engine, Fiber node demos, documentation |
1. The Problem
Standard Fiber channel funding exposes the funder permanently on CKB L1:
Standard channel open:
CellInput: Wallet_A (100 CKB) ← single funder, permanently tagged
Output: Channel script
Collaborative channel open:
CellInput: Wallet_A (60 CKB) ─┐
CellInput: Wallet_B (40 CKB) ─┴─ who funded what? impossible to determine
Output: Channel script
Two concrete pain points the community has raised:
Fee-contribution deadlock: A user wanting to open a channel may have CKB locked in large UDT cells with insufficient liquid CKB for on-chain fees. Collaborative funding allows the counterparty to contribute a fee-covering Cell, unblocking channels that would otherwise fail at fee estimation.
Funding origin exposure: Every channel opening creates a permanent on-chain link between the funder’s wallet and the channel — an operational security risk for any privacy-conscious node operator or user.
2. The Solution
fiber-payjoin-kit runs as local middleware. The Fiber node is unchanged. Both parties coordinate CellInputs before the funding transaction is broadcast, following Fiber’s existing TxUpdate/TxComplete negotiation flow.
Per direct feedback from jjyr on the CKBuilder-projects review: working at the Cell model level using unsigned CellInput payloads is the correct boundary. Fiber’s funding process is built directly on CKB transactions with no higher-level coordination hook — this is the right instrumentation point.
Non-interactive fallback: if the counterparty is offline, the library falls back to standard single-funder channel opening with no broken payments.
3. Why Us — Proof of Execution
Following the feedback’s that the community needed to see a working Lightning implementation first, we built lightning-payjoin-kit.
That implementation is now complete:
- Real two-node LDK harness (
tests/ldk_two_node_harness.rs): two actual LDK ChannelManagers reach a usable channel through a collaboratively-funded transaction - Full flow: FundingGenerationReady → collaborative PSBT → LdkManualFunding → FundingTxBroadcastSafe → usable channel
- Bitcoin Core regtest: Docker bitcoind accepts and mines the collaborative funding transaction
- 14 test files covering every layer of the stack
Implementation notes: lightning-payjoin-kit/IMPLEMENTATION.md at main · ILE-Labs/lightning-payjoin-kit · GitHub
How this differs from payjoin/nolooking:
payjoin/nolooking is a server-side LSP model requiring a centralized operator. lightning-payjoin-kit is client-side, coordinating directly between the two parties with no trusted intermediary. It also enforces a commitment-safety boundary that the LSP model does not address. On CKB, coordination uses unsigned CellInput payloads rather than PSBT, with Cell-Deps validation specific to CKB’s model.
4. Development Roadmap
Phase 1 — Core Coordination Primitive
Deliverable 1 — Coordination Engine ($4,000)
- Two-party CellInput coordination: propose → contribute → validate → sign → finalize
- Counterparty proposal validation: amount, script integrity, input checks
- TxUpdate/TxComplete flow instrumented for wallet developer visibility
- Non-interactive fallback when counterparty is offline
- Full unit test coverage, devnet broadcast confirmed
Deliverable 2 — Fiber Node Demos and Documentation ($2,000)
- Demo A: fee-contribution scenario — collaborative funding solving the CKB fee deadlock
- Demo B: privacy channel opening — multi-input funding via real Fiber node
- Both demos show TxUpdate/TxComplete message flow so wallet developers can inspect and adapt
- Architecture documentation, README, integration example
Phase 2 — Separate Future Proposal
Fiber P2P async relay, CLI tooling, wallet integration examples, mainnet deployment.
5. About the Team
ILE Labs — ILE-Labs · GitHub
Charles Emmanuel — Project Lead
GitHub: @CodexEmmzy | Telegram: @charlesCode
Onyekachukwu Nweke — Protocol Lead, Lightning Network and threshold signatures
GitHub: @Onyekachukwu-Nweke
Bolaji Ahmad — Blockchain Engineer, CKBuilders programme participant
GitHub: @bolajahmad
Open-source work: lightning-payjoin-kit (complete), foc-devkit (Filecoin), mx-tx-simulator (MultiversX, fixed 4 upstream SDK bugs), stylus-debug-suite (Arbitrum, live on crates.io)
6. Risks
| Risk | Mitigation |
|---|---|
| Fiber node API changes | Demos scoped to current TxUpdate/TxComplete interface |
| CellInput edge cases vs PSBT | Lightning PoC proves state machine; CKB differences isolated in Cell adapter layer |
About This Resubmission
We submitted this proposal in May 2026 but did not receive enough community votes within the 7-day window to advance. Following feedback from everyone, we have made three significant changes:
- Reduced scope to a Phase 1 proof of concept only, with a reduced ask of $6,000
- Built the Lightning equivalent (lightning-payjoin-kit) first as proof of execution — a working two-node LDK harness is now complete
- Incorporated direct technical feedback on the correct instrumentation point and concrete user pain points to target
Email: [email protected] | Telegram: @charlesCode