<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[bitcoin++'s Insider Edition: Scaling Bitcoin]]></title><description><![CDATA[Scaling Bitcoin is a weekly publication where Janusz publishes essays related to bitcoin layer 2s and other technical proposals that scale bitcoin as money.]]></description><link>https://insider.btcpp.dev/s/scaling-bitcoin</link><image><url>https://substackcdn.com/image/fetch/$s_!Y_ng!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F30eeeceb-d343-4c5d-93d2-4da0d7357725_650x650.png</url><title>bitcoin++&apos;s Insider Edition: Scaling Bitcoin</title><link>https://insider.btcpp.dev/s/scaling-bitcoin</link></image><generator>Substack</generator><lastBuildDate>Sat, 09 May 2026 04:13:31 GMT</lastBuildDate><atom:link href="https://insider.btcpp.dev/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[btcplusplus LLC]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[hello@btcpp.dev]]></webMaster><itunes:owner><itunes:email><![CDATA[hello@btcpp.dev]]></itunes:email><itunes:name><![CDATA[~nifty~]]></itunes:name></itunes:owner><itunes:author><![CDATA[~nifty~]]></itunes:author><googleplay:owner><![CDATA[hello@btcpp.dev]]></googleplay:owner><googleplay:email><![CDATA[hello@btcpp.dev]]></googleplay:email><googleplay:author><![CDATA[~nifty~]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[An interview with John Light]]></title><description><![CDATA[Leading up to the Alpen x Starknet announcement, the Insider Edition caught up with John Light to discuss bitcoin rollups&#8217; progress three years after his HRF-sponsored report was released]]></description><link>https://insider.btcpp.dev/p/an-interview-with-john-light</link><guid isPermaLink="false">https://insider.btcpp.dev/p/an-interview-with-john-light</guid><dc:creator><![CDATA[janusz]]></dc:creator><pubDate>Wed, 15 Oct 2025 13:19:17 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Fqvo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F468a4d53-35b1-4f13-9d13-6f268160eefa_1600x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Fqvo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F468a4d53-35b1-4f13-9d13-6f268160eefa_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Fqvo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F468a4d53-35b1-4f13-9d13-6f268160eefa_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!Fqvo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F468a4d53-35b1-4f13-9d13-6f268160eefa_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!Fqvo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F468a4d53-35b1-4f13-9d13-6f268160eefa_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!Fqvo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F468a4d53-35b1-4f13-9d13-6f268160eefa_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Fqvo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F468a4d53-35b1-4f13-9d13-6f268160eefa_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/468a4d53-35b1-4f13-9d13-6f268160eefa_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1979291,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://insider.btcpp.dev/i/176228493?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F468a4d53-35b1-4f13-9d13-6f268160eefa_1600x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Fqvo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F468a4d53-35b1-4f13-9d13-6f268160eefa_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!Fqvo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F468a4d53-35b1-4f13-9d13-6f268160eefa_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!Fqvo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F468a4d53-35b1-4f13-9d13-6f268160eefa_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!Fqvo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F468a4d53-35b1-4f13-9d13-6f268160eefa_1600x900.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Alpen Labs and Starknet <a href="https://x.com/Starknet/status/1978445862171726204">have announced their partnership</a> to build a unified rollup ecosystem on bitcoin. At the core of the partnership are R&amp;D efforts to make Alpen&#8217;s Glock-based, zk-verifier accessible to other protocols. This R&amp;D will be funded by a grant from Starknet&#8217;s protocol stewards, the Starknet Foundation, and will see the verifier be released as a public good, enabling any system to integrate with Glock and Strata (Alpen&#8217;s bitcoin bridge).</p><p>Having followed this space for a little over 3 years now, it feels that this Alpen and Starknet&#8217;s announcement has been a long time coming. Walk with me:</p><p>12 years ago, Starknet co-creator Eli Ben-Sasson <a href="https://www.youtube.com/watch?v=Q4nWoEKUtgU&amp;t=205s">presented on zero-knowledge proofs</a> at a bitcoin conference in San Diego. He described how this emerging technology could help bitcoin scalability and add greater privacy to peer-to-peer payments. He was one of the first people to present research on this design space.</p><p>9 years on, Trey Del Bonis penned the <a href="https://tr3y.io/articles/crypto/bitcoin-zk-rollups.html">first blog post</a> on how a ZK rollup on bitcoin might be designed. A few months after this blog was released, John Light released the research report &#8220;<a href="https://bitcoinrollups.org/">Validity Rollups on Bitcoin</a>&#8221; that was partially sponsored by StarkWare, the creators of Starknet. It was the first research report covering how validity rollups might improve bitcoin&#8217;s transaction throughput, create more expressive execution layers, and improve privacy. Both Light and Trey now work at Alpen Labs.</p><p>At the heart of this partnership are individuals who have long been advocating for the use of zero-knowledge proofs to improve bitcoin&#8217;s use as peer-to-peer money. Some for over a decade. It&#8217;s exciting to see this subculture come into bitcoin&#8217;s mainstream and bring novel protocols into production.</p><p>Still, there is nuance when we talk about &#8220;ZK on bitcoin&#8221;. Many people compare it to ZK systems being leveraged in other ecosystems. This comparison is unfortunate for two reasons. One, it undermines the efforts of researchers and developers who are trying to achieve what was once thought to be impossible. And two, it doesn&#8217;t fully articulate the trust assumptions and tradeoffs that these systems make to achieve their goal of verifying zero-knowledge proofs.</p><p>To cut through the noise, I sat down with Alpen Labs&#8217; Technical Product Manager and bitcoin rollups pioneer, John Light, to discuss the recent Starknet partnership, unified rollup ecosystems, and if ZK is, in fact, the best way to scale bitcoin.</p><p><em>I&#8217;ve edited the transcript down for brevity and readability. Assume any errors are my own. &#8212; Janusz</em></p><h2>Interview with Light</h2><p><em><strong>Janusz: A little over a year ago, I remember you gave a talk on this idea of interoperable rollups and execution layers. So I&#8217;m looking at this partnership and it makes me wonder, is this the ultimate goal? To build a network of interoperable execution layers that share a single bitcoin bridge?</strong></em></p><p><strong>Light:</strong> Well, I kind of gave the game away in that talk. It was certainly very forward looking, but we have had this vision for how our platform would evolve over time. In some ways this partnership with the Starknet Foundation is a big step forward towards realizing that vision. The plan is for them to be one of the first, if not the first, execution domain to run alongside Alpen on top of Strata (Strata is Alpen&#8217;s bitcoin bridge). Once you go from one to two, there&#8217;s a clear path to going from two to three, three to four, four to n, and you eventually have a world where a virtually unlimited number of execution domains can plug into this shared verifier. This gives different execution layers access to trust-minimized BTC without having to deploy a different verifier for all of these different execution domains on bitcoin Layer 1.</p><p>So I think we&#8217;re going to see a world where there are different heterogeneous execution domains plugged into bitcoin. These layers will benefit from trustless interoperability, potentially fast preconfirmations for transfers between them, and I think that&#8217;s going to ultimately result in a better UX than the fragmented alternative. The fragmented alternative being a world where everybody has to maintain their own verifier, bridge, and so forth. In that world, if you want to do transfers between layers, you either have to do atomic swaps or go through the very slow process of transferring funds on the base layer. The vision is to build an interoperable world of execution layers, not a fragmented one. The Starknet Foundation partnership definitely contributes to that.</p><p><em><strong>Janusz: I mean this is definitely the endgame. The partnership mentions &#8220;Glock&#8221; specifically as a shared verifier, to enable the bridge. I assume it&#8217;s a type of &#8220;optimistic-ZK verifier&#8221; that we can do on bitcoin today. What&#8217;s the difference between Glock and the BitVM family of protocols that started this wave of ZK verification?</strong></em></p><p><strong>Light:</strong> I would consider BitVM and Glock to be two different techniques for achieving the same kind of trust model - this 1-of-N trust assumption. In BitVM, you&#8217;re doing this bisection game where you want to find the specific computation you know somebody did incorrectly and basically force them to equivocate. And that&#8217;s a game where the data is posted onchain and is where the game is actually played out. In the early iterations of BitVM, this required many rounds of interactivity. With BitVM2, the goal was getting this down to two or three rounds of interactivity so that anybody could be the challenger. We (teams from the BitVM alliance) have proven there is a way to do this and there are working implementations of BitVM2 on testnet today. We have one running on testnet right now. </p><p>But, the amount of data that you have to put onchain for the assertion and disprove transactions is very high. It ends up costing a lot in bitcoin terms, and that directly correlates to the amount of stake that each of the operators has to put up to be a part of the operator set. The stake has to cover the cost of running the challenge game. The high cost of putting all this data onchain ends up bloating the cost of the protocol overall.</p><p>The high costs affect the economic efficiency of the bridge and that inefficiency is eventually passed down to the user. So Glock, which is short for garbled locks, improves this by moving most of the data offchain. It uses garbled circuits to create this new primitive that we call &#8220;conditional disclosure of secrets&#8221;. In this model, if one of the participating parties lies about something, they disclose a secret (the secret being their private key).</p><p>It&#8217;s a very different way of achieving the 1-of-N trust model. The BitVM family of protocols and the Glock family of protocols descend into two different rabbit holes. Engineers can go down both and then make a decision on what to optimize for a given use case.</p><p><em><strong>Janusz: My understanding is Glock is using a novel proving system to support this garbled circuits mechanism. Could you quickly highlight the reason for doing so?</strong></em></p><p><strong>Light:</strong> The thing that was interesting to us about using this novel DV Pari SNARK, instead of Groth16, was that it results in much less data that needs to be communicated, and stored, by operators and watchtowers; like orders of magnitude difference. We were concerned that without some pretty hardcore optimization, or additional breakthroughs to Groth16, that the setup process for operators would take months. You might even have to ship out specific hard drives that are capable of just dealing with the amount of data that had to be communicated and stored as a part of this protocol.</p><p>This isn&#8217;t impossible, but we wanted to make this more practical and have it to where someone could run the software on consumer hardware or a standard cloud setup. But, there&#8217;s been a lot of optimizations from the BitVM alliance as well around Groth16 which may make it more practical.</p><p><em><strong>Janusz: I want to pivot a bit with our remaining time here. Three years ago, you released the Validity Rollups on Bitcoin paper. It was the first official write up on how rollups on bitcoin might work. Looking back on it, how has the journey been since writing the paper?</strong></em></p><p><strong>Light:</strong> It&#8217;s definitely been quite a journey, for sure. One of the big breakthroughs was Casey Rodarmor releasing the witness envelope technique as a part of the Ordinals protocol. Following that release, rollup developers figured out that these envelopes would actually be useful for building rollups and using bitcoin as a data availability layer. </p><p>That wasn&#8217;t obvious immediately. But it worked, and people were able to build what&#8217;s known as a sovereign rollups on bitcoin. Sovereign rollups are rollups without verifiable bridges.</p><p>It became more of a phenomenon as more people figured it out. Eric Wall was one of the first to present on the possibility of using bitcoin block space for sovereign rollups. Then, the Sovereign SDK was perhaps the first team to ship a proof-of-concept. Rollkit from Celestia built their own demo around the same time.</p><p>I think it quickly snowballed from there. For the first time, a large group of people were talking about building rollups on bitcoin. The obvious question then became &#8220;how do we get BTC onto the rollup&#8221;? For a period of time there, we were stuck in the pre-BitVM paradigm where you had to settle for an honest-majority multisig. It was the best we could do.</p><p>Then the BitVM paper dropped and changed everything. Suddenly we moved on from honest-majority multisigs, with <em>at best</em> some proof-of-stake baked in, to working on bridges that <em>really</em> had this 1-of-N trust assumption. From there, BitVM has accelerated from the concepts laid out in original paper to an entire family of protocols. As mentioned, we also have the new Glock family of protocols and there&#8217;s other implementations, such as BitVMX and BitSNARK, that were inspired by BitVM. Most people are now focusing on gabled circuits and it&#8217;s seen as the state-of-the-art for what&#8217;s possible on bitcoin right now.</p><p>Teams are working to improve all the things we mentioned earlier; economic efficiency, interactivity, the amount of data being communicated offchain and being put onchain, etc. Now, we&#8217;re pretty confident that we can get these costs down to a small amount of data; basically some proof data, and maybe a counterproof, onchain. With the latest optimizations, this is a relatively small amount of data and is practical for production use.</p><p>But, this is still a federation, right? We haven&#8217;t moved on from the &#8220;federation paradigm&#8221; for bitcoin bridges. Now, it&#8217;s certainly a significant improvement compared to an honest-majority multisig. Users only have to trust a single member of the federation. However, there&#8217;s clearly a next step that has yet to be realized, which I discussed in my paper, which is actually getting rid of the federation. We should look to build a trustless and permissionless verifier that people can directly interact with through bitcoin Script.</p><p>That&#8217;s going to require a soft fork. This conclusion has not changed. Currently the script size to verify a validity proof is too big to fit in a single bitcoin block. So a soft fork is still on the to-do list, but a lot of the other components are ready and it&#8217;s great to see teams building rollups within the restrictions that bitcoin has in place today.</p><p>That&#8217;s what people are excited about. People are pushing forward with improving the state-of-the-art because there are real improvements here. But ultimately, I think we should build rollups to ensure they have all the things we love about bitcoin; bitcoin native, permissionlessness, trustlessness, decentralization, and censorship resistance.</p><p>Why should we give up these properties just because we&#8217;re on an L2?</p><p><em><strong>Janusz: The closing question I have is why should bitcoiners continue to follow the developments of rollups? What would you say to people who are reading this to motivate them to read the original paper and follow the development of Alpen and others?</strong></em></p><p><strong>Light:</strong> The benefits are nuanced. Rollups certainly improve the trust assumption regarding federated bridges for the average user.</p><p>You go from having to trust an honest-majority to only having to trust a single member of the federation to get your bitcoin out of the system. That&#8217;s a big improvement in my opinion since we have seen federations where multiple nodes have been knocked out. Raising the bar to fully compromise the system is a huge breakthrough.</p><p>And if you&#8217;re an operator, you have unilateral exit capabilities because you are 1 of the N federation members. So for operators, who are used to operating in bitcoin bridges where they need cooperation from other parties to get their funds out of the system, it drastically improves the trust model. I think that&#8217;s a big deal for them. Especially when you&#8217;re talking about operators who want to put a significant amount of bitcoin into the system. This assumption nearly eliminates their counter-party risk.</p><p>Beyond the trust model, there&#8217;s so much potential to build new execution domains that add new capabilities for bitcoin that we don&#8217;t see directly on the layer 1. Whether that&#8217;s bitcoin-like side systems with additional opcodes, or execution environments that are quite different from bitcoin (e.g. privacy systems or expressive smart contract layers), it&#8217;s going to be really cool to experiment with bitcoin the asset. This experimentation gives us a peek into the future of what it could be like if we had softforks that enabled trustless verification directly on bitcoin. I hope we don&#8217;t hold ourselves, and bitcoin, back from realizing the full potential here. There&#8217;s going to be glimmers and hints of what&#8217;s to come and developers are really going to push the limits over the next few years.</p><p>Based on what I&#8217;m seeing now, it&#8217;s really something that we should all look forward to. It&#8217;s exciting and I&#8217;m looking forward to seeing what the future holds.</p>]]></content:encoded></item><item><title><![CDATA[Clearing up misconceptions on Citrea]]></title><description><![CDATA[A somewhat unbiased opinion on how we should define rollups...]]></description><link>https://insider.btcpp.dev/p/clearing-up-misconceptions-on-citrea</link><guid isPermaLink="false">https://insider.btcpp.dev/p/clearing-up-misconceptions-on-citrea</guid><dc:creator><![CDATA[janusz]]></dc:creator><pubDate>Thu, 21 Aug 2025 20:55:06 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!Hkx0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b116a8c-82b9-4a7a-8e4b-602e4bc8da16_1456x816.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Hkx0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b116a8c-82b9-4a7a-8e4b-602e4bc8da16_1456x816.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Hkx0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b116a8c-82b9-4a7a-8e4b-602e4bc8da16_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!Hkx0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b116a8c-82b9-4a7a-8e4b-602e4bc8da16_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!Hkx0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b116a8c-82b9-4a7a-8e4b-602e4bc8da16_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!Hkx0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b116a8c-82b9-4a7a-8e4b-602e4bc8da16_1456x816.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Hkx0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b116a8c-82b9-4a7a-8e4b-602e4bc8da16_1456x816.png" width="1456" height="816" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b116a8c-82b9-4a7a-8e4b-602e4bc8da16_1456x816.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:816,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1423439,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://insider.btcpp.dev/i/171575652?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b116a8c-82b9-4a7a-8e4b-602e4bc8da16_1456x816.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Hkx0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b116a8c-82b9-4a7a-8e4b-602e4bc8da16_1456x816.png 424w, https://substackcdn.com/image/fetch/$s_!Hkx0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b116a8c-82b9-4a7a-8e4b-602e4bc8da16_1456x816.png 848w, https://substackcdn.com/image/fetch/$s_!Hkx0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b116a8c-82b9-4a7a-8e4b-602e4bc8da16_1456x816.png 1272w, https://substackcdn.com/image/fetch/$s_!Hkx0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b116a8c-82b9-4a7a-8e4b-602e4bc8da16_1456x816.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Good afternoon Insiders. Today, admittedly, I&#8217;m double dipping. I&#8217;ve been thinking a lot about rollups and their supporting architectures since the start of the OP_RETURN war. So today&#8217;s post further expands on a tweet I previously wrote about Citrea&#8217;s state transition function.</p><p>In case you forgot (you didn&#8217;t, but just in case), bitcoin twitter sent Citrea through the wringer due to their impending use of OP_RETURN for their BitVM challenge transaction. It was the genesis of the Core versus Knots war. Everyone was up in arms about arbitrary data being posted to bitcoin. Some complained and suggested Citrea just use Liquid and others accused bitcoin core of &#8220;pathing the way for bitcoin rollups&#8221;.</p><p>Through all of this, it became clear to me that people, from both sides of the aisle, had misconceptions about how Citrea works. So, I decided to review their node implementation and state transition function. Buckle up, we&#8217;ve got a few things to cover.</p><h2>Rollups</h2><p>Rollups are alternative blockchains that apply their state transition function over data that is posted to bitcoin and made available by bitcoin full nodes. This means they use bitcoin for data availability. Rollups do this so they do not have to bootstrap their own consensus set. Anyone who runs a bitcoin full node can run a rollup full node, query bitcoin blocks, find transactions relevant to the rollup, and derive the entire state of the rollup, from genesis, to come to settlement with other rollup nodes.</p><p>Wars have been long fought over defining rollups from the lens of the bridge or the rollup itself. There are two camps. One says you should solely define a rollup based on which data availability layer it uses; for example, a rollup that uses bitcoin for data availability would be a &#8220;bitcoin rollup&#8221;. The other side says you should additionally classify rollups through the lens of the bridge. That&#8217;s why you hear the terms &#8220;zk rollup&#8221; or &#8220;optimistic rollup&#8221;. People are adding an additional word to distinguish the rollup based on the bridge that users <em>socially view</em> as the canonical one.</p><p>Bitcoin has further confused everyone with teams&#8217; claims that bitcoin rollups are &#8220;optimistic zk rollups&#8221; even though they&#8217;re really neither of these things. Rollups are rollups. Bitcoin rollups are bitcoin rollups.</p><p>Why does the distinction matter? When you view rollups as a system that &#8220;verifies its state on bitcoin&#8221;, you&#8217;re led to believe that bitcoin is enforcing the logic of another system. This is not the case. The logic of the alternative system is enforced by its full node set which effectively makes rollups alternative blockchains.</p><p>Bitcoin does not enforce state transitions related to rollup systems. Bitcoin is incapable of doing this and is completely unaware of the rollup&#8217;s state. To bitcoin, the data that the rollup posts to bitcoin is arbitrary data that needs to be interpreted by another set of nodes and software.</p><p><em><strong>Bitcoin does not enforce rollup state transitions and rollups do not inherit bitcoin&#8217;s double spend resistance. For rollups, bitcoin is the data availability layer that sees rollup nodes to derive their state from bitcoin and gives rollup nodes an ability to enforce finality based on the data posted to bitcoin.</strong></em></p><p>When I created the first community site dedicated to bitcoin rollups (now offline), I looked at rollups through the lens of the bridge&#8230; which was wrong.</p><p>So we&#8217;re using this blog as a summary of my past writing to describe, again, <em><strong>how bitcoin rollups actually work </strong></em>using Citrea as an example.</p><h2>Looking at Citrea&#8217;s state transition function</h2><p>We&#8217;re going to break down a previous tweet I wrote on Citrea&#8217;s state transition function to show how the rollup comes to &#8220;settlement&#8221;. <strong>Settlement is when the rollup nodes agree on the proposed state transition from the rollup operator and finalize a state update</strong>. Additional commentary is italicized.</p><div><hr></div><p>Citrea is a bitcoin rollup. This means that it uses bitcoin for data availability. It is live on testnet and is approaching mainnet.</p><p>To advance Citrea's state, like any blockchain, a state transition function is applied over the network's previous state to generate a new state. This is how it works in Citrea:</p><p><em>A state transition function is a set of logic that rollup full nodes apply over a set of proposed transactions. This means they execute the transactions. If the proposed transactions are valid, then all full nodes will additionally be able to execute them and finalize the state update for the rollup.</em></p><p>Citrea's users submit transactions to a sequencer - an offchain node that is responsible for preemptively ordering transactions and submitting them to bitcoin on behalf of users.</p><p><em>A sequencer is an enshrined node that is responsible for ordering transactions for the rollup network and submitting the transactions as a &#8220;compressed batch&#8221; to bitcoin. The order of the transactions is not finalized until it is posted to bitcoin. Citrea full nodes consider the transactions &#8220;preconfirmed&#8221; before they are posted to bitcoin.</em></p><p>As the sequencer constructs these L2 "blocks" offchain, Citrea's full nodes need to agree on the state that the sequencer is proposing. To do this, they connect to the sequencer directly, offchain, receive blocks, and execute/apply the state transition function over the transactions. This means they execute all of the proposed transactions that have been sent to the sequencer. After all of the nodes do this, a new state root is generated.</p><p>Periodically, the sequencer posts a commitment transaction with the latest generated state root. This commitment transaction attesting to the most recent state in Citrea, highlighting the differences in the previous state and new state. Full nodes additionally watch bitcoin to ensure that the commitment transaction, in fact, matches the most recent state they generated locally.</p><p><em>After Citrea full nodes verify that the state root in the sequencer commitment matches the one that they generated locally, they consider the state confirmed. This enables the rollup full nodes to come to &#8220;settlement&#8221;. For new nodes, it enables them to derive the entire history of the rollup from genesis.</em></p><p>The Citrea prover watches these commitments and computes the state differences between each commitment. If valid, it posts proofs of execution to bitcoin. After these proofs are posted, the rollup is considered final from the view of light clients (i.e. bridges). Citrea full nodes are also able to detect any errors in proof submission.</p><p><em>After the proof is submitted to bitcoin, Citrea full nodes view the state as &#8220;proven&#8221;. The state cannot be reversed at this point.</em></p><p>If the sequencer commitment, or proof submission, was invalid, the network would halt. Additionally, the prover cannot generate an "invalid proof" per se, so any light clients would not finalize as a result. So if the sequencer posted "malicious" data, the network would freeze (as would corresponding bridges).</p><p><em>This means that the sequencer does not enforce settlement/finality of transactions. A sequencer that posts an invalid batch of transactions would halt the system. The rollup nodes, who drive the finalization of the network, would not be able to execute invalid transactions. This means that the sequencer cannot force the rollup nodes to come to settlement on a state update they do not agree to.</em></p><p>Citrea full nodes do not need to keep a full history of this state as the data required to construct the state of Citrea is made available by bitcoin. After the commitments match the locally state generated, Citrea nodes discard the data. If a node went offline, they could sync their node directly from the data made available by bitcoin.</p><p><em>Rollup nodes do not need to keep a full record of the network state as the data is made available by bitcoin full nodes. If a rollup node went offline, they would catch up to the rollup network&#8217;s state based on data made available by bitcoin.</em></p><p>And by anchoring its state to bitcoin through SNARKs, Citrea is also able to provide a mechanism to convince bridge programs of the state of the rollup. Thus, finalizing them and giving them the ability to execute withdrawals based on the most recent state of Citrea.</p><p><em>This is the bridge part. Notice that it has nothing to do with rollup settlement and finality! The bridge is an external program that is <strong>convinced</strong> of the state of the rollup to process user withdrawals. It is a bitcoin contract that needs to be convinced of an argument to execute withdrawals. Remember, bitcoin cannot enforce the rollup state. So the bridge does not enforce the finality of the rollup system. Rollup nodes hold all the power!</em></p><div><hr></div><h2>Sounds complicated&#8230; Why build this?</h2><p>It might sound complicated, but rollups are actually very simple. Look at it this way - there&#8217;s node software that dictates the rules that transactions need to abide by. If the proposed state contains valid transactions, then the full nodes can compute a new state by executing them. That&#8217;s it! It&#8217;s really how any blockchain works.</p><p>Still, bitcoin is really limited in throughput. It doesn&#8217;t make much sense, at a high level, to try and cram a bunch of rollup transactions into bitcoin blocks. Why do this?</p><h3>Bitcoin is the &#8220;forever chain&#8221;</h3><p>If you believe bitcoin is the forever chain, meaning that people will always run bitcoin full nodes and be able to make bitcoin transaction data available to other users, including rollup users, then it might make sense to post your systems data there for security reasons &#129335;</p><p>This is useful for rollups who want to have an extremely strong (some say too strong) guarantee that their data will indeed be made available as long as bitcoin is running.</p><h3>Rollups <em>can</em> build really good bridges</h3><p>Okay&#8230; now, while bridges don&#8217;t directly enforce finality for rollups, rollups can build really good bridge protocols. People want improved bridge protocols so they can move funds into another system for more expressive applications. A lot of developers want to build these applications. Rollups look to satisfy this demand by offering the &#8220;best&#8221; sidesystem bridge protocol with the least amount of trust assumptions.</p><p>But <em>how</em> do they provide this? Let&#8217;s break it down:</p><h4>Not reliant on the economic security of another system</h4><p>If a rollup posts data to another system, and is therefore a rollup<em><strong> to that system</strong></em>, then we&#8217;re reliant on that system&#8217;s validators/full nodes to make the data available to rollup nodes to advance the rollup state. If there&#8217;s a lot of economic activity on this rollup, and subsequent value locked in its corresponding bitcoin bridges, the data availability layer may want a piece of that! The attack vector here is that the data availability layer withholds the data and doesn&#8217;t make it available to rollup full nodes. Without the data, the rollup would effectively halt and the data availability layer could hold the rollup at ransom.</p><p>If you post the data to bitcoin, this attack vector is invalid. That&#8217;s why bitcoin rollups are considered more secure than rollups to other chains from the lens of a bitcoin user.</p><p><em>Yes, I know you can socially hard fork the alternative DA layer and slash the malicious validators tokens if they did this. But you cannot deny it is an additional trust assumption and would cause quite the headache!</em></p><h4>Light clients!</h4><p>Bridge programs on bitcoin need to be aware of the current blockheight and blockhash, of a given sidesysten, to facilitate withdrawals. This is where a light client, a small program that tracks the blockheight and blockhash but not the full contents of blocks, is useful. A light client is responsible for relaying the latest blockheight and blockhash to a smart contract.</p><p>Bitcoin script is not expressive enough to execute a light client in an onchain smart contract. This is why we use BitVM - to execute a bitcoin light client that attests to the current state of the rollup. Because rollups post their transaction data to bitcoin, they only need to execute a bitcoin light client in their BitVM instance. This light client also attests to the sidesytem state root for that given bitcoin blockheight.</p><p>If the BitVM bridge is for another system, it must also execute light clients for the other chains. For example, if the BitVM bridge was between a sidechain and bitcoin, then the bridge must also execute a sidechain light client. This light client would follow the sidechain fork with the most economic weight behind it and view it as the &#8220;correct&#8221; chain.</p><p>Sidechain validators could be malicious! If a majority of validators created a private fork that attested to a malicious state that would see the bridge drained, then the BitVM challenge game would be invalidated. This is because the sidechain light client, in this instance, thinks that the malicious state is correct, as the malicious fork has the most economic security behind it.</p><p>This sees the bridge rely on a honest majority assumption from that systems&#8217; validators, or a federation, to provide an honest attestation for the alternative chain&#8217;s latest state.</p><p>Because of this, rollups <em>can</em> build bridges that have fewer trust assumptions than sidechains.</p><h4>One day&#8230; self-proposed exits</h4><p>I don&#8217;t know how this would work on bitcoin, but theoretically, a rollup user could bypass the system's enshrined sequencer node and go directly to a bridge operator to facilitate a withdrawal. As long as 1 bridge operator is willing to work with the user, then the user can exit this system. Teams will argue (rightly) that this enables a users to bypass the rollup operator(s) and rely on the trust assumptions on the bridge alone if they wanted to get their money out. Citrea has designed <a href="https://x.com/0x_orkun/status/1951676109894095320">this</a>.</p><h4>But&#8230; rollups can have many bridges!</h4><p>Just because a rollup <em>can have a more secure</em> sidesystem bridge from BitVM doesn&#8217;t mean it&#8217;s going to be the only bridge! There&#8217;s no reason that a rollup can&#8217;t simply use a federation for its bridge program. It kind of defeats the whole reason to build a rollup, but you could still do it.</p><h2>Al fin</h2><p>That&#8217;s it! Rollups on bitcoin <em>can</em> be the most trust-minimized sidesystem. They are sovereign systems that use bitcoin for data availability. This enables the rollup full nodes to come to settlement without having to bootstrap their own consensus set, and it lets them build really good bridges if they want to use bitcoin, the asset, on their system.</p><p>Of course, this is all theoretical. In practice, bridges and other supporting infrastructure will have their own trust assumptions so a lot of the security assumptions for a user are asset specific. It&#8217;s important to analyze these trust assumptions in isolation of the rollup.</p><p>If you think anything I said here is wrong, @ me on <a href="https://x.com/januszg_">twitter</a>. This is a hill I&#8217;m willing to die on :)</p><p>&#8211;Janusz</p>]]></content:encoded></item><item><title><![CDATA[Lightning swaps *are* the connective tissue]]></title><description><![CDATA[Arkade's hijacking of the Baltic Honeybadger point-of-sale system was rightly the event's headliner, but it also proves that Lightning will be bitcoin's interoperability layer...]]></description><link>https://insider.btcpp.dev/p/lightning-swaps-are-the-connective</link><guid isPermaLink="false">https://insider.btcpp.dev/p/lightning-swaps-are-the-connective</guid><dc:creator><![CDATA[janusz]]></dc:creator><pubDate>Thu, 14 Aug 2025 18:02:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!8JM1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c05f670-7e27-4e53-b0f1-deaec1ade339_1600x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!8JM1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c05f670-7e27-4e53-b0f1-deaec1ade339_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!8JM1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c05f670-7e27-4e53-b0f1-deaec1ade339_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!8JM1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c05f670-7e27-4e53-b0f1-deaec1ade339_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!8JM1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c05f670-7e27-4e53-b0f1-deaec1ade339_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!8JM1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c05f670-7e27-4e53-b0f1-deaec1ade339_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!8JM1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c05f670-7e27-4e53-b0f1-deaec1ade339_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c05f670-7e27-4e53-b0f1-deaec1ade339_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1800295,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://insider.btcpp.dev/i/170989700?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c05f670-7e27-4e53-b0f1-deaec1ade339_1600x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!8JM1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c05f670-7e27-4e53-b0f1-deaec1ade339_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!8JM1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c05f670-7e27-4e53-b0f1-deaec1ade339_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!8JM1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c05f670-7e27-4e53-b0f1-deaec1ade339_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!8JM1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c05f670-7e27-4e53-b0f1-deaec1ade339_1600x900.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>There&#8217;s two conflicting camps in bitcoin scaling at the moment. One camp is insistent on taking technologies from other ecosystems and applying them to bitcoin. Examples of this include projects building rollups and EVM-compatible sidechains. The other camp is looking to build out what I call bitcoin-native protocols &#8211; systems that maintain compatibility with bitcoin UTXOs and enable users to unilaterally exit a protocol with pre-signed bitcoin transactions. Examples of this include <a href="https://arkadeos.com/">Arkade</a> and <a href="https://spark.money/">Spark</a>.</p><p>Regardless of which camp you&#8217;re in, it&#8217;s worth reiterating that these systems don&#8217;t natively integrate with each other. For example, a user of a Spark wallet can not directly pay a user of an Arkade wallet. The systems are independent in their design and have different methods for coordinating offchain transactions.</p><p>To solve this, teams have consciously designed these systems to communicate with the broader bitcoin ecosystem. All systems coming to market are integrating with Lightning Gateways that connect their protocol to the Lightning Network. The idea of &#8220;Lightning as a connective tissue&#8221; has been touted by some as the logical path forward for the bitcoin layer 2 systems. Others, myself included at times, have called it cope.</p><p>The connective tissue notion argues that Lightning, while a self-custodial bitcoin L2, will trend towards institutional usage. The user complexity of managing channels has seen users opt for different solutions, but these new solutions will still be able to communicate with Lightning so that bitcoin has a universally accepted messaging layer and settlement system.</p><p>Not going to lie, at first, I thought this idea was bullshit. But as I&#8217;ve followed bitcoin L2 developments over the last 18 months, I can&#8217;t deny that all protocols coming to market, especially those that are truly bitcoin adjacent (meaning, no shitcoins), are leveraging integrations with the Lightning Network to ensure they can communicate with different protocols.</p><h2>The connective tissue case was strongly made in Riga</h2><p>This evidence was on full display in Riga last week. Ark Labs took Baltic Honeybadger by storm with their <a href="https://x.com/ArkLabsHQ/status/1955617205967782203">announcement</a> that every payment that a user made at the event was facilitated by Arkade on the back end. Conference goers paid for goods and services with Lightning, and Lightning compatible, wallets (niftynei can confirm). But on the back end, merchants received Arkade VTXOs. These VTXOs are claims on Bitcoin L1 UTXOs that settle periodically with the help of the Arkade operator. How this worked:</p><div><hr></div><p>To start the transaction process, the Arkade merchant gives Boltz a payment hash of the preimage. Using this hash, Boltz creates an invoice on <em>their</em> Lightning node that eventually gets sent to the paying user&#8217;s wallet. Let&#8217;s say it&#8217;s a Fedi wallet. <br><br>When a Fedi user scans the invoice, they take the invoice to their Fedimint Gateway. The Fedi user then locks up Ecash that will be spendable by the Gateway <em><strong>only after</strong></em> the gateway pays the invoice and receives the preimage as their proof of payment. Since the gateway charges a fee for this service, they&#8217;re incentivized to initiate the lightning payment. Boltz receives this payment &#8220;attempt&#8221;.</p><p>After receiving this attempt, Boltz, the Lightning Gateway for the Merchant, creates a VTXO contract, <em><strong>on Arkade</strong></em>, that is locked to the same hash that was provided by the Arkade merchant at the start of the transaction. The Arkade merchant then claims the VTXOs by revealing the hash preimage. Boltz uses this same preimage to claim the Lightning payment, and then the preimage is passed to the Fedimint gateway which uses the preimage to unlock and claim the Ecash from the payee.</p><p>The transaction is finalized.</p><p><em>A preimage is used as a &#8220;proof-of-payment&#8221; in the Lightning Network. After they&#8217;re generated by the recipient, only hashes of the preimage are initially given to payees. Payees then create contracts that basically state &#8220;I paid you this much if you can reveal the full preimage for this hash&#8221;. After the receiver reveals the preimage to the payee, the payment finalizes as the preimage satisfies the contract initiated by the payee.</em></p><div><hr></div><p>After receiving VTXOs, merchants trust that the Arkade operator will collaborate with them to settle their newly received VTXOs into a new Ark round. Merchants no longer need to manage channels and inbound liquidity, but they must participate in a <a href="https://docs.arkadeos.com/learn/FAQ#what-is-a-%E2%80%9Cbatch-output%E2%80%9D-and-how-does-onchain-settlement-work%3F">Batch Output transaction</a>, with the Arkade operator, to settle the transactions and have unilateral, and irreversable, custody of their funds.</p><p>As mentioned in their Twitter <a href="https://x.com/ArkLabsHQ/status/1955617273273848137">thread</a>, this doesn&#8217;t mean the merchants are operating Lightning infrastructure directly. It means that they operate a system that enables users of Lightning, Spark, Arkade, and even Ecash wallets to pay the merchant through service providers that communicate with each other over the Lightning Network. Any user of a Bitcoin second layer that interfaces with Lightning can transact with any other bitcoin second layer, since the protocols can execute swaps through Lightning, seamlessly handling inter-network exchange.</p><p>This arguably simplifies running a bitcoin point-of-sale system since merchants won&#8217;t need to care what network they&#8217;re users are on and vice versa.</p><p>This use case isn&#8217;t restricted to merchant payments. Also in Riga, <a href="https://x.com/EricSirion/status/1954577791539654672">two bitcoin developers</a> engaged in an Ecash to Arkade transaction. Ecash notes can not be transferred to Arkade users directly. Swap providers, on both sides of the payment, execute the transfer across the Lightning Network.</p><p>In Riga, the Fedimint user initiated the payment request to their counterparty by swapping locally minted Ecash with the <a href="https://github.com/fedimint/fedimint/blob/master/docs/gateway.md">Fedimint Gateway</a>. On the Arkade side, the user received a VTXO that was swapped to them via Boltz who generated the invoice, and received the payment, on the Lightning side. This payment was executed just like our example outlined above.</p><p>Users in this scenario don&#8217;t need to have channels open with each other directly. They don&#8217;t even need to be on the same network. Instead, they used systems that are able to communicate with a &#8220;bridge&#8221; protocol: the Lightning Network.</p><h2>New bitcoin layers further confirm this trend</h2><p>This trend is not isolated to events in Riga. It&#8217;s been gaining steam for months.</p><p>A few weeks ago, bitcoin Twitter was engulfed with Wallet of Satoshi&#8217;s Spark <a href="https://x.com/walletofsatoshi/status/1940169795565146571">announcement</a>. Wallet of Satoshi is building a payments wallet built on top of Spark, Lightspark&#8217;s implementation of a Statechain protocol. Instead of opening a channel with a counterparty, users deposit funds into a 2-2 multisig with the Spark Operator.</p><p>Having a central party, the Spark Operators, coordinate transfers across a network improves the user experience. Shortly put, the trust assumptions of a statechain are superior to custodial solutions but are greater than that of self-custodial Lightning. Plenty of users are willing to take on a stronger trust assumption related to the operator for an improved user experience. The reason can is because the Spark developers ensured that their network deployed Lightning Gateways from launch that accept Spark vUTXOs in exchange for paying Lightning invoices.</p><p>Wallet of Satoshi is not, literally, a &#8220;Lightning wallet&#8221;. It is a Spark wallet that can engage in Spark transfers. Users can use Spark transfers to engage with Lightning gateways that swap Spark vUTXOs for Lightning liquidity. Yes, Wallet of Satoshi users would&#8217;ve been able to pay for goods in Riga to merchants using the Arkade protocol. All through Lightning swaps.</p><p><em>&#8220;What&#8217;s most impressive? It&#8217;s completely invisible from the wallet experience. Users won't even notice Spark powering their wallet, and that&#8217;s exactly how we think infrastructure should be.&#8221; &#8212; Lightspark</em></p><h2>Not competitive, but rather, an evolution</h2><p>These developments aren&#8217;t competitive with the Lightning network. They&#8217;re an evolution of the network, from a purely peer-to-peer payments system, to additionally being a communication layer between various bitcoin-adjacent protocols.</p><p>Users will leverage different Bitcoin layers for different reasons. They might prefer distributing funds across various Ecash mints and leveraging multi-nut payments. Others might enjoy using Spark wallets as they have to deal with the complexity of managing channels and can receive payments directly on Spark without making a bitcoin transaction. Merchants may prefer to receive L2 payments over Arkade as it that them bitcoin finality without the need to manage channels.</p><p>Whatever the use case, it&#8217;s very clear that users of Cashu mints, Fedimints, statechains, ark protocols, sidechains, rollups, and more, will all be able to interoperate through the Lightning Network. Headlines will rightfully claim that this is a win for newly developed networks like Arkade. We should also maintain that bitcoin&#8217;s OG Layer 2, Lightning, is providing a platform that seamlessly facilitates instant, global commerce.</p><p>The connective tissue meme is playing out in real time. Enjoy it. It&#8217;s beautiful.</p><p><em>Want to see the different types of Layer 2 networks that are coming to market and integrating with Lightning? Bitcoin++ is hosting its Scaling Edition in September. Topics will range from new Layer 2 systems coming to market and the infrastructure supporting them. Tickets are onsale now. Use code INSIDER before August 21st to get 21% off your ticket.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://btcpp.dev/istanbul&quot;,&quot;text&quot;:&quot;Grab your ticket&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://btcpp.dev/istanbul"><span>Grab your ticket</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[BitVM-based bridges and emergency upgrades]]></title><description><![CDATA[New bitcoin bridges offer improved trust assumptions over standard federations, but there may be a catch...]]></description><link>https://insider.btcpp.dev/p/bitvm-based-bridges-and-emergency</link><guid isPermaLink="false">https://insider.btcpp.dev/p/bitvm-based-bridges-and-emergency</guid><dc:creator><![CDATA[janusz]]></dc:creator><pubDate>Wed, 06 Aug 2025 14:51:20 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!prRr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a183af-a229-4851-ae49-a17e70d92df9_1600x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!prRr!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a183af-a229-4851-ae49-a17e70d92df9_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!prRr!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a183af-a229-4851-ae49-a17e70d92df9_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!prRr!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a183af-a229-4851-ae49-a17e70d92df9_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!prRr!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a183af-a229-4851-ae49-a17e70d92df9_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!prRr!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a183af-a229-4851-ae49-a17e70d92df9_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!prRr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a183af-a229-4851-ae49-a17e70d92df9_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e2a183af-a229-4851-ae49-a17e70d92df9_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:2226798,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://insider.btcpp.dev/i/170270435?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a183af-a229-4851-ae49-a17e70d92df9_1600x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!prRr!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a183af-a229-4851-ae49-a17e70d92df9_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!prRr!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a183af-a229-4851-ae49-a17e70d92df9_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!prRr!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a183af-a229-4851-ae49-a17e70d92df9_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!prRr!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe2a183af-a229-4851-ae49-a17e70d92df9_1600x900.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>As BitVM-based bridges near production use, I&#8217;ve started thinking about a topic known as &#8220;emergency upgrade&#8221; paths. With the help of the Citrea team, I was able to work through different ways to validate a BitVM bridge&#8217;s spending paths to determine if it has an emergency upgrade mechanism. This blog is an attempt to discuss how upcoming projects might implement these spend paths. Please note that emergency upgrade paths, and the multisigs that spend them, are not a &#8220;BitVM feature&#8221;. They&#8217;re a mechanism that are widely used in bridges secured by proving systems, and I believe they will be leveraged within BitVM-based bridge constructions. This post is exploratory and hopefully sparks a discussion on how we should disclose these types of spend paths.</em></p><p>Ever been in a jam where you need to withdraw money from your account instantly? Maybe your car broke down and you need to pay a mechanic. Or, maybe you found out your friend had a few too many cocktails and needs to get bailed out of jail.</p><p>Well, BitVM-based bridges probably want the same guarantees. We want bridge operators to be bound by the rules of the specific BitVM set up. But what if something went wrong? What if there was an exploit in the system that could see an attacker take all of the money with no recourse or cause funds to be permanently frozen?</p><p>If an honest actor finds a bug, they&#8217;d likely want a way to move all the money out of the bridge contract before an exploit occurs.</p><p>We achieve this with<strong> emergency multisigs</strong> &#8211; an additional spending path that can be implemented in BitVM-based bridges to enable a set of signers, or a single signer, to spend the funds out of a given bridge instance and bypass the challenge game and optimistic reimbursement mechanism entirely.</p><p>BitVM is a new technology and its corresponding bridge programs are nascent implementations. Some teams don&#8217;t want to ship these new bridge constructions without guardrails in place. Early partners who operate the bridge, and supply liquidity, may also want an emergency off switch that ensures their funds can be moved if a bug arises. Immutability doesn&#8217;t align with business incentives 100% of the time.</p><p>Emergency upgrade multisigs might already exist in live BitVM bridge implementations. More bridge constructions are coming to market and they&#8217;re likely going to launch with security councils &#8211; a permissioned group of signers that operate an emergency multisig. If the security model in these systems ultimately falls back to a permissioned M-of-N multisig (albeit a temporary one), users have a right to know.</p><p>I&#8217;ve spent the last two weeks diving into how these security councils might be set up and have thought through ways to validate their existence (with the help of some BitVM alliance members, of course).</p><p>The exercise raised an interesting &#8220;problem&#8221;. We can&#8217;t verify the spending paths, onchain, until they are spent. Meaning, some users may never even know that a permissioned M-of-N multisig is the ultimate trust assumption in a BitVM-based bridge if its participants never disclose it.</p><h2><strong>BitVM Bridges refresher</strong></h2><p><a href="https://bitvm.org/">BitVM</a> is a way to perform arbitrary computation on bitcoin pioneered by Robin Linus. It sparked a new wave of bitcoin development, and a number of teams are using this technique to build layer 2 bridge contracts. These contracts enable layer 2s to have multiple operators escrow bitcoin that backs wrapped bitcoin assets on the layer 2. But, most crucially, it additionally enables an optimistic fraud detection mechanism that can be used to dispute any malicious (or incorrect) withdrawal attempts from a bridge operator.</p><p>In the set up phase, a group of signers come together in an N-of-N multisig to presign the transaction graph for a given bridge. If someone deletes their key used in the pre-signing ceremony, then the UTXOs locked in the bridge contracts can only be spent by the pre-defined spending scripts.</p><p>In some designs, operators must front liquidity and then request a reimbursement from the bridge contract. The spending paths restrict the spending paths to the operators themselves after a certain period of time passes. Other designs enable users to work with honest operators who give them the private key needed to spend the funds out of the bridge.</p><p>In either design, an honest operator is required to process a withdrawal. If they are dishonest, for example, they attest to a withdrawal that conflicts with a sidesystem's latest state, then they can be challenged by a watchtower.</p><p><em>A watchtower is an entity, or person, that runs the BitVM verifier software and is able to challenge, and stop, fraudulent withdrawal requests from BitVM bridge operators.</em></p><p>An example of an incorrect withdrawal could be an operator withdrawing more bitcoin from the BitVM instance than they&#8217;re supposed to. This <strong>is why payouts from the bridge contract include a timelock</strong>. It enables a watchtower ample time to submit a challenge. The window of time between the withdrawal transaction being broadcasted and the timelock is known as a <em><strong>challenge window</strong></em>.</p><p>Operators (or users) should only be able to withdraw funds from the bridge after a challenge window has passed. In BitVM-based bridges, theft requires all operators and watchtowers to collude to rug the bridge. If 1 party is honest, regularly checks the chain, and their verifier is online and willing to submit a challenge, the funds cannot be stolen. This 1-of-N trust assumption is desirable because it means we trust <em>less</em> people than a standard federation where a dishonest majority can steal the funds.</p><p>The example above creates a more trust-minimized bridge set up than what&#8217;s currently on bitcoin today. But in practice, the core trust assumption will likely fall back to a permissioned multisig<strong> </strong>(albeit temporarily).</p><h2><strong>An introduction to emergency multisigs</strong></h2><p>As pointed out in the intro, teams can (and will) include an emergency spending path in their BitVM instances. Whether they should, or shouldn&#8217;t, isn&#8217;t really important. It&#8217;s more important to simply acknowledge that nearly all in-production BitVM-based bridges will include an emergency spend mechanism in their infancy. We should expect that teams properly disclose the nature of these emergency spend paths.</p><p><em>Emergency multisigs are not a feature of BitVM. They&#8217;re widely used in bridges secured by proving systems as a way to upgrade systems if a bug is found. Rollups in other ecosystems have set a precedent for deploying emergency multisigs.</em></p><p>BitVM bridges use v1 SegWit scripts to create, and pre-sign, the spending paths for their bridge contracts. Taproot Scripts use MAST to enable a variety of spend conditions for a single UTXO. When a leaf script is used to spend a UTXO, only the individual leaf script, that was used to spend the locked funds, is revealed.</p><p>The <a href="https://bitvm.org/bitvm_bridge.pdf">BitVM2 paper</a> correctly states that pre-signed transactions can restrict an operator to only withdraw funds in a way that can be challenged. But, there&#8217;s nothing stopping the developers of a particular instance to include <em>additional spending paths</em>, that can withdraw funds from the bridge, in the Taproot tree.</p><p><em>Each spending path for a Taproot tree is called a &#8220;leaf&#8221; script. To unlock and spend the UTXO, only one of the valid leafs needs to be revealed.</em></p><p>Let&#8217;s look at an example: the first path, or leaf, is the standard withdrawal path with a challenge window. The other path is an emergency spending path that can bypass the challenge window.</p><p><strong>Leaf A: the 1-of-N fraud proof, protected spend condition</strong></p><pre><code>OP_PUSHBYTES_2 &lt;SomeDelay&gt;
OP_CSV
OP_DROP
OP_PUSHBYTES_32 &lt;OperatorPubKey&gt;
OP_CHECKSIG</code></pre><p><strong>Leaf B: a 2 of 3 emergency peg-out spend condition</strong></p><pre><code>OP_PUSHBYTES_32 &lt;pubkey1&gt;
OP_CHECKSIG
OP_PUSHBYTES_32 &lt;pubkey2&gt;
OP_CHECKSIGADD
OP_PUSHBYTES_32 &lt;pubkey3&gt;
OP_CHECKSIGADD
OP_PUSHNUM_2
OP_NUMEQUAL</code></pre><p>Leaf A is a normal withdrawal reimbursement in a BitVM instance. After a challenge period (&lt;SomeDelay&gt;) passes, a pre-defined operator can redeem the money from the bridge contract. If the operator who spends a UTXO locked in the bridge contract is dishonest, a watchtower can challenge them during the challenge window (&lt;SomeDelay&gt;, the time in between a BitVM contract spend and the expiration of the timelock) and prevent the dishonest withdrawal request.</p><p><em>Leaf A represents a pre-signed transaction constructed by the N-N pre-signing committee.</em></p><p>Leaf B, on the other hand, is an immediate spend path where a 2/3 multisig can immediately spend all of the funds in the BitVM contract. They can do this if the team detects an unexploited bug in the contract, or they decide to run off with all the money.</p><p><em>When I say &#8220;contract&#8221;, I&#8217;m referring to the BitVM contract that governs the spending conditions for a bitcoin UTXO.</em></p><p>Both of these spending paths can exist in a bridge&#8217;s Taptree. While it&#8217;s not necessarily desirable to have spending paths that bypass the BitVM challenge-response game, there&#8217;s no reason they couldn&#8217;t be implemented.</p><p>Still, the spending conditions within these trees can be quite flexible. In our example, we only display two spending conditions. However, teams can create trees that contain spending conditions with various types of logic. For example, an emergency that can result in user funds being stolen, can have no delay and be spent by a small 2-of-3 signer set. Whereas a broader protocol upgrade can be initiated by a 9-of-12 security council and be bound by a timelock.</p><p>Independent of the specific design, as they&#8217;ll vary across implementations, it&#8217;s important that we can verify the various spending conditions. An &#8220;issue&#8221; with modern bitcoin scripts is that you can&#8217;t publicly validate the script until it is spent. Strictly related to BitVM-based bridges, this means that we cannot verify the spending paths until a specific leaf is used to spend a UTXO. Remember, when a leaf is spent, the spending conditions of that leaf alone is revealed. So if we only have an instance where normal withdrawals are executed, we cannot verify if an emergency spend path exists and vice versa.</p><p>This can raise an issue. If the team inserted an emergency spend mechanism into the Taptree, but never disclosed it, users can never be sure that there isn&#8217;t a permissioned multisig, or one person, that can spend all the money locked in the bridge.</p><p>After mulling on this for a week or so, I&#8217;ve thought of some ways a team can disclose a bridge&#8217;s spend paths.</p><h2>Disclosure methods</h2><h3><strong>Simply disclose the spend paths in the docs</strong></h3><p>The simplest way to go about this is for teams to publish the various privileged roles in their docs. A team would simply publish who the bridge operators are, who participated in the pre-signing ceremony, who runs the light client(s), and who the watchtowers are.</p><p>Some disclosure is better than none, but we can&#8217;t verify the spending paths for the bridge based on statements in documentation sites alone. Being able to directly verify the scripts is more desirable.</p><h3><strong>Test transactions prior to deposits</strong></h3><p>Teams can, of course, spend test transactions for the various spending paths from the bridge addresses. They can spend some funds in a given instance, eventually reveal all the spend paths, and users can verify the spending paths themselves.</p><p>This requires teams to spend every leaf in the Taptree. But even with test transactions, we can never be sure that a team didn&#8217;t insert an additional spending condition that was never spent and revealed. Teams can always opt to not spend a specific leaf and not reveal the spending condition. This is typically a feature of Taproot MAST, but in the context of bridges, it can lessen users&#8217; confidence that teams are in-fact revealing the entirety of the spending script.</p><p>Unfortunately, test transactions don&#8217;t provide the level of transparency we&#8217;re expecting as we trust the teams to test every valid spend path.</p><h3><strong>Leverage large covenant emulation committees</strong></h3><p>Another path forward is that teams leverage a substantially large covenant emulation committee, and give independent parties the opportunity to participate in pre-signing all of the transactions within the bridge's transaction graph. This would give independent parties the ability to verify the existence of emergency multisigs and how many signers are present within them.</p><p>But, this still requires users to trust the covenant committee&#8217;s participants rather than verify the scripts themselves. I&#8217;d still argue there is a path forward where we can give any user the opportunity to verify the bridge&#8217;s spend paths.</p><h3><strong>Create a standardized disclosure method</strong></h3><p>In my opinion, we should expect teams to publish the entire tapscript MAST that was created for the BitVM instance.</p><p>If teams provide the internal pubkey that created the tapscript, the entire set of script leaves, and the corresponding bridge addresses, we can do some magic.</p><p>With this information, we can take the internal pubkey that was used to generate the spending paths, and the merkle root derived from the Taptree, and add them together to produce a tweaked public key. If the tweaked public key matches that of the BitVM bridge addresses, then we&#8217;ve verified that the script is in fact the sole spending script.</p><p>Voila! We have a verifiable, disclosure method. If a team publishes an incorrect tapscript MAST, then the tweaked public key wouldn&#8217;t match that of the bridge addresses.</p><p>This disclosure method gives us a way to actually verify the key trust assumptions related to a BitVM bride instance. But it <em><strong>requires</strong></em> the teams to publish the entire tree and associated internal pubkey.</p><h2><strong>Importance for transparency</strong></h2><p>Even if we don&#8217;t disclose the signers&#8217; identities, we still need the scripts to understand what the actual trust assumptions are. These systems are built to have 1-of-N trust assumptions. But if the trust assumption ultimately falls to a permissioned multisig, those who are depositing funds into these contracts have a right to know.</p><p>I expect most BitVM-based bridges to include this type of spend path. I hope that emergency multisig spend paths aren&#8217;t in place forever and we can upgrade to more trust-minimized designs. But, we can&#8217;t hand wave away emergency multisigs and say they aren&#8217;t the sole trust model.</p><p>The emergency spend path is quite literally the trust model as long as it&#8217;s in place.</p><p>&#8212; Janusz</p>]]></content:encoded></item><item><title><![CDATA[Some of us still want private, bitcoin payments]]></title><description><![CDATA[Amidst paper bitcoin summer, an upcoming bitcoin privacy project is being under-discussed&#8230;]]></description><link>https://insider.btcpp.dev/p/some-of-us-still-want-private-bitcoin</link><guid isPermaLink="false">https://insider.btcpp.dev/p/some-of-us-still-want-private-bitcoin</guid><dc:creator><![CDATA[janusz]]></dc:creator><pubDate>Wed, 16 Jul 2025 15:30:42 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!6jKJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e0d1c48-3ef4-4017-b3fa-84e62a46c670_1600x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!6jKJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e0d1c48-3ef4-4017-b3fa-84e62a46c670_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!6jKJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e0d1c48-3ef4-4017-b3fa-84e62a46c670_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!6jKJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e0d1c48-3ef4-4017-b3fa-84e62a46c670_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!6jKJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e0d1c48-3ef4-4017-b3fa-84e62a46c670_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!6jKJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e0d1c48-3ef4-4017-b3fa-84e62a46c670_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!6jKJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e0d1c48-3ef4-4017-b3fa-84e62a46c670_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e0d1c48-3ef4-4017-b3fa-84e62a46c670_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1733499,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://insider.btcpp.dev/i/168477031?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e0d1c48-3ef4-4017-b3fa-84e62a46c670_1600x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!6jKJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e0d1c48-3ef4-4017-b3fa-84e62a46c670_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!6jKJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e0d1c48-3ef4-4017-b3fa-84e62a46c670_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!6jKJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e0d1c48-3ef4-4017-b3fa-84e62a46c670_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!6jKJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e0d1c48-3ef4-4017-b3fa-84e62a46c670_1600x900.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>During the craze of Paper Bitcoin Summer, the Bitcoin Conference released talks from the open source stage at Las Vegas. The talks covered a number of topics from new L2s to consensus changes, but one thing caught my eye in particular.</p><p>Transaction protocols that enable near-perfect privacy.</p><p>Shielded CSV (and its sister protocol zkCoins) is a payment protocol that can be built on top of any blockchain. But, its developers are focusing on leveraging it for scalable, fully private bitcoin payments. It leverages zero-knowledge proofs and only embeds a small amount of data on bitcoin. Basically - it&#8217;s a way to do Zcash-style payments that scales well.</p><p>Personally, I think it&#8217;s one of the most exciting things happening in the bitcoin layers space. Its sister protocol with a similar architecture, zkCoins, <a href="https://youtu.be/M-PIOaHxX4c?si=b26DydoVsRCMZ8Kc&amp;t=930">might have a reckless mainnet this year</a>. These protocols combine scalability, privacy, and all the ZK magic that can help bitcoin scale with limited interactivity&#8230;</p><p>In my world, people are constantly discussing &#8220;new L2s&#8221;, their capabilities, and why we should change bitcoin to make them better. Unfortunately, systems like Shielded CSV and zkCoins are rarely brought up.</p><p>So this post is my attempt to explain its design and make more people aware of the construction&#8230;</p><p><em>This blog is based on reviews of both Shielded CSV and zkCoins. For this blog, I&#8217;m primarily referring to Shielded CSV. It&#8217;s my understanding that they are very similar, and if I swapped &#8220;zkCoins&#8221; for &#8220;Shielded CSV&#8221;, most of the blog would still hold. Also note, any implementation of what&#8217;s laid out here might use a different name in the future.</em></p><h1>Shielded CSV&#8217;s design philosophy</h1><p>Shielded CSV is a token transfer protocol. Really, you can think of it as another Layer 1 transaction protocol that is built on top of a data availability layer. This is similar to how bitcoin&#8217;s transaction execution layer is built on top of bitcoin&#8217;s blockchain and consensus engine.</p><p>It operates under a simple principle &#8211; only post a minimal amount of data to the blockchain to prevent double-spending. The rest of the transaction data should be sent directly to, and solely verified by, the receiver.</p><p>This approach significantly minimizes the amount of data that is posted to bitcoin. Shielded CSV transactions only require 64 bytes of data. The average bitcoin transaction contains an average of 600~ bytes of data.</p><h1>How it works</h1><h2>Client-side validation</h2><p>Client-side validation is a mechanism where users only need to validate the history of coins, and corresponding transactions, that they individually interact with. There is no need for keeping a record of anyone&#8217;s coins, or transactions, outside of your own.</p><p>In bitcoin, full nodes must keep a record of the entire UTXO set and validate all transactions that have ever been recorded on the blockchain. Shielded CSV is the opposite of this dynamic &#8211; you&#8217;re only responsible for validating data related to your coins&#8217; histories.</p><p>This minimizes the amount of data that is posted on bitcoin, with the tradeoff that users are responsible for keeping a copy of their individual state (more on this later).</p><h2>Nullifiers</h2><p>Shielded CSV as a protocol has transactions and nullifiers. Nullifiers are commitments to bitcoin that ensure a specific coin can no longer be spent in the Shielded CSV protocol.</p><p>Users don&#8217;t post a nullifier for each individual coin they hold when they conduct a transaction. Shielded CSV introduces &#8220;accounts&#8221; that contain an account state. During a transaction, users submit a nullifier of an account state that nullifies their ability to spend a coin that was a part of a previous account state.</p><h3>How Shielded CSV&#8217;s nullifiers might work</h3><p><em>This is a stab at outlining the nullifier construction highlighted in the Shielded CSV paper. Future production protocols might have different designs.</em></p><p>The nullifier consists of the nullifier public key and a Schnorr signature. The signature commits to the hash of the Shielded CSV transaction that created the nullifier. </p><p>Users maintain a nullifier accumulator that stores nullifiers related to Shielded CSV account state transitions. Each time that a Shielded CSV transaction is made, it nullifies a prior coin that was created in the protocol. The accumulator adds the new nullifier, which makes it impossible for that coin to be spent again. </p><p>Nullifiers are committed to in bitcoin blocks. Shielded CSV nodes scan bitcoin to find updates. When they find new nullifiers, each nullifier is verified as a Shielded CSV commitment, and is then added to the accumulator.</p><p>These commitments are 64 bytes in size. To get it down to this size, the <a href="https://github.com/ShieldedCSV/ShieldedCSV">whitepaper</a> outlines some techniques using Sign-To-Contract and signature half-aggregation. For a detailed description of the nullifier, check out the whitepaper.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!kkRK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5936a70-130a-4596-9e66-92fb38f870f4_1264x710.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!kkRK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5936a70-130a-4596-9e66-92fb38f870f4_1264x710.png 424w, https://substackcdn.com/image/fetch/$s_!kkRK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5936a70-130a-4596-9e66-92fb38f870f4_1264x710.png 848w, https://substackcdn.com/image/fetch/$s_!kkRK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5936a70-130a-4596-9e66-92fb38f870f4_1264x710.png 1272w, https://substackcdn.com/image/fetch/$s_!kkRK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5936a70-130a-4596-9e66-92fb38f870f4_1264x710.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!kkRK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5936a70-130a-4596-9e66-92fb38f870f4_1264x710.png" width="1264" height="710" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5936a70-130a-4596-9e66-92fb38f870f4_1264x710.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:710,&quot;width&quot;:1264,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!kkRK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5936a70-130a-4596-9e66-92fb38f870f4_1264x710.png 424w, https://substackcdn.com/image/fetch/$s_!kkRK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5936a70-130a-4596-9e66-92fb38f870f4_1264x710.png 848w, https://substackcdn.com/image/fetch/$s_!kkRK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5936a70-130a-4596-9e66-92fb38f870f4_1264x710.png 1272w, https://substackcdn.com/image/fetch/$s_!kkRK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5936a70-130a-4596-9e66-92fb38f870f4_1264x710.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Tl;dr - we post a commitment to bitcoin that <strong>prevents double spending in the protocol</strong>.</p><h2>Zero-knowledge proofs</h2><p>Zero-knowledge proofs are proofs that provide an argument, which do not reveal the contents of the argument, outside of proving the argument to be true. The end goal is to convince a counter-party of the current state of some system. In payments related use cases, they are used to send proofs that a certain payment abides by the rules of a system without revealing the sender, the receiver, and the amount spent. This obscures the transaction graph and creates a system with high levels of privacy. They also have scalability benefits as they can compress entire transaction histories into a compact, succinct proof that recursively updates as needed.</p><p>In shielded CSV, <strong>this can be used to send a user the history of a coin, convince them that said history is valid, enable them to verify they are the new owner of the coin, and keep the size of the coin history compact and constant.</strong></p><p><em>Shielded CSV, as a concept, does not rely on any given proving scheme. Numerous schemes could be leveraged in this design.</em></p><h2>Combining them</h2><p>When you combine these concepts together, you&#8217;re able to create a client-side validation system where transaction graphs are obscured and the history of coins is kept constant size, making them more efficient to validate. Users only validate transactions related to their coins. </p><p>This means that the network benefits from the unchangeable ordering of transactions in bitcoin blocks. Shielded CSV users are able to rely on bitcoin for keeping a record of all nullifiers, making them available to clients &amp; nodes, and being able to finalize Shielded CSV transactions based on this ordering.</p><h1>The transaction lifecycle</h1><p>Now that we&#8217;ve got the key concepts covered&#8230; Let&#8217;s talk about the transaction lifecycle.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!eZFk!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69e5ebe5-cecf-49cc-8607-200aea5d384a_880x497.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!eZFk!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69e5ebe5-cecf-49cc-8607-200aea5d384a_880x497.png 424w, https://substackcdn.com/image/fetch/$s_!eZFk!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69e5ebe5-cecf-49cc-8607-200aea5d384a_880x497.png 848w, https://substackcdn.com/image/fetch/$s_!eZFk!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69e5ebe5-cecf-49cc-8607-200aea5d384a_880x497.png 1272w, https://substackcdn.com/image/fetch/$s_!eZFk!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69e5ebe5-cecf-49cc-8607-200aea5d384a_880x497.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!eZFk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69e5ebe5-cecf-49cc-8607-200aea5d384a_880x497.png" width="880" height="497" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/69e5ebe5-cecf-49cc-8607-200aea5d384a_880x497.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:497,&quot;width&quot;:880,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:135431,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://insider.btcpp.dev/i/168477031?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69e5ebe5-cecf-49cc-8607-200aea5d384a_880x497.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!eZFk!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69e5ebe5-cecf-49cc-8607-200aea5d384a_880x497.png 424w, https://substackcdn.com/image/fetch/$s_!eZFk!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69e5ebe5-cecf-49cc-8607-200aea5d384a_880x497.png 848w, https://substackcdn.com/image/fetch/$s_!eZFk!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69e5ebe5-cecf-49cc-8607-200aea5d384a_880x497.png 1272w, https://substackcdn.com/image/fetch/$s_!eZFk!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F69e5ebe5-cecf-49cc-8607-200aea5d384a_880x497.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>Transaction creation</h3><p>Alice wants to pay Bob. To do this, she generates a shielded transaction. This transaction attests to Alice's previous account state and all of the coins she held in this state, and then generates a new account state related to the new coins. One of these new coins is for the receiver. Then, Alice derives the nullifier nullifying her previous account state and committing to the new account state.</p><p><em>Reminder: When an account performs a state transition (i.e. makes a transaction), the single Account ID is associated with a number of coins and the state of that account is updated and a nullifier for solely the account state transition is published.</em></p><h3>Submitting the nullifier to bitcoin</h3><p>Alice submits a bitcoin transaction containing this nullifier. This nullifier is embedded into bitcoin as arbitrary data, and from the vantage point of bitcoin full nodes, it doesn&#8217;t mean anything. The data is interpreted by Shielded CSV users as they scan bitcoin to find the nullifiers related to the coins they&#8217;ve been sent.</p><h3>Receiving the coins</h3><p>After Alice has submitted the nullifier to bitcoin, she needs to send a &#8220;coin proof&#8221; to Bob through a private communication channel (i.e. a wallet, messaging app, etc.). But first, Bob scans bitcoin, processes all nullifiers related to Shielded CSV, verifies their signatures, and updates his nullifier accumulator client side.</p><p>After this, Alice sends a coin proof, attesting to the history of the coin being transferred, to Bob. Bob verifies this coin proof to ensure that it 1) attests to a valid transaction 2) follows the Shielded CSV consensus rules and 3) commits to an entry recorded in his nullifier accumulator. He also verifies that all previous transactions in the coin&#8217;s history were valid and cannot be double spent.</p><p>After transaction validation, and after the block containing the nullifier has sufficient proof-of-work behind it, both Alice and Bob can consider the payment final.</p><p><em>Because the coin proof is a zero-knowledge proof, none of the information about the sender, receiver, or amounts is made public. Only an argument that a valid transaction occurred is public.</em></p><h1>That&#8217;s it&#8230; but some stuff can make it better</h1><p>This is basically how a Shielded CSV-style protocol would work. Still, there&#8217;s things that can make the protocol better suited for bitcoin-denominated payments:</p><h3>Bridges</h3><p>In the example above, you may have noticed that I never said &#8220;Alice sent Bob bitcoin&#8221;. Well, that&#8217;s because Shielded CSV is an alternative network that needs bitcoin to be bridged over to use it.</p><p>I&#8217;m not here to convince you that bridges are good or bad, or which one is the best. But, we can cover some designs that we could use to create a two-way peg for Shielded CSV:</p><ul><li><p>T-of-N multisig: A multisig where T-of-N signers need to secure deposits and process withdrawals to users who want to leave Shielded CSV. Used widely today.</p></li><li><p>BitVM: A bridge where a set of operators need to secure deposits and process withdrawals. A minority of them need to be honest and a distributed set of watchtowers (maybe permissionless) can force them to be honest. Multiple teams building this.</p></li><li><p>Native Proof Verification: With additional opcodes, you could construct a bridge that verifies proofs attesting to the current state of balances in Shielded CSV. If the proof is valid, the bridge can execute withdrawals based on this state.</p></li></ul><p>There are different tradeoffs related to these bridges, and even how they compare with other L2s (such as Lightning). But, analyzing that is for an upcoming post&#8230;</p><h3>Third party publishers</h3><p>Publishing nullifiers on bitcoin requires a bitcoin transaction. Having to submit a bitcoin transaction every time you do a Shielded CSV? Pretty bad UX. And, what if you don&#8217;t have any bitcoin to start off with? You wouldn&#8217;t have the funds to submit the transaction containing the nullifier.</p><p>Insert publishers - service providers who post nullifiers on users&#8217; behalf. The publisher role collects nullifiers from many users, aggregates them, and then submits them as a batch to bitcoin. They receive a fee, on Shielded CSV, in exchange for posting the nullifiers on users&#8217; behalf. Even within batches, users are still able to derive an individual nullifier associated with a coin they spent or received.</p><p>Why use a third party? First, you may not have some bitcoin. Shielded CSV, as a payments layer for bitcoin, should be able to onboard users who have never, and maybe can&#8217;t, use the L1. An active network of publishers means some users may never even have to interact with bitcoin itself; a win for scaling. Also, you may not want to wait around for bitcoin&#8217;s block times for lower value payments. Publishers might be set up to accept transactions nearly instantly. You can see that the publisher accepted the nullifier, and if you trust that they&#8217;ll post it to bitcoin, you can be on your way.</p><p>Third party publishers can offer some performance benefits as they post aggregated nullifiers, not individual nullifiers one by one. There&#8217;s likely some neat compression techniques you could employ to reduce the cost of submitting these nullifiers onchain (which is useful in a high fee environment).</p><p>Service providers have an incentive to not censor you through fees. And if they do, publishing the nullifier is permissionless. You just need a little bit of bitcoin to do so.</p><p><em>Remember, these service providers cannot steal your funds. They can only refuse to post the nullifier, which means your transaction can never finalize and you&#8217;d need to use another publisher or publish it yourself.</em></p><h1>UX - some notable design tradeoffs</h1><h2>Some nice tradeoffs</h2><p>Shielded CSV has some unique UX benefits when compared to other bitcoin payments protocols. First, it can rely on bitcoin&#8217;s ordering of Shielded CSV nullifiers to enforce double-spend resistance. If someone tried to spend a previously spent coin, the transaction validation in Shielded CSV would fail based on the nullifier data that bitcoin made available to Shielded CSV nodes.</p><p>The interactivity requirements are minimal. After a sender submits their nullifier to bitcoin, and the coin proof to the receiver, the receiver can come online at any time after the fact and validate the coin proof and corresponding nullifiers. The interactivity requirement is that the receiver needs to come online to receive the payment.</p><p>And finally, there&#8217;s no inbound capacity problem. Users do not need to free up liquidity, or have existing liquidity at all, in order to receive a Shielded CSV payment. With the use of publishers, they don&#8217;t even have to interact with bitcoin at all.</p><h2>Some not so nice tradeoffs</h2><p>In these styles of systems, users must keep backups related to their own coin histories. If they lost any of these backups, then the data related to their own tokens would be permanently lost. In Shielded CSV, you are the only person who has access to this state. Don&#8217;t lose it!</p><p>Generating <strong>and verifying</strong> zero-knowledge proofs on a mobile phone also might be infeasible. But, proving systems are rapidly improving. And, protocols like Zcash, for example, can generate zero-knowledge proofs client-side to send shielded transactions. I&#8217;d be <em>very</em> surprised if we couldn&#8217;t run a Shielded CSV-style protocol on mobile phones in the next couple of years.</p><p>Also, full nodes have to keep track of all nullifiers related to Shielded CSV transactions which are 64~ bytes in size. This is potentially a scaling bottleneck down the road. Zcash <a href="https://seanbowe.com/blog/tachyon-scaling-zcash-oblivious-synchronization/">is currently researching different</a> ways to lessen this burden on full nodes, and some of the tricks may be applicable to a Shielded CSV construction.</p><p>Lastly, because the system requires a bridge, bitcoin&#8217;s current scripting capabilities prohibit users from unilaterally exiting a Shielded CSV-style protocol. T-of-N multisigs are permissioned in practice, so they are more vulnerable to censorship vectors. For example, they could use a <a href="https://docs.lombard.finance/technical-documentation/sanctions-and-risk-monitoring">surveillance oracle against OFAC sanctions list</a> that forces bridge operators to censor specific addresses if they&#8217;ve been flagged (this exists today).</p><p>BitVM is an interesting approach that reduces the assumption to a minority of operators, but users still trust, at least one in theory, operator to facilitate withdrawals. While most implementations might have training wheels in their first production release, it has the potential to create a more trust-minimized set up that is ideal for systems that require more censorship resistance &#8211; like Shielded CSV.</p><h1>So&#8230; soft forks for &#8220;spam&#8221;?</h1><p>As Shielded CSV co-creator, and Blockstream researcher, <a href="https://youtu.be/aZa2zXp1Q2A?si=7UA0mzad2riHAg8M&amp;t=295">Jonas Nick pointed out</a>, all bitcoin transactions are spam. Classifying the arbitrary data associated with Shielded CSV nullifiers as spam is short-sighted. Even so, what most people call spam are transactions associated with speculative token protocols and data related to systems who offer smart contracts for shitcoin lovers. The protocol I&#8217;m describing above isn&#8217;t that in practice.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!3lzI!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd666b7d2-9a13-49c5-b279-3b9ee6a391e9_531x298.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!3lzI!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd666b7d2-9a13-49c5-b279-3b9ee6a391e9_531x298.png 424w, https://substackcdn.com/image/fetch/$s_!3lzI!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd666b7d2-9a13-49c5-b279-3b9ee6a391e9_531x298.png 848w, https://substackcdn.com/image/fetch/$s_!3lzI!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd666b7d2-9a13-49c5-b279-3b9ee6a391e9_531x298.png 1272w, https://substackcdn.com/image/fetch/$s_!3lzI!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd666b7d2-9a13-49c5-b279-3b9ee6a391e9_531x298.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!3lzI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd666b7d2-9a13-49c5-b279-3b9ee6a391e9_531x298.png" width="531" height="298" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d666b7d2-9a13-49c5-b279-3b9ee6a391e9_531x298.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:298,&quot;width&quot;:531,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!3lzI!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd666b7d2-9a13-49c5-b279-3b9ee6a391e9_531x298.png 424w, https://substackcdn.com/image/fetch/$s_!3lzI!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd666b7d2-9a13-49c5-b279-3b9ee6a391e9_531x298.png 848w, https://substackcdn.com/image/fetch/$s_!3lzI!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd666b7d2-9a13-49c5-b279-3b9ee6a391e9_531x298.png 1272w, https://substackcdn.com/image/fetch/$s_!3lzI!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd666b7d2-9a13-49c5-b279-3b9ee6a391e9_531x298.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>It&#8217;s a payments system that does not require a soft fork to build on top of bitcoin. You can build a shielded CSV-style system that inherit ordering guarantees from bitcoin today. But, for the system to be truly censorship resistant, for bitcoin payments, we need a mechanism to construct a trust-minimized bridge to and from bitcoin.</p><p>Some teams are looking to accomplish this via BitVM. This is likely the best we can do right now. But, as Jonas Nick <a href="https://youtu.be/aZa2zXp1Q2A?si=0oalIpypUj_xc0jk&amp;t=232">also pointed out</a>, this system could be improved if we are able to natively verify validity proofs on bitcoin (within the block size limit). This would require a soft fork. Which soft fork proposal? I don&#8217;t know. That&#8217;s above my pay grade.</p><p><em>But it&#8217;s not above yours! If you&#8217;re interested in ZK research, click the link below learn more about the upcoming ZK conference in Istanbul. Got an interesting talk or workshop about native zk on bitcoin? We&#8217;re currently accepting talks &#8594; <a href="https://btcpp.dev/talk">Apply for a talk here.</a></em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://btcpp.dev/istanbul&quot;,&quot;text&quot;:&quot;Head to bitcoin++&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://btcpp.dev/istanbul"><span>Head to bitcoin++</span></a></p><p>But, what&#8217;s described above is a fully-private payments system that takes some worthwhile UX tradeoffs compared to what exists today. When we discuss new layer 2s coming to market, and &#8220;which layer 2s&#8221; could benefit from potentially making script more expressive, protocols such as Shielded CSV should be considered.</p><p>&#8211;Janusz</p>]]></content:encoded></item><item><title><![CDATA[Can we scale bitcoin... with other blockchains?]]></title><description><![CDATA[Investors love blockchain-based L2s, but there's some bottlenecks in every design...]]></description><link>https://insider.btcpp.dev/p/can-we-scale-bitcoin-with-other-blockchains</link><guid isPermaLink="false">https://insider.btcpp.dev/p/can-we-scale-bitcoin-with-other-blockchains</guid><dc:creator><![CDATA[janusz]]></dc:creator><pubDate>Fri, 11 Jul 2025 12:44:55 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!t3Og!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045023f7-d7a7-4a81-97af-4352ee426370_1600x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!t3Og!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045023f7-d7a7-4a81-97af-4352ee426370_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!t3Og!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045023f7-d7a7-4a81-97af-4352ee426370_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!t3Og!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045023f7-d7a7-4a81-97af-4352ee426370_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!t3Og!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045023f7-d7a7-4a81-97af-4352ee426370_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!t3Og!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045023f7-d7a7-4a81-97af-4352ee426370_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!t3Og!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045023f7-d7a7-4a81-97af-4352ee426370_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/045023f7-d7a7-4a81-97af-4352ee426370_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1927079,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://insider.btcpp.dev/i/168068262?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045023f7-d7a7-4a81-97af-4352ee426370_1600x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!t3Og!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045023f7-d7a7-4a81-97af-4352ee426370_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!t3Og!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045023f7-d7a7-4a81-97af-4352ee426370_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!t3Og!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045023f7-d7a7-4a81-97af-4352ee426370_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!t3Og!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F045023f7-d7a7-4a81-97af-4352ee426370_1600x900.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Last week, <a href="https://botanixlabs.com/">Botanix Labs</a> launched mainnet for a bitcoin-denominated, federated sidechain. In the announcement posts, and dozens of media posts covering it, the network was touted as &#8220;decentralized&#8221; and &#8220;built on bitcoin&#8221;.</p><p>Before we cover the semantics, I will add that I&#8217;ve used Botanix. Bridging over wasn&#8217;t the worst experience and it was nice to finally use an EVM-style blockchain that was bitcoin denominated. The fact that they publicly announced their federation before launch was refreshing. All-in-all, Botanix handled their launch better than most &#8220;bitcoin season 2&#8221; projects to date, and for that, they deserve some praise. They also have the most distributed, publicly-known federation for a bitcoin-denominated system (at least to my knowledge).</p><p>Botanix, while launching as a federation, claims that the network will one day have 10,000 validators who act as sequencers and signers securing the funds backing its pegged bitcoin asset. </p><p>This claim made me wonder how difficult it might be to build bitcoin-native proof-of-stake systems, bridges, and other blockchain-based constructions. This post outlines some of the design challenges these teams face.</p><h2>The two main sidesystem designs &#8220;bringing the EVM to bitcoin&#8221;</h2><p>In the &#8220;bitcoin-evm-aligned&#8221; design space, there are teams building rollups and there are teams building monolithic sidechains (like Botanix). Most sidechains see rollups as their main competition.</p><p>Monolithic sidechains are networks where its full node &amp; operator set handle all facets of the network &#8212; transaction execution, finalization, data availability, and consensus.</p><p>Rollups, however, use bitcoin for data availability and consensus. This means that rollup full nodes execute transactions and update the state based on data that was posted to, and made available, by bitcoin full nodes.</p><h2>Can we scale with Proof-of-Stake systems?</h2><p>Let&#8217;s generally look at some challenges Proof-of-Stake sidechains might face while doing this.</p><p>Most proof-of-stake systems use CometBFT for their consensus client. CometBFT has known scaling limitations due to <a href="https://hackmd.io/@EspressoSystems/hotshot-and-tendermint#Detailed-Features">all-to-all communication</a> between its consensus nodes. In practice, CometBFT has never scaled past 200 consensus nodes as it would severely impact latency and performance. To reach 10,000 validators, while maintaining sub-5 second block times, any project would need to design a completely new consensus architecture from scratch, test it, and scale it gradually.</p><p>While somewhat randomized, the right to win a block in proof-of-stake is heavily weighted against the amount of stake a validator puts up. More stake, more blocks, more rewards. If institutions, holding large swathes of bitcoin, want to take advantage of bitcoin staking&#8217;s yield generation properties (they do), they may stake large amounts into any given network. This weights the stake heavily towards a few parties who can effectively gain control of the block production pipeline. So let&#8217;s limit stake then? E.g. Cap the amount that each entity can stake? Well, institutions will just run more validators. In practice, the weight of stake, correlated with the legal entities/persons running all the validators, will be the same.</p><p>Ethereum is the best attempt at making a proof-of-stake system distributed. But as we&#8217;ve seen with LSTs, most users don&#8217;t actually want to run their own validator and stake. It&#8217;s more attractive to simply give your money to someone else, have them stake it for you, get a liquid token in return to play DeFi games, and then pay a percentage of the staking rewards to the LST issuer in return. This set up centralizes stake <em>massively</em> to a federation of stakers and/or alternative governance mechanisms. Through LSTs, distributed proof-of-stake systems look a lot more like delegated proof-of-stake networks where the majority of users simply delegate their stake to a permissioned set of validators.</p><p>But even if you can distribute the validator set within the system, you still need to figure out how to secure the two-way peg. Stake-weighted, rotating multisigs have worked in practice, as we&#8217;ve seen with <a href="https://www.lxresearch.co/analyzing-tbtc-against-wbtc-and-cbbtc/">Threshold tBTC</a>, but making the system is permissionless is difficult. You don&#8217;t want just anyone buying up a bunch of stake and gaining control of the two-way peg wallet(s). Threshold tBTC is the most distributed two-way peg that bitcoin has seen to date, but it is still permissioned to 35 signers. All signers must be approved by the Threshold DAO before entering the set. Another option is using one multisig and updating the signing thresholds based on stake weights. <a href="https://nomic.io/">Nomic</a> does this today where its top 20 validators by stake weight secure the nBTC two-way peg. But, since their token isn&#8217;t transferable, no one can go acquire NOM on the open market and become a signer. It&#8217;s permissioned in-practice. Additionally, both of the systems mentioned here rely on another token.</p><p>The fact is, know one has ever built a two-way peg <em><strong>exclusively</strong></em> secured by permissionless staking.</p><p>Proof-of-stake is hard. Bitcoin staking? Even harder. There&#8217;s only two examples of bitcoin staking in the wild. One relies on a <a href="https://babylonlabs.io/blog/babylon-bitcoin-staking-mainnet-launch-phase-1">multisig</a> to enforce slashing (since we don&#8217;t have covenants) and the other doesn&#8217;t have slashing at all. It&#8217;s easy to counter arguments against Proof-of-Stake with &#8220;well, we&#8217;re going to use bitcoin as the staking asset and this solves all the problems&#8221;. But we&#8217;ve never seen this play out in practice.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ctbc!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87136a35-13c4-4552-a0de-94a15c1f7f62_588x266.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ctbc!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87136a35-13c4-4552-a0de-94a15c1f7f62_588x266.png 424w, https://substackcdn.com/image/fetch/$s_!Ctbc!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87136a35-13c4-4552-a0de-94a15c1f7f62_588x266.png 848w, https://substackcdn.com/image/fetch/$s_!Ctbc!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87136a35-13c4-4552-a0de-94a15c1f7f62_588x266.png 1272w, https://substackcdn.com/image/fetch/$s_!Ctbc!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87136a35-13c4-4552-a0de-94a15c1f7f62_588x266.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ctbc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87136a35-13c4-4552-a0de-94a15c1f7f62_588x266.png" width="588" height="266" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/87136a35-13c4-4552-a0de-94a15c1f7f62_588x266.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:266,&quot;width&quot;:588,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:84400,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://btcpp.substack.com/i/168068262?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87136a35-13c4-4552-a0de-94a15c1f7f62_588x266.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ctbc!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87136a35-13c4-4552-a0de-94a15c1f7f62_588x266.png 424w, https://substackcdn.com/image/fetch/$s_!Ctbc!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87136a35-13c4-4552-a0de-94a15c1f7f62_588x266.png 848w, https://substackcdn.com/image/fetch/$s_!Ctbc!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87136a35-13c4-4552-a0de-94a15c1f7f62_588x266.png 1272w, https://substackcdn.com/image/fetch/$s_!Ctbc!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F87136a35-13c4-4552-a0de-94a15c1f7f62_588x266.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>So even in a world where stake doesn&#8217;t centralize, it&#8217;s unclear how these systems stay distributed, fully censorship resistant, and not reliant on some federated multisig somewhere down the line. Some smart teams are working on this and there might be new <a href="https://char.network/">solutions</a> coming to market that approach the design space differently.</p><h2>Some of the tradeoffs related to rollups</h2><p>You might chalk this off as a win for the rollups, but not so fast. Rollups equally have their challenges. Those challenges are a result of&#8230; you guessed it!</p><p><em><strong>Tradeoffs.</strong></em></p><p>Rollups <strong>must use</strong> bitcoin as a data availability layer. The ability to trustlessly reconstruct the rollup&#8217;s state, from bitcoin, and build fully trust-minimized sidesystem bridges is the result of using bitcoin as a data availability layer. Do not let the rollup teams tell you otherwise! An alternative DA layer significantly introduces more trust assumptions in the system. You either trust a federation, or another network secured by an altcoin, to make the data available &#8212; a prerequisite for advancing the state of the system. I talk about this here:</p><div id="youtube2-TqxDr_SjAgg" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;TqxDr_SjAgg&quot;,&quot;startTime&quot;:&quot;28956&quot;,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/TqxDr_SjAgg?start=28956&amp;rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Bitcoin only makes 4MB of blockspace available every ten minutes. This is very limited in throughput. Other rollup data availability layers offer significantly more throughput. This means that posting data to bitcoin will be more expensive and that cost is incurred to the user. This chart outlines how expensive it might get.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DxwM!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa473986-6bef-4806-8d34-e5b63e75a785_1036x703.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DxwM!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa473986-6bef-4806-8d34-e5b63e75a785_1036x703.png 424w, https://substackcdn.com/image/fetch/$s_!DxwM!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa473986-6bef-4806-8d34-e5b63e75a785_1036x703.png 848w, https://substackcdn.com/image/fetch/$s_!DxwM!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa473986-6bef-4806-8d34-e5b63e75a785_1036x703.png 1272w, https://substackcdn.com/image/fetch/$s_!DxwM!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa473986-6bef-4806-8d34-e5b63e75a785_1036x703.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DxwM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa473986-6bef-4806-8d34-e5b63e75a785_1036x703.png" width="1036" height="703" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fa473986-6bef-4806-8d34-e5b63e75a785_1036x703.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:703,&quot;width&quot;:1036,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DxwM!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa473986-6bef-4806-8d34-e5b63e75a785_1036x703.png 424w, https://substackcdn.com/image/fetch/$s_!DxwM!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa473986-6bef-4806-8d34-e5b63e75a785_1036x703.png 848w, https://substackcdn.com/image/fetch/$s_!DxwM!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa473986-6bef-4806-8d34-e5b63e75a785_1036x703.png 1272w, https://substackcdn.com/image/fetch/$s_!DxwM!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffa473986-6bef-4806-8d34-e5b63e75a785_1036x703.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Also, building proving systems, on any blockchain, is really <em>f*cking</em> hard. Ethereum (sigh, he mentioned it <em>again</em>) has a significantly more expressive scripting language. And for <a href="https://l2beat.com/scaling/summary">all rollups with general purpose smart contract environments</a> on Ethereum, there is no system in production that does not have, <strong>at most</strong>, a <a href="https://l2beat.com/scaling/projects/arbitrum#upgrades-and-governance">9/12 multisig</a> that can immediately upgrade the systems relevant contracts and steal all money locked in the rollup bridge. Ethereum has been building towards trust-minimized rollups for nearly 5 years.</p><p>On bitcoin, we can&#8217;t construct native proof verification (within the block size limit) and state-carrying covenants without additional opcodes. This simply means that:</p><ul><li><p>Proving systems on bitcoin are going to be complicated</p></li><li><p>They&#8217;re still going to rely on some subset of operators to process withdrawals</p></li><li><p>And they&#8217;ll probably be reliant on governance multisigs like their counterparts in Ethereum for some period time</p></li></ul><p>Additionally, rollups rely on single sequencers to build their blocks. Running a full node in most rollup set ups is permissionless, so anyone can participate in verifying and advancing the state, but building blocks is usually confined to one entity. If this entity censored users, they theoretically could produce and build their own blocks, as they have access to the data and can run a full node, but we&#8217;ve never seen examples of forced inclusion and self-proposing in bitcoin. It&#8217;s likely another aspect in rollups&#8217; decentralization roadmaps that needs to be built.</p><p>In my opinion, rollups are building towards the most trust-minimized sidesystem. Because they rely on bitcoin for consensus, they&#8217;re the only sidesystem that has the potential to be considered a true L2 (we&#8217;d need a softfork for this, though). And while complex, every problem that a rollup might face, there is ample research on how to potentially solve it.</p><p>But in the interim, sidechains, <em>even as a federation</em>, might be <em><strong>more</strong></em> trust-minimized.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!J9Q5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f74795-ee94-4621-befe-5874de670f8d_590x304.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!J9Q5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f74795-ee94-4621-befe-5874de670f8d_590x304.png 424w, https://substackcdn.com/image/fetch/$s_!J9Q5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f74795-ee94-4621-befe-5874de670f8d_590x304.png 848w, https://substackcdn.com/image/fetch/$s_!J9Q5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f74795-ee94-4621-befe-5874de670f8d_590x304.png 1272w, https://substackcdn.com/image/fetch/$s_!J9Q5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f74795-ee94-4621-befe-5874de670f8d_590x304.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!J9Q5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f74795-ee94-4621-befe-5874de670f8d_590x304.png" width="590" height="304" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5f74795-ee94-4621-befe-5874de670f8d_590x304.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:304,&quot;width&quot;:590,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:72525,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://btcpp.substack.com/i/168068262?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f74795-ee94-4621-befe-5874de670f8d_590x304.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!J9Q5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f74795-ee94-4621-befe-5874de670f8d_590x304.png 424w, https://substackcdn.com/image/fetch/$s_!J9Q5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f74795-ee94-4621-befe-5874de670f8d_590x304.png 848w, https://substackcdn.com/image/fetch/$s_!J9Q5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f74795-ee94-4621-befe-5874de670f8d_590x304.png 1272w, https://substackcdn.com/image/fetch/$s_!J9Q5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5f74795-ee94-4621-befe-5874de670f8d_590x304.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Building sidechains and rollups is hard&#8230; are we being too ambitious with our claims on trust-minimization?</figcaption></figure></div><h2>A long road is ahead</h2><p>Proof-of-stake sidechains and rollups both have their benefits and limitations. Equally, a lot of research and engineering work needs to be done to make these systems fully trust-minimized on bitcoin.</p><p>You can point out flaws in every construction. You can say &#8220;impossible&#8221; to anything. Most of the time you will be right. But let&#8217;s not waste our time. Tell users the tradeoffs, build towards more trust-minimized systems, and ship sick apps. Let a thousand flowers bloom, even if they rely on a centralized multisig in the interim.</p><p>&#8211;Janusz</p>]]></content:encoded></item><item><title><![CDATA[Are statechains self-custodial?]]></title><description><![CDATA[Wallet of Satoshi isn't fully self-custodial, but it isn't custodial... It's a beautiful third thing we don't know what to call yet]]></description><link>https://insider.btcpp.dev/p/insider-takes-wallet-of-satoshis</link><guid isPermaLink="false">https://insider.btcpp.dev/p/insider-takes-wallet-of-satoshis</guid><dc:creator><![CDATA[janusz]]></dc:creator><pubDate>Fri, 04 Jul 2025 12:03:16 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!W29-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c82c126-b06d-4014-bafd-3b9d14fac2dd_1600x900.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!W29-!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c82c126-b06d-4014-bafd-3b9d14fac2dd_1600x900.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!W29-!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c82c126-b06d-4014-bafd-3b9d14fac2dd_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!W29-!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c82c126-b06d-4014-bafd-3b9d14fac2dd_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!W29-!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c82c126-b06d-4014-bafd-3b9d14fac2dd_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!W29-!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c82c126-b06d-4014-bafd-3b9d14fac2dd_1600x900.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!W29-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c82c126-b06d-4014-bafd-3b9d14fac2dd_1600x900.png" width="1456" height="819" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9c82c126-b06d-4014-bafd-3b9d14fac2dd_1600x900.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:819,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1745275,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://insider.btcpp.dev/i/167513633?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c82c126-b06d-4014-bafd-3b9d14fac2dd_1600x900.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!W29-!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c82c126-b06d-4014-bafd-3b9d14fac2dd_1600x900.png 424w, https://substackcdn.com/image/fetch/$s_!W29-!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c82c126-b06d-4014-bafd-3b9d14fac2dd_1600x900.png 848w, https://substackcdn.com/image/fetch/$s_!W29-!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c82c126-b06d-4014-bafd-3b9d14fac2dd_1600x900.png 1272w, https://substackcdn.com/image/fetch/$s_!W29-!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c82c126-b06d-4014-bafd-3b9d14fac2dd_1600x900.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p><em>Fellow Americans, Happy 4th of July. To those who weren&#8217;t born into citizenship-based taxation, congrats. And for those of us who at least get the day off of work, I hope you spend it offline, with family and/or friends, enjoying a hot dog and a beer.</em></p><p>This post isn&#8217;t an attempt to align America&#8217;s founding values with bitcoin. It&#8217;s a few-days overdue take on a subject I&#8217;ve been fascinated by &#8211; statechains. Spark claimed that the incoming Wallet of Satoshi application is &#8220;<a href="https://x.com/spark/status/1940168641301119094">fully self-custodial</a>&#8221;. Most rejected this claim. As a casual observer, I couldn&#8217;t help but think some nuance is missing. <strong>My take</strong>:</p><p>Custody is binary. You either have it or you don&#8217;t. Spark wallets can&#8217;t be not self-custodial and custodial at the same time. So what gives? </p><p>Spark, and its corresponding wallets, provide users with custody over their funds. Users hold a key in a 2-2 statechain multisig. They have a pre-signed unilateral exit path to claim their funds onchain if the operator goes offline. This is <em><strong>custody</strong></em>. When you <strong>deposit</strong> funds into a statechain, no one can steal your coins.</p><p>What Spark is missing is <em><strong>provable finality guarantees</strong></em>. As ArkadeOS <a href="https://x.com/arkade_os/status/1940767805848408395">correctly stated</a>, Spark transactions never really finalize from the view of users (by finalize, we mean that a user never has provable assurances that they are the only one that can spend the coins outright).</p><p>Statechains <a href="https://x.com/januszg_/status/1940210878999036119">essentially see</a> users transfer around their private keys to 2-2 multisigs, holding L1 coins, offchain. The operator, who is the holder of the other key in the multisig, is responsible for deleting its key shares held with previous owners during transfers. If the operator does this, the operator and the previous owner cannot collectively <strong>double-spend</strong> the current user&#8217;s coins. But users can never be sure that the operator honestly deleted said key shares. Simply put, <a href="https://x.com/jxpcsnmz/status/1940414540870799595">proof of deletion</a> isn&#8217;t mathematically possible.</p><p>So, as Matt Corallo <a href="https://x.com/TheBlueMatt/status/1940236872317640820">rightly pointed out</a>, malicious statechain operators can pose as honest actors and trick users into thinking they have the unique ability to spend the funds collaboratively with the operator. But even if a user didn&#8217;t have this ability, it doesn&#8217;t mean they don&#8217;t have custody. It means that a dishonest operator didn&#8217;t responsibly delete the previous key shares, seeing multiple users have the same level of custody for the coins.</p><p>You might <strong>receive</strong> a private key for the 2-2 multisig, but if the operator never deletes its previously held keyshare(s), then the transaction shouldn&#8217;t be considered final. Remember, every previous owner still has their private key. You just want to be the only person who can immediately spend funds with the statechain operator. It&#8217;s the operator's job to ensure that you can do this. And as a user, you trust their reputation to be confident they&#8217;re acting honestly.</p><p><strong>In my opinion, rugging, in statechains, is effectively undoing a statechain transfer. It is reverting finality</strong>. You would never consider a statechain transfer final if the operator didn&#8217;t delete their previously held keyshare. But you can never prove that they did. You trust them to do this.</p><p>When people talk about &#8220;L2 self-custody,&#8221; they are referring to users retaining a unilateral exit path and having a provable assurance that they are the only ones who can spend the coins that they custody. Spark can only provide the former.</p><p>I have an essay coming out arguing this next week.</p><p>You&#8217;ll get it directly to your inbox. Happy 4th &#127482;&#127480;</p><p><em>This piece is an opinionated take. It is not an official stance of The Insider Edition or Bitcoin++.</em></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://insider.btcpp.dev/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://insider.btcpp.dev/subscribe?"><span>Subscribe now</span></a></p>]]></content:encoded></item></channel></rss>