diff --git a/data/projects/splicing.mdx b/data/projects/splicing.mdx index ac2c88a2a..3bf392a13 100644 --- a/data/projects/splicing.mdx +++ b/data/projects/splicing.mdx @@ -1,67 +1,39 @@ --- title: 'Splicing' dateAdded: '2023-03-10' -summary: 'A Lightning upgrade for resizing channels without closing them.' +summary: 'Resize Lightning channels without closing them.' nym: 'Dusty Daemon' website: 'https://lightningsplice.com/' +donationLink: 'https://njump.to/npub1fuk7q4y0wzqw7vjrg7xeuuva79pg7ctg69a53zsxq6gepksufrrst9mzly' coverImage: '/static/images/projects/splicing.jpg' -git: 'https://github.com/lightning/bolts/pull/863' +git: 'https://github.com/lightning/bolts/pull/1160' twitter: 'dusty_daemon' personalTwitter: 'dusty_daemon' +nostr: 'npub1fuk7q4y0wzqw7vjrg7xeuuva79pg7ctg69a53zsxq6gepksufrrst9mzly' tags: ['Lightning', 'Protocol'] +showcase: true +fund: general +announcementLink: '/blog/bitcoin-grants-july-2023#splicing' --- -## About this project +Splicing is a Lightning protocol improvement that lets users resize channels without closing them and opening new ones. Instead of tearing down an existing channel to add or remove liquidity, a splice updates the channel's funding transaction in place. -Splicing is a proposal for BOLT 2, BOLT 7, and BOLT 9 that is maintained by -[Dusty Daemon](https://lightningsplice.com/dusty_daemon.html). +> The increased liquidity flows improve all aspects of Lightning including payment speed, payment fees, and payment reliability. +> +> — [Dusty Daemon](/blog/advancements-in-lightning-infrastructure#splicing) -- See the complete proposal here: [Splicing Specification](https://github.com/lightning/bolts/pull/863/files) -- Discussion here: [Splicing Spec Conversation](https://github.com/lightning/bolts/pull/863) +Splicing gives users a cleaner way to add or remove liquidity, helping node operators manage capital more efficiently. -At its core Splicing is a simple concept, the ability to resize Lightning -channels. But what's become apparent over time is the ability to resize -Lightning channels gives us many additional benefits that were not intuitively -obvious at first, and will fundamentally improve the utility of Lightning. +## Why fund it? -There are really two sides to what Splicing brings: +Splicing has been discussed for years, but turning a specification into production-ready code takes focused engineering. It touches protocol design, transaction construction, edge-case handling, interoperability, and developer education across multiple Lightning implementations. -- User-facing improvements -- Backend liquidity improvements +OpenSats began supporting Splicing in July 2023 through a [Bitcoin grant](/blog/bitcoin-grants-july-2023#splicing) to Dusty Daemon, who has been driving both the specification and the first implementation work. That support later expanded into [long-term support](/blog/dusty-daemon-receives-lts-grant) as the project matured. -Splicing is the process of moving a lightning channel's funding utxo into a new -"spliced" utxo. The exact steps involved are quite simple: sign the 2of2 -multisignature transaction to a new location. Doing it in a trustless manner -however, is not simple at all. +## What's next? -- Splicing explained: [lightningsplice.com](https://lightningsplice.com/splicing_explained.html) -- Splicing video explanations: [lightningsplice.com/videos](https://lightningsplice.com/splicing_videos.html) +The official merging of the splicing specifications in the [BOLTs repository](https://github.com/lightning/bolts) has moved this work closer to broader deployment. In the [lightning infrastructure impact report](/blog/advancements-in-lightning-infrastructure#splicing), Dusty describes progress on a full implementation in Core Lightning, work on [Splice Script](https://github.com/ElementsProject/lightning/pull/6980) for more expressive transaction flows, and parallel efforts to bring Splicing into LDK. -## About Dusty +Dusty's latest reports show that the work has shifted from ratifying the spec to shipping usable tools. The splicing spec is now ratified, Core Lightning and Eclair have gone through final interoperability work, and Splice Script now supports multi-channel splices plus simpler `splicein` and `spliceout` flows. -I have been working on Bitcoin code for five years and 1.5 years ago I decided -to dedicate myself to programming for the Lightning network. I began by learning -about Lightning in depth and making contributions to the CoreLightning project. -I felt particularly accomplished rooting out some complex flakiness bugs and -porting the project to MacOS. - -I had heard of splicing in 2018 and saw it making the news rounds last year. On -Clubhouse and Twitter Spaces bitcoiners were talking excitedly about using -submarine swaps and I suggested people use splicing instead! The confused -silence was palpable, no one had heard about it all. Diving in I realized only -the splicing spec had been released — no one had actually written the code! So I -decided I would take on the work of coding up the first implementation. By March -of this year I had made the world’s first splice and published it on chain! You -can see it here: -[twitter](https://twitter.com/dusty_daemon/status/1522413475909316610), -[mempool](https://mempool.space/tx/c143bbd3f983e7d07bbccf571352c2432c8e97a543d26a6962582021ec788804). - -Since then I have been working on finishing up the proper & complete splice -implementation. The code is now in a beta state which you can see here: -[PR #5675](https://github.com/ElementsProject/lightning/pull/5675) - -I’m looking for funding to finish the code to a polished state, build a thorough -testing framework, evangelize to companies that would benefit from splicing, and -bring the implementation to the other Lightning node code bases. - -- Dusty's worklog: [ddustin/worklog](https://github.com/ddustin/worklog) +The next step is wider interoperability and production adoption. Once multiple Lightning stacks can rely on the same underlying behavior, Splicing can become a standard liquidity tool instead of a niche feature. diff --git a/next.config.js b/next.config.js index 124c1f45a..9cb816b49 100644 --- a/next.config.js +++ b/next.config.js @@ -110,6 +110,11 @@ module.exports = () => { destination: '/projects/showcase', permanent: true, }, + { + source: '/projects/dusty', + destination: '/projects/splicing', + permanent: true, + }, { source: '/faq/grantees', destination: '/faq/grantee', diff --git a/scripts/generate-project-og.mjs b/scripts/generate-project-og.mjs index 37d8afa49..795b04baa 100644 --- a/scripts/generate-project-og.mjs +++ b/scripts/generate-project-og.mjs @@ -128,7 +128,9 @@ function renderSvg(project, coverImage) { const titleSvg = titleLines .map( (line, index) => - `${escapeXml(line)}` + `${escapeXml( + line + )}` ) .join('')