eclair
eclair copied to clipboard
Implement "Simple Taproot Channels" BOLT proposal
This PR implements https://github.com/lightning/bolts/pull/995 which introduces a new channel format where funding transactions send to an aggregated musig2 public key instead of a 2-of-2 multisig address:
- funding and closing transactions become cheaper (by about 15%)
- on-chain footprint becomes more private: funding and closing transactions are impossible to distinguish from other p2tr transactions
Basic interop testing (opening/closing channels, sending/receiving payments) pass with lnd v0.18
The trickiest part of this PR is the update to the splicing protocol: splicing means that there can be multiple commitment transactions that are active at the same time, and signatures must be exchanged for all of them. With the new musig2-based funding transaction scheme, this means generating and exchanging musig2 nonces in advance, which requires modifications to the interactive tx and splicing protocols that are not (yet) covered by the BOLT proposal.
This is still a WIP, we also need to add support for simple taproot channels to https://github.com/ACINQ/lightning-kmp.
Based on https://github.com/ACINQ/eclair/pull/2896
Codecov Report
Attention: Patch coverage is 95.17974% with 59 lines in your changes missing coverage. Please review.
Project coverage is 86.38%. Comparing base (
40f13f4) to head (51ec562). Report is 6 commits behind head on master.
:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@ Coverage Diff @@
## master #2868 +/- ##
==========================================
+ Coverage 85.92% 86.38% +0.46%
==========================================
Files 219 220 +1
Lines 18488 19477 +989
Branches 794 814 +20
==========================================
+ Hits 15886 16826 +940
- Misses 2602 2651 +49
| Files | Coverage Δ | |
|---|---|---|
| ...core/src/main/scala/fr/acinq/eclair/Features.scala | 100.00% <100.00%> (ø) |
|
| ...r/acinq/eclair/blockchain/fee/OnChainFeeConf.scala | 95.65% <100.00%> (ø) |
|
| ...in/scala/fr/acinq/eclair/channel/ChannelData.scala | 100.00% <ø> (ø) |
|
| ...cala/fr/acinq/eclair/channel/ChannelFeatures.scala | 100.00% <100.00%> (ø) |
|
| ...inq/eclair/channel/fsm/ChannelOpenDualFunded.scala | 87.52% <100.00%> (+0.52%) |
:arrow_up: |
| ...inq/eclair/channel/fsm/CommonFundingHandlers.scala | 92.00% <100.00%> (+0.88%) |
:arrow_up: |
| ...q/eclair/channel/publish/ReplaceableTxFunder.scala | 84.81% <100.00%> (-0.53%) |
:arrow_down: |
| ...q/eclair/crypto/keymanager/ChannelKeyManager.scala | 88.88% <100.00%> (+1.38%) |
:arrow_up: |
| ...air/crypto/keymanager/LocalChannelKeyManager.scala | 100.00% <100.00%> (ø) |
|
| ...air/crypto/keymanager/LocalOnChainKeyManager.scala | 87.50% <100.00%> (ø) |
|
| ... and 21 more |
closed in favour of https://github.com/ACINQ/eclair/pull/3005