<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Spire Labs</title>
        <link>https://paragraph.com/@spire</link>
        <description>Community and technical updates from Spire Labs</description>
        <lastBuildDate>Sun, 30 Aug 2026 20:54:07 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Spire Labs</title>
            <url>https://storage.googleapis.com/papyrus_images/9b3f5413a9d8cd2016991fc359a7f6f6.png</url>
            <link>https://paragraph.com/@spire</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[KyberSwap Integrates BaiBai for Better Prices]]></title>
            <link>https://paragraph.com/@spire/kyberswap-integrates-baibai-for-better-prices</link>
            <guid>H74XGcyNmByNfOcqRGgw</guid>
            <pubDate>Thu, 16 Jul 2026 20:39:36 GMT</pubDate>
            <description><![CDATA[KyberSwap, one of the largest DEX aggregators, is now routing trades through BaiBai, a PropAMM DEX built by Spire. This integration enables KyberSwap users to access BaiBai PropAMM liquidity whenever it offers the best available execution, bringing tighter spreads and improved pricing to traders. Why This Matters Nothing changes for users, except potentially better prices. Users simply swap through KyberSwap as usual, and the router will automatically include BaiBai liquidity in its pathfindi...]]></description>
            <content:encoded><![CDATA[<p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/@KyberNetwork">KyberSwap</a>, one of the largest DEX aggregators, is now routing trades through <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/baibai_cx/">BaiBai</a>, a PropAMM DEX built by Spire. This integration enables KyberSwap users to access BaiBai PropAMM liquidity whenever it offers the best available execution, bringing tighter spreads and improved pricing to traders.</p><h2 id="h-why-this-matters" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Why This Matters</strong></h2><p>Nothing changes for users, except potentially better prices. Users simply swap through KyberSwap as usual, and the router will automatically include BaiBai liquidity in its pathfinding when doing so improves execution.</p><p>Behind the scenes, market makers on BaiBai continuously compete on price. Since BaiBai's PropAMM provides <strong>active, programmable liquidity with real-time price updates</strong>, it can often deliver better pricing than traditional onchain venues.</p><p>For market makers on BaiBai, this integration represents an important new source of order flow, allowing them to reach a broader set of users while competing on execution quality.</p><p>This collaboration marks an important step toward bringing professional-grade liquidity onchain and delivering the best possible trading experience for everyone in DeFi.</p><h2 id="h-next-up-baibai-public-launch" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Next Up: BaiBai Public Launch</strong></h2><p>While KyberSwap users can already access BaiBai liquidity through Kyber's routing engine today, the standalone BaiBai app remains in closed alpha.</p><p><strong>The public launch of BaiBai, a PropAMM DEX, is planned for the coming months </strong>and will introduce additional features including gasless trading, rewards, and a dedicated trading experience built around professional market maker liquidity.</p><p>Early users are encouraged to join the closed alpha today to get first access and experience the next generation of onchain trading before the public launch.</p><p>Link: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://baibai.cx"><u>baibai.cx</u></a></p>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Spire Labs)</author>
            <category>baibai</category>
            <category>propamm</category>
            <enclosure url="https://storage.googleapis.com/papyrus_images/0950a40cc2752adfd8b39b50c441e3d4e9287cbf6ba63373c9765266bad28edb.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[PropAMMs: The Rise of Programmable Market Makers]]></title>
            <link>https://paragraph.com/@spire/propamms-the-rise-of-programmable-market-makers</link>
            <guid>rAM2bxisG1MJQ6tFq8F8</guid>
            <pubDate>Mon, 18 May 2026 08:45:22 GMT</pubDate>
            <description><![CDATA[A biased history of Ethereum trading primitivesIn Ethereum’s early years, trading onchain felt more like a digital bazaar than a modern exchange. Liquidity was thin, fragmented, and difficult to discover. If you wanted to trade one asset for another, you needed someone willing to take the opposite side at roughly the same time and price. Early systems relied on variants of peer-to-peer matching and onchain order books, but liquidity was sparse, and the user experience was often slow and ineff...]]></description>
            <content:encoded><![CDATA[<h1 id="h-" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"></h1><h3 id="h-a-biased-history-of-ethereum-trading-primitives" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">A biased history of Ethereum trading primitives</h3><p>In Ethereum’s early years, trading onchain felt more like a digital bazaar than a modern exchange. Liquidity was thin, fragmented, and difficult to discover. If you wanted to trade one asset for another, you needed someone willing to take the opposite side at roughly the same time and price. Early systems relied on variants of peer-to-peer matching and onchain order books, but liquidity was sparse, and the user experience was often slow and inefficient.</p><p>The problem wasn’t that trading infrastructure didn’t exist; it was that Ethereum’s architecture imposed constraints. Maintaining a traditional onchain central limit order book (CLOB) meant continuously creating, updating, and cancelling orders. Execution was expensive and unpredictable. Markets could exist, but they struggled to attract enough liquidity and activity to feel efficient. At a time when online trading systems elsewhere could fill orders in milliseconds, Ethereum transactions could take minutes to settle. The future of finance it was not.</p><p>Automated Market Makers (AMMs) changed this model entirely.</p><p>Instead of requiring a direct counterparty for every trade, AMMs introduced pooled liquidity that anyone could trade against at any time. Liquidity providers could deposit otherwise idle assets and earn fees in return, while traders gained immediate access to liquidity without needing another participant on the other side.</p><p>The tradeoff was straightforward: users exchanged price precision for accessibility and composability. Prices were mathematically derived from liquidity curves rather than determined through competing bids and offers. Larger trades incurred slippage, and liquidity was not necessarily deep, but it was always available, 24/7. More importantly, liquidity itself became a permissionless building block that any application could integrate with. Early pioneers such as Bancor led the charge, with Uniswap later refining the model and pushing it into the centre of DeFi.</p><p>This was transformative. Rather than being a destination, liquidity became infrastructure. Money was becoming programmable. For the first time, financial functionality felt less like an application and more like a set of Lego bricks that anyone could assemble into something new. It was genuinely innovative and, at the time, incredibly exciting.</p><br><p>As the ecosystem matured and more sophisticated participants entered the market, new trading primitives emerged. Protocols such as AirSwap, 0x, and later CoW Protocol explored alternative designs built around RFQs, off-chain order relays, intents, and solver networks.</p><p>These systems sought to address some of AMMs’ weaknesses by enabling users to express trades through signed intents or limit orders, while market makers and competing solvers provided execution. This frequently resulted in tighter pricing and improved capital efficiency, particularly for larger trades.</p><p>But the tradeoffs simply shifted elsewhere. Quotes could become stale, orders might not fill immediately, if ever, and more of the coordination would move off-chain. While settlement remained on Ethereum, some of the magic of fully onchain composability was lost. From a programmable money perspective, this felt like a step backwards. Not because the execution quality was worse, often it was much better, but because some of the intelligence moved away from open and shared infrastructure into specialised and often more opaque intermediaries.</p><p>Meanwhile, AMMs themselves continued evolving. Concentrated liquidity allowed liquidity providers to allocate capital only where trading activity was expected, dramatically improving capital efficiency. More recently, hooks introduced the ability to attach custom logic directly to liquidity pools, enabling dynamic fees, custom execution behaviour and entirely new forms of market design. Trading primitives have gradually shifted from static, passive systems to increasingly adaptive and expressive ones.</p><p>Yet despite all these improvements, AMMs and DeFi more generally still react to market conditions rather than anticipate them. Liquidity positions update periodically while markets move continuously. For many major assets, price discovery still largely happens on centralised exchanges such as Binance, while DeFi often plays catch-up.</p><p>That gap between where prices are discovered and where liquidity actually lives may be one of the most interesting problems in DeFi today. PropAMMs are an attempt to close it.</p><figure float="none" data-type="figure" class="img-center"><img src="https://storage.googleapis.com/papyrus_images/148e53f139513c7319c06f863dcf43bea28bbd52ed8f326b42b20c76f40eea21.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAIAAAAUMWhjAAAACXBIWXMAAAsTAAALEwEAmpwYAAAC5UlEQVR4nKVVb0gTYRg/8oNfhgvUVES3UAPdp9G3EPrzIQiiD/0hsEFBFn0o6UNhGpWKIVxoqBcUNcEJO9l2MbdYWAoz0GTD5tbtj3fX7jxvN05P5ciE8kPhDq7rOq/devl9uHvuuef3PM/ved8XoLGEHEQ8SsSjCiMtA0ukeIbScFAAUETnGUrgMnt5JyNhxOnwueFCCIh4VOAy3Z3tV1ouZkn8b9csiS/MzrwYfjo5gRRYQZbEA16PyzEivbJEiiVSWRLPkrjAZaYDPp8b3tnaXMETkl01G3UCGkvwDMUzlMhUXXHAVF1lqq5qOlRvtTRaLU1WS2O9ubamskK0N5hNVktTg9n0Gh7jGUpVPCWBpATidBiLi8qNhnKjoaayos5Uc3CXqa7eXGssLiorMZSVGKrKShvMpsrS/fCoXQeBWIcdGpoO+MRq2DSm6KQEnqHmg1PwqH2vRgF6x5TOYXkJXV5CdYssZqdrzGm9BAuzM37PeDISVq0MQxcxdDHPKpUEorZ2aOjksebJCYQlUnI/gcvsbG1+eP/W5Rj5+f1b/lVqtUhSkohHoX7wJTT4sP3OzWutg2DfINhHxKOF7AN5+bHQXCw0h33+5HPDQG7tA36vN4grGQmLPhodAzSOHb9nXITPDUP9IDTw5NkAKKYP9YN+z3jA6wl4Paqa/ZtAMe8ClxE4ZiOznHvYhfyr7hbJG0Wm4gp7gVMkZb29sfbj6wbPUGm1KIpdrY8gN6bDbTdajzcfAXu7BC4jz5RNY7HQx/ngtHZPtAiyJD4fnPK54bFXz4PvAvJAZArlaXoY6uzpvr21xv1Xi8RLTZEmgUa2V9c7Hrc86G7dXl0n0EiBBJLUsdAc4nS4HCMiEOeo1wmfOHX49JmjfpdLZt+9QTF0sZAxlSMZCT/quHvVZrt0/hzY25Xb3rG8KhAPXlUotLl+2dZz/57twtn2tlsM/sdJpREEYL4Q+YMl0yyZ5lao/H/5BfsrKkTCaRtqAAAAAElFTkSuQmCC" nextheight="620" nextwidth="840" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><h1 id="h-what-is-a-propamm" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What is a PropAMM</h1><p>PropAMM has become something of a catch-all term for a new class of active market-making systems. Rather than relying purely on a static pricing curve, these systems continuously adjust prices using external signals, inventory models and proprietary strategies. At its simplest, a PropAMM is an AMM with a feedback loop attached. A pricing engine observes market conditions, estimates fair value and updates executable liquidity accordingly. In some implementations, this may be little more than publishing updated quotes every block and refusing to trade against stale prices. More sophisticated systems incorporate volatility, inventory exposure, order flow and broader market conditions into their pricing decisions.</p><p>Most designs share a common pattern: pricing happens off-chain while execution remains onchain. This creates an interesting shift in where competitive advantage lives. Traditional AMMs largely competed on liquidity depth and fee structures; active market makers increasingly compete on latency, pricing accuracy and execution quality. The ability to observe markets, react quickly, and land transactions efficiently is becoming a strategic edge.</p><p>Some firms are already forming closer relationships with block builders and sequencers to secure favourable execution and top-of-block placement. In many ways, this feels familiar. High-frequency trading firms spent years placing servers physically closer to exchanges because microseconds mattered. Crypto is beginning to develop similar behaviour. Instead of competing for physical proximity to exchanges, firms are competing for proximity to block production.</p><p>The problem with this model, at least in our view, is that it is still too slow. The programmability remains separated from the moment that actually matters: the swap itself. Ideally, you want pricing logic to execute at the point of trade execution, allowing liquidity to adapt in real time as transactions flow through the system. The challenge is cost. Complex logic executed during a swap increases gas consumption, and those costs ultimately fall on the user. More expensive execution leads to wider spreads, poorer execution quality, and a less competitive market. The ideal system would allow market makers to continuously adapt prices at the point of execution while making that additional complexity feel almost free to the trader.</p><h1 id="h-based-l3-appchains-synchronous-composability-and-programmable-market-makers" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Based L3 Appchains, Synchronous Composability and Programmable Market Makers</h1><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/baibai_cx">Baibai</a> approaches this problem differently to other PropAMMs. We use a based L3 appchain architecture. In practice, this means the market-making logic and price updates run in a dedicated execution environment, while users continue to interact from the L2.</p><p>Users remain on Base.</p><p>Market makers operate on the L3 appchain.</p><p>This separation matters because execution on the appchain is cheap enough that market makers can continuously update pricing logic without pushing meaningful additional costs onto traders.</p><p>The important detail is that the swap itself still happens on the L2, but the pricing logic is composed with state from the appchain at execution time. The AMM curve becomes less important than the ability to retrieve a fresh executable price.</p><p>In practice, the L2 queries the L3 for pricing data. Before the swap executes, the market maker submits an updated pricing state to the appchain. The sequencer then observes both the state update and the swap within the same sequencing window, allowing the transaction to execute against pricing that was refreshed immediately before inclusion. Rather than relying on stale liquidity positions or periodically refreshed curves, execution composes directly with continuously updated market state.</p><p>Conceptually, it starts to resemble synchronous composability across execution domains. Instead of treating the appchain as an isolated environment, the L2 swap effectively composes with market-making logic executing elsewhere, but still within the same sequencing window. This design fits naturally alongside emerging preconfirmation systems such as ETHGas or more direct integrations with sequencers and block builders. The later a market maker can observe the state before committing a quote, the more accurately it can price risk and the tighter spreads it can theoretically offer. Today, this is a best-efforts predictive model in which price updates are inserted alongside the swap and calculated at the point of submission to the sequencer. But we think tighter sequencer integration could push this much closer to real-time state updates.</p><figure float="none" data-type="figure" class="img-center"><img src="https://storage.googleapis.com/papyrus_images/a17fd379dbe367646c1743ff0fa2aa3348e1f4ae3fa1672a4eab298202848c2f.png" blurdataurl="data:image/png;base64,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" nextheight="2235" nextwidth="3082" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>In many ways, this shifts the AMM's role entirely. Liquidity increasingly stops being the mechanism for price discovery and instead becomes infrastructure for executing against externally generated prices.</p><p>Ethereum trading primitives have steadily evolved from simple peer-to-peer swaps to passive liquidity curves, to increasingly programmable and adaptive systems. PropAMMs push that trajectory even further. They blur the boundary between market maker, execution engine and settlement layer, while forcing DeFi to confront deeper questions about composability, latency, openness, centralisation and where intelligence should live (and who ultimately controls it) within the stack. Some of these designs may ultimately fail or drift too far toward opaque off-chain systems, but that tension is precisely what makes them important.</p><p>DeFi has always progressed by pulling more financial logic onchain, then discovering the limits of what onchain systems can support. PropAMMs feel like the latest attempt to push that boundary again.</p><p>Our view is that the next step is not simply building faster market makers. DeFi will never compete with high-frequency trading firms operating at sub-microsecond latencies inside highly optimised private infrastructure. Instead, the opportunity lies in extending Ethereum to make it even more composable. Fully customisable execution environments where complex programmable liquidity can evolve without sacrificing the composability that made DeFi powerful in the first place.</p><p>We think synchronously composable based appchains are one of the best ways to keep pushing Ethereum forward without giving up the things that made this whole experiment exciting to begin with.</p>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Spire Labs)</author>
            <author>spire@newsletter.paragraph.com (Antony Denyer)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/510bf02a7ff1e52f78e287b30232037671c8fea9e43361e90ea69fa964e6f81a.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Where CEXs Leak Efficiency]]></title>
            <link>https://paragraph.com/@spire/where-cexs-leak-efficiency</link>
            <guid>aNBDHCtN4bmp9H7ZkKL4</guid>
            <pubDate>Wed, 06 May 2026 18:32:38 GMT</pubDate>
            <description><![CDATA[The moment your backend signs and submits transactions on behalf of users, your business changes. You are no longer just a trading platform or custodian. You are an execution engine. Most CEXs run that engine inefficiently. Once you control signing, execution becomes a cost center, and most teams under-optimize it.Backend-Signed Execution SystemsCentralized exchanges fall into a category that doesn’t get enough attention: backend-signed execution systems. These systems:Construct transactions ...]]></description>
            <content:encoded><![CDATA[<p>The moment your backend signs and submits transactions on behalf of users, your business changes.</p><p>You are no longer just a trading platform or custodian.</p><p><strong>You are an execution engine.</strong></p><p>Most CEXs run that engine inefficiently.</p><p>Once you control signing, execution becomes a cost center, and most teams under-optimize it.</p><hr><h2 id="h-backend-signed-execution-systems" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Backend-Signed Execution Systems</h2><p>Centralized exchanges fall into a category that doesn’t get enough attention:</p><p><strong>backend-signed execution systems.</strong></p><p>These systems:</p><ul><li><p>Construct transactions server-side</p></li><li><p>Control calldata and execution structure</p></li><li><p>Pass gas costs to users (often with a buffer)</p></li></ul><p>In a CEX, this includes:</p><ul><li><p>Withdrawals</p></li><li><p>Deposit sweeping</p></li><li><p>Hot <span data-name="left_right_arrow" class="emoji" data-type="emoji">↔</span> cold wallet rebalancing</p></li><li><p>Internal settlement</p></li><li><p>Cross-chain liquidity movement</p></li></ul><p>There is no external signer. Everything is coordinated internally, signed by your infrastructure (or MPC provider), and executed at your expense.</p><p>Which means:</p><blockquote><p>Execution inefficiency directly impacts both margins and user experience.</p></blockquote><hr><h2 id="h-the-hidden-cost-center" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Hidden Cost Center</h2><p>Most exchanges optimize for:</p><ul><li><p>Volume</p></li><li><p>Liquidity</p></li><li><p>Fees</p></li><li><p>Latency</p></li></ul><p>But under the hood, they run a high-throughput execution pipeline.</p><h3 id="h-where-inefficiency-shows-up" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Where inefficiency shows up</h3><ul><li><p>One withdrawal = one transaction</p></li><li><p>Repeated logic with fixed overhead per user</p></li><li><p>The same contract calls encoded over and over</p></li><li><p>No aggregation or batching across users</p></li><li><p>Identical transfers executed independently</p></li><li><p>Systems built for correctness, not efficiency</p></li></ul><h3 id="h-why-its-missed" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Why it’s missed</h3><p>At small scale, costs are negligible.</p><p>At large scale, they compound across millions of transactions.</p><blockquote><p>Execution quietly becomes one of the largest unoptimized cost centers in a CEX.</p></blockquote><hr><h2 id="h-where-cexs-leak-efficiency" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Where CEXs Leak Efficiency</h2><h3 id="h-withdrawals" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Withdrawals</h3><p><strong>Pattern:</strong></p><ul><li><p>One request → one transaction</p></li></ul><p><strong>Opportunity:</strong></p><ul><li><p>Batch across users</p></li><li><p>Share execution overhead</p></li></ul><hr><h3 id="h-deposit-sweeping" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Deposit Sweeping</h3><p><strong>Pattern:</strong></p><ul><li><p>Individual sweeps from deposit addresses</p></li></ul><p><strong>Opportunity:</strong></p><ul><li><p>Aggregate transfers</p></li><li><p>Reduce repeated contract calls</p></li></ul><hr><h3 id="h-rebalancing" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Rebalancing</h3><p><strong>Pattern:</strong></p><ul><li><p>Independent transfers across wallets and assets</p></li></ul><p><strong>Opportunity:</strong></p><ul><li><p>Combine flows</p></li><li><p>Optimize timing and batching</p></li></ul><hr><h3 id="h-internal-onchain-flows" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Internal Onchain Flows</h3><p>Even mostly offchain systems still:</p><ul><li><p>Move funds</p></li><li><p>Reconcile balances</p></li></ul><p><strong>Opportunity:</strong></p><ul><li><p>Treat internal operations as batchable units</p></li><li><p>Reduce routine execution cost</p></li></ul><hr><h2 id="h-spire-execution-optimization-as-infrastructure" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Spire: Execution Optimization as Infrastructure</h2><p>Spire Labs builds <strong>DA Builder</strong>, a transaction aggregation layer for Ethereum.</p><p>It sits between your backend and the chain, combining multiple transactions into a single optimized execution.</p><p>DA Builder:</p><ul><li><p>Combines multiple transactions into a single onchain transaction</p></li><li><p>Reduces redundant overhead and execution costs</p></li><li><p>Shares calldata across transactions</p></li><li><p>Lowers gas and calldata costs</p></li><li><p>Improves inclusion via higher-value bundled transactions</p></li><li><p>Adds built-in MEV and revert protection</p></li></ul><p>Framed simply:</p><blockquote><p><strong>Execution infrastructure for teams that already own transaction flow</strong></p></blockquote><p>No changes to:</p><ul><li><p>UX</p></li><li><p>Product logic</p></li><li><p>Core systems</p></li></ul><p>Just more efficient execution.</p><hr><h2 id="h-why-it-matters" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Why It Matters</h2><h3 id="h-margin-expansion" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Margin Expansion</h3><p>Lower gas per action directly improves unit economics.</p><h3 id="h-better-user-economics" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Better User Economics</h3><p>Cheaper execution enables lower fees and better pricing.</p><h3 id="h-non-linear-scaling" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Non-Linear Scaling</h3><p>Batching reduces cost per transaction as volume grows.</p><hr><h2 id="h-the-shift" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The Shift</h2><p>If your backend signs transactions, execution is your responsibility.</p><p>Most CEXs today:</p><ul><li><p>Treat execution as plumbing</p></li><li><p>Accept default patterns</p></li><li><p>Ignore aggregation</p></li></ul><p>That won’t hold.</p><p>Execution optimization will become standard infrastructure, like CDNs in Web2.</p><p>And exchanges that adopt it early will have a structural advantage:</p><ul><li><p>Lower costs</p></li><li><p>Better pricing</p></li><li><p>More scalable systems</p></li></ul><p>Because ultimately:</p><p><strong>If you control signing, you control execution.</strong></p><p>And execution is worth optimizing.</p>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Antony Denyer)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/dd86d7fc79beceaff846af62123144daae01232945fa73fdf50f9d224b3f15e9.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Trading terminals fixed UX. Execution is still broken.
]]></title>
            <link>https://paragraph.com/@spire/missing-execution-layer</link>
            <guid>XRwrkNNbbHIpv9Va9CZu</guid>
            <pubDate>Thu, 23 Apr 2026 08:56:58 GMT</pubDate>
            <description><![CDATA[Trading terminals solved onboarding with embedded wallets. Users can sign up and trade in seconds.
But when the market moves, trades stall, fail, or land too late.
UX isn’t the problem anymore - execution is.
]]></description>
            <content:encoded><![CDATA[<p>Base can confirm transactions in ~200ms but your users still experience failed trades.</p><p>It's surprising, you're building on Base, blockspace is faster, feedback loops are tighter, and execution should finally feel like a modern trading app. Sub-second preconfirmations and ~200ms feedback loops are supposed to remove the old excuses.</p><p>And yet the user still taps trade, waits, refreshes, retries, or gets a worse fill than expected.</p><p>That gap matters because it changes the diagnosis. On high-performance EVM rails, this is no longer mainly a chain-speed problem. It is an execution problem inside the application stack.</p><p>Embedded wallets solved one of crypto's hardest early problems: getting users on-chain without forcing them through seed phrases, extensions, and custody anxiety. They made the front door feel normal. A user can sign up, fund, and start trading in a flow that looks much closer to fintech than old-school crypto.</p><p>But for trading terminals, removing onboarding friction only raises the bar. Once the wallet experience becomes invisible, users stop grading you on wallet UX and start grading you on whether the trade actually lands, how fast it lands, and whether the result matches the quote.</p><p>That is why teams building on Base keep running into the same uncomfortable question:</p><p>If we're already on fast chains, why is execution still breaking in our app?</p><h2 id="h-the-bottleneck-has-moved" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>The bottleneck has moved</strong></h2><p>For a long time, crypto teams could blame the chain.</p><p>Blocks were slow. Confirmation times were long. Feedback loops were noisy. Users had to tolerate latency because latency was structurally unavoidable.</p><p>That excuse is getting weaker, especially on Base and other fast EVM environments. With Flashblocks and similar improvements, users can get signal far earlier than final settlement. Infrastructure has moved forward. Expectations moved with it.</p><p>The bottleneck did not disappear. It moved.</p><p>Today, the fragile part of the trading experience is increasingly the execution pipeline between user intent and chain inclusion. That includes:</p><ul><li><p>transaction construction</p></li><li><p>routing</p></li><li><p>submission strategy</p></li><li><p>mempool and builder interaction</p></li></ul><p>This is what many teams miss. They upgraded the chain environment, but not the logic sitting on top of it.</p><p>So the app still behaves like it was built for slower conditions. It treats propagation as a commodity. It assumes that if the underlying chain is fast, the user outcome will be good by default.</p><p>That assumption is wrong.</p><h2 id="h-fast-chains-do-not-automatically-create-fast-trading-ux" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Fast chains do not automatically create fast trading UX</strong></h2><p>If you run a trading terminal with embedded wallets, your user does not separate infrastructure layers in their head.</p><p>They do not think:</p><blockquote><p>The chain was fast, but the transaction construction path was suboptimal.</p></blockquote><p>They think:</p><blockquote><p>My trade failed.</p></blockquote><p>Or:</p><blockquote><p>I got a bad fill.</p></blockquote><p>Or:</p><blockquote><p>This app was too slow and I missed it.</p></blockquote><p>That is the entire commercial problem in one sentence. Fast chains improved the ceiling, but most apps still deliver a mediocre realized experience because the execution stack is underbuilt.</p><p>This is especially visible in embedded-wallet products. Once onboarding friction is gone, the product implicitly promises instant action. The user signed up in seconds. Funding felt smooth. The interface looks like a serious terminal. So when the trade path stalls under volatility, the failure feels even worse. The app presented itself as high-performance, then broke at the moment that mattered.</p><p>That is why the next competitive battleground for trading terminals is not basic wallet abstraction. It is execution quality.</p><h2 id="h-execution-is-now-an-application-layer-problem" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Execution is now an application-layer problem</strong></h2><p>This is the framing shift more teams need to make.</p><p>The problem is not, broadly speaking, that chains are too slow anymore. The problem is that execution quality is now determined by application-layer decisions.</p><p>How is the transaction assembled?</p><p>How is the transaction submitted under changing conditions?</p><p>How does the app interact with the mempool, builders, and inclusion pathways that actually determine whether the user gets the outcome they expected?</p><p>Those questions now sit directly on the critical path of product quality.</p><p>That means execution is no longer a backend detail you can leave in a default state. It is a core UX system. It affects conversion from intent to trade, trader confidence during volatility, retained volume, and ultimately revenue per user.</p><p>If the user has to retry, wait, or accept unexplained slippage, your infrastructure story does not matter. You built on a fast chain and still delivered a weak trading experience.</p><h2 id="h-what-this-means-for-embedded-wallet-trading-terminals" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>What this means for embedded-wallet trading terminals</strong></h2><p>The broader market of trading terminals using embedded wallets is now converging on the same pattern.</p><p>Access is solved well enough. Distribution is no longer limited by the wallet setup cliff. The question is what happens after the user presses the button.</p><p>And that is where many products are still thin.</p><p>They have good onboarding, good branding, and good surface-level UX. But underneath, the execution path is still generic. It was not designed for stressed market conditions, tight user expectations, or the realities of modern EVM trading flow.</p><p>The result is predictable:</p><ul><li><p>lower trade completion rates</p></li><li><p>worse fills</p></li><li><p>more failed or stuck transactions</p></li><li><p>less trust during the moments that generate the most volume</p></li></ul><p>Users do not need many of these experiences before they change behavior. A few broken trades during volatility is enough to teach a user that your app is not where they should size up.</p><h2 id="h-spire-is-the-missing-execution-layer-on-top-of-fast-chains" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Spire is the missing execution layer on top of fast chains</strong></h2><p>This is the gap Spire Full Send is built to address.</p><p>Not as a replacement for fast chains, but as the missing execution layer on top of fast chains.</p><p>That distinction matters. Base, Ethereum L2s, and Flashblocks-enabled environments improve what is possible. Spire improves how reliably your app captures that possibility for the user.</p><p>It sits between user intent and on-chain outcome, optimizing the part that many teams still leave underpowered: the execution path itself.</p><p>That means better transaction handling, better routing outcomes, smarter submission behavior, and tighter interaction with the pathways that determine inclusion quality. In practical terms, that translates into what your users actually notice:</p><ul><li><p>more successful trades</p></li><li><p>faster inclusion</p></li><li><p>fewer dropped or reverted transactions</p></li><li><p>less value leakage and more MEV-aware execution</p></li></ul><p>This is why execution optimization still matters even if you are already building in a high-performance environment. Fast infrastructure is not the finished product. Apps still need an execution layer that knows how to operate on top of it.</p><h2 id="h-the-takeaway" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>The takeaway</strong></h2><p>Embedded wallets removed the old onboarding bottleneck.</p><p>Fast chains removed many of the old infrastructure excuses.</p><p>What remains is the part that now decides whether a trading terminal actually feels good: execution.</p><p>If you are building on Base, Ethereum L2s, or similar fast environments, and your users still experience failed trades, the answer is probably not that the chain is not fast enough.</p><p>It is that your execution pipeline is now the product bottleneck.</p><p>That is the shift. The winners in trading will not just have cleaner onboarding or faster blockspace. They will have the best execution layer on top of fast chains.</p><p>If that is the problem you are trying to solve, explore Spire Full Send:</p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://spire.dev/fullsend"><em>https://spire.dev/fullsend</em></a></p></li></ul><br>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Antony Denyer)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/e4759310021fc942a71979213e4a5b0524e71012eaba354d202eaffa928e2620.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Most solvers don’t lose money on pricing. They lose it on execution.]]></title>
            <link>https://paragraph.com/@spire/most-solvers-dont-lose-money-on-pricing-they-lose-it-on-execution</link>
            <guid>PoWoF8rWGDJATUdZ51Pt</guid>
            <pubDate>Thu, 09 Apr 2026 10:47:03 GMT</pubDate>
            <description><![CDATA[That can sound counterintuitive if you’ve spent time optimizing quotes, modelling slippage, or competing on spread. In practice, though, a meaningful portion of solver PnL is determined after the quote is already won. The difference between a profitable fill and a marginal (or negative) one is often hidden in how that transaction gets executed onchain. Even today at sub gwei base fee a typical Ethereum mainnet fill might cost ~$0.03–$0.20 in gas. At scale, that isn’t noise. It is your margin....]]></description>
            <content:encoded><![CDATA[<p>That can sound counterintuitive if you’ve spent time optimizing quotes, modelling slippage, or competing on spread. In practice, though, a meaningful portion of solver PnL is determined after the quote is already won. The difference between a profitable fill and a marginal (or negative) one is often hidden in how that transaction gets executed onchain.</p><p>Even today at sub gwei base fee a typical Ethereum mainnet fill might cost ~$0.03–$0.20 in gas. At scale, that isn’t noise. It is your margin.</p><p>And yet, most execution systems today are still treated as an afterthought.</p><hr><h2 id="h-how-solvers-actually-operate" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">How solvers actually operate</h2><p>For most intent-based systems the lifecycle is broadly similar:</p><ol><li><p>A user expresses an intent (swap, bridge, etc.)</p></li><li><p>Solvers generate quotes based on their internal pricing models</p></li><li><p>A winning solver is selected</p></li><li><p>The solver executes the transaction onchain</p></li></ol><p>The industry has spent the majority of its energy on step (2): pricing.</p><ul><li><p>Better routing algorithms</p></li><li><p>Faster quote generation</p></li><li><p>More accurate slippage modelling</p></li><li><p>Inventory-aware pricing</p></li></ul><p>But once a solver wins, execution is typically handled in a much more fragmented way:</p><ul><li><p>Each solver constructs and submits its own transactions</p></li><li><p>Gas bidding is done independently</p></li><li><p>Calldata is often unoptimized</p></li><li><p>Routing decisions are made locally, not globally</p></li><li><p>Inclusion is left to public mempools or private RPCs with revert protection</p></li></ul><p>This works, but it is far from efficient.</p><hr><h2 id="h-the-hidden-problem-execution-inefficiency" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">The hidden problem: execution inefficiency</h2><p>Execution inefficiency is easy to miss because it doesn’t show up in the quote. It shows up in realized PnL.</p><p>Two solvers can quote the same price, win the same intents, and still end up with very different outcomes purely due to execution.</p><p>The gap comes from a collection of small inefficiencies:</p><ul><li><p>Slightly higher gas usage per transaction</p></li><li><p>Redundant calldata across fills</p></li><li><p>Suboptimal routing paths</p></li><li><p>Poor inclusion timing</p></li><li><p>Occasional reverts</p></li></ul><p>Individually, each might look negligible. Together, they compound.</p><p>A rough rule of thumb we’ve seen in production systems:</p><p><strong>~10% of execution cost is structurally wasted.</strong></p><p>Not because of bad engineering, but because the system itself isn’t designed to optimize execution globally.</p><hr><h2 id="h-where-the-inefficiencies-come-from" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Where the inefficiencies come from</h2><h3 id="h-1-gas-inefficiency" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">1) Gas inefficiency</h3><p>Most solver transactions are constructed in isolation.</p><ul><li><p>No batching across fills</p></li><li><p>No shared state reuse</p></li><li><p>No amortization of fixed costs</p></li></ul><p>If you’re submitting 10 independent fills, you’re paying 10 times for base costs that could be shared.</p><p>Even small savings—10k–20k gas per transaction—add up quickly at scale.</p><hr><h3 id="h-2-calldata-bloat" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">2) Calldata bloat</h3><p>Calldata is often the most overlooked cost center.</p><ul><li><p>Repeated parameters across transactions</p></li><li><p>Verbose encoding patterns</p></li><li><p>No compression or aggregation</p></li></ul><p>On mainnet, calldata is not cheap. At high throughput, reducing calldata by even a few dozen bytes per transaction translates directly into margin.</p><hr><h3 id="h-3-routing-fragmentation" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">3) Routing fragmentation</h3><p>Routing decisions are typically made per intent.</p><p>But in reality, many fills share overlapping paths:</p><ul><li><p>Same token pairs</p></li><li><p>Same liquidity sources</p></li><li><p>Same intermediate assets</p></li></ul><p>Without aggregation, you end up:</p><ul><li><p>Hitting the same pools multiple times</p></li><li><p>Incurring redundant price impact</p></li><li><p>Paying repeated routing overhead</p></li></ul><p>A globally optimized system would recognize these overlaps and co-route them.</p><hr><h3 id="h-4-inclusion-and-timing" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">4) Inclusion and timing</h3><p>Inclusion is not just about getting a transaction mined. It is about <em>when</em> and <em>how</em>.</p><p>Common issues:</p><ul><li><p>Overpaying for gas to guarantee inclusion</p></li><li><p>Underbidding and missing profitable windows</p></li><li><p>Competing with your own transactions</p></li><li><p>Exposure to mempool latency and reordering</p></li></ul><p>Many solvers treat inclusion as a binary problem. In reality, it is an optimization surface.</p><hr><h3 id="h-5-reverts-and-reliability" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">5) Reverts and reliability</h3><p>Reverts are often dismissed as edge cases. They’re not.</p><p>They come from:</p><ul><li><p>State changes between quote and execution</p></li><li><p>Fragile routing assumptions</p></li><li><p>Race conditions with other solvers</p></li></ul><p>Each revert is a direct cost:</p><ul><li><p>Lost gas</p></li><li><p>Lost opportunity</p></li><li><p>Potential penalties (depending on protocol design)</p></li></ul><p>Reducing revert rates even slightly can have an outsized impact on profitability.</p><hr><h2 id="h-why-this-matters" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Why this matters</h2><p>Execution inefficiency doesn’t just affect solvers. It propagates through the entire system.</p><p><strong>For solvers:</strong></p><ul><li><p>Lower margins</p></li><li><p>Higher variance in outcomes</p></li><li><p>Reduced competitiveness in auctions</p></li></ul><p><strong>For users:</strong></p><ul><li><p>Worse pricing (inefficiencies get priced in)</p></li><li><p>Lower reliability (failed or delayed fills)</p></li></ul><p><strong>For protocols:</strong></p><ul><li><p>Reduced solver participation</p></li><li><p>Less competitive auctions</p></li><li><p>Worse UX and retention</p></li></ul><p><strong>Thesis:</strong></p><p><em>Execution quality, not liquidity, is becoming the primary differentiator in intent-based systems.</em></p><p>Liquidity is increasingly commoditized. Execution is not.</p><hr><h2 id="h-aggregation-as-a-missing-primitive" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Aggregation as a missing primitive</h2><p>The core issue is that execution today is <em>decentralized at the wrong layer</em>.</p><p>Each solver optimizes locally, but no one optimizes globally.</p><p>Aggregation changes that.</p><p>Instead of treating each fill as an independent transaction, you treat execution as a shared problem:</p><ul><li><p>Batch multiple fills into fewer transactions</p></li><li><p>Deduplicate calldata</p></li><li><p>Co-optimize routing across intents</p></li><li><p>Manage gas bidding at the aggregate level</p></li><li><p>Coordinate inclusion strategy</p></li></ul><p>This is not just about cost reduction. It is about <em>system design</em>.</p><p>A well-aggregated execution layer can:</p><ul><li><p>Reduce per-fill gas costs</p></li><li><p>Improve inclusion consistency</p></li><li><p>Lower revert rates</p></li><li><p>Enable more sophisticated routing strategies</p></li></ul><p>And importantly, it allows solvers to focus on what they’re actually differentiated in: pricing and inventory management.</p><hr><h2 id="h-a-concrete-example" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">A concrete example</h2><p>Consider 10 fills targeting similar token pairs within the same block.</p><p><strong>Without aggregation:</strong></p><ul><li><p>10 separate transactions</p></li><li><p>10x base gas costs</p></li><li><p>Repeated calldata</p></li><li><p>Independent routing decisions</p></li><li><p>Potential self-competition in the mempool</p></li></ul><p><strong>With aggregation:</strong></p><ul><li><p>Fewer bundled transactions</p></li><li><p>Shared execution paths</p></li><li><p>Compressed calldata</p></li><li><p>Coordinated inclusion</p></li><li><p>Reduced contention</p></li></ul><p>Even a modest improvement, say $0.01 saved per fill, scales to meaningful numbers quickly.</p><p>At 5k fills/day, that’s $50/day in recovered margin.</p><hr><h2 id="h-where-spire-fits" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Where Spire fits</h2><p>This is the layer Spire is focused on: transaction aggregation and execution infrastructure.</p><p>Not another solver. Not another quoting system.</p><p>A shared execution layer that sits downstream of solvers and optimizes how transactions actually hit the chain.</p><p>In practice, this means:</p><ul><li><p>Aggregating fills across solvers</p></li><li><p>Reducing gas and calldata overhead</p></li><li><p>We’re seeing ~10% savings in production today, in a bear market!</p></li><li><p>Improving inclusion quality</p></li><li><p>Zero reverts</p></li></ul><p>We’re already working with relayers in systems like Across, where execution quality directly impacts both solver profitability and user outcomes.</p><p>The goal isn’t to replace solvers. It is to make them more efficient.</p><hr><h2 id="h-where-this-is-going" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Where this is going</h2><p>As intent-based systems expand and cross-chain execution becomes solver-driven, the pressure on execution will increase.</p><p>A few trends are already clear:</p><ul><li><p><strong>More competition on thin margins</strong> → execution efficiency becomes decisive</p></li><li><p><strong>Higher throughput systems</strong> → inefficiencies compound faster</p></li><li><p><strong>Cross-chain complexity</strong> → execution reliability becomes harder</p></li><li><p><strong>Protocol-level auctions</strong> → solvers need consistent, predictable outcomes</p></li></ul><p>In that world, the current model, independent, uncoordinated execution doesn’t scale.</p><p>We’re likely moving toward a separation of concerns:</p><ul><li><p>Solvers specialize in pricing and capital efficiency</p></li><li><p>Execution layers specialize in aggregation, routing, and inclusion</p></li></ul><p>The same way block builders emerged to optimize block construction, execution infrastructure will emerge to optimize solver transactions.</p><p>And the solvers that adopt it early will have a structural advantage, not because they quote better, but because they execute better.</p><p>That’s where the next 10% comes from.</p>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Antony Denyer)</author>
            <category>ethereum</category>
            <category>solvers</category>
            <category>mev</category>
            <enclosure url="https://storage.googleapis.com/papyrus_images/84883683189e40e8da0d561c634455f699574b741cf18593f71eb1b96d51742d.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Spire’s DA Builder Powers Aztec Provers]]></title>
            <link>https://paragraph.com/@spire/dabuilder-aztec</link>
            <guid>3ZIOpygO0uMvS28jNeMU</guid>
            <pubDate>Thu, 02 Apr 2026 15:04:34 GMT</pubDate>
            <description><![CDATA[Spire's DA Builder is now powering provers on Aztec Network, enabling the most cost-efficient proof submission through transaction aggregation. This marks an important step in supporting Aztec’s fully permissionless architecture, where both sequencing and proving are open to anyone, and reinforces the role of efficient infrastructure in scaling decentralized systems.Enabling Efficient Participation in a Permissionless Proving NetworkAztec is one of the first rollups to introduce permissionles...]]></description>
            <content:encoded><![CDATA[<p>Spire's <strong>DA Builder</strong> is now powering provers on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/aztecnetwork">Aztec Network</a>, enabling the most cost-efficient proof submission through transaction aggregation.</p><p>This marks an important step in supporting Aztec’s fully permissionless architecture, where both sequencing and proving are open to anyone, and reinforces the role of efficient infrastructure in scaling decentralized systems.</p><hr><h2 id="h-enabling-efficient-participation-in-a-permissionless-proving-network" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Enabling Efficient Participation in a Permissionless Proving Network</h2><p>Aztec is one of the first rollups to introduce <strong>permissionless proving</strong>, allowing any participant to generate and submit proofs for proposed blocks.</p><p>This open design strengthens decentralization, but it also introduces a challenge:</p><p>Provers must independently submit transactions to Ethereum L1, competing in the same fee market as all other users. As a result, gas efficiency and transaction inclusion become critical to profitability and performance.</p><p>Spire’s DA Builder addresses this by aggregating and optimizing proof submissions before they are posted to Ethereum, delivering:</p><ol><li><p><strong>Cost Reduction: </strong>Aggregated submissions significantly reduce per-proof gas costs.</p></li><li><p><strong>Faster Inclusion: </strong>Optimized transaction landing improves inclusion latency in Ethereum blocks.</p></li></ol><p>Together, these improvements make permissionless proving more economically viable—especially as network activity scales.</p><figure float="none" width="445px" data-type="figure" class="img-center"><img src="https://storage.googleapis.com/papyrus_images/8dd252b419d66355637a072f57c259cae6d4dce61f6dd13b07fc0553fd4f5682.png" blurdataurl="data:image/png;base64,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" nextheight="1361" nextwidth="1200" class="image-node embed"><figcaption htmlattributes="[object Object]" class="">Prover + DA Builder</figcaption></figure><hr><h2 id="h-expanding-to-sequencer-support" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Expanding to Sequencer Support</h2><p>While DA Builder is now live for Aztec provers, this is only the beginning. With the next Aztec mainnet upgrade, DA Builder will be integrated to support <strong>Aztec sequencers</strong>, enabling the most cost-efficient block building.</p><p>Unlike many rollups that start with a centralized sequencer, Aztec launched with a fully decentralized sequencer network. Nodes are randomly selected to build and validate blocks, reducing censorship risk by design.</p><p>This design empowers sequencers to choose how to land L1 block proposal transactions and how much gas to pay. There’s game theory at play: sequencers must get transactions included (earn rewards) without overpaying for gas. Rational actors will always try to minimize overhead.</p><p>DA Builder will do exactly that. By aggregating and optimizing L1 submissions, it enables sequencers to compete efficiently in Aztec’s permissionless environment.</p><figure float="none" width="484px" data-type="figure" class="img-center"><img src="https://storage.googleapis.com/papyrus_images/fdd678c410da43423b0762e3d2bf23d42c3864c2c21372ace2a037c6dfa7eacc.png" blurdataurl="data:image/png;base64,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" nextheight="983" nextwidth="1200" class="image-node embed"><figcaption htmlattributes="[object Object]" class="">Sequencer + DA Builder</figcaption></figure><hr><h2 id="h-strengthening-the-economics-of-decentralized-infrastructure" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Strengthening the Economics of Decentralized Infrastructure</h2><p>As rollups evolve toward fully decentralized systems, <strong>operational efficiency becomes a key enabler of participation</strong>.</p><p>Without cost-efficient infrastructure, permissionless systems risk centralization due to high operational overhead. By improving how transactions are submitted to Ethereum L1, DA Builder helps:</p><ul><li><p>Lower the barrier to entry for node operators</p></li><li><p>Improve profitability for participants</p></li><li><p>Support long-term network resilience and decentralization</p></li></ul><hr><h2 id="h-adding-da-builder-today" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Adding DA Builder Today</h2><p>Aztec provers can now leverage DA Builder on the Aztec mainnet,<strong> </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.notion.so/spirepartners/Aztec-Ignition-Prover-Options-2ea5534d3c4c801d8473c4d1cc688209?source=copy_link"><strong>available today</strong></a><strong>. </strong></p><p>Support for Aztec sequencers will be included in the next Aztec mainnet upgrade.</p><p>If you're running an Aztec node, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.spire.dev/contact">contact us</a> to ensure your setup is fully optimized for cost-efficient operation.</p><br>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Spire Labs)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/b549285fe69b644f6afcd7e42e9b8e0cf7aab0c9ef5e14aadd9b6ccee21bf7bb.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Spire and BTCS collaborate to strengthen Ethereum block building]]></title>
            <link>https://paragraph.com/@spire/btcs</link>
            <guid>ERXKtvBn0r6oFKoYm9xx</guid>
            <pubDate>Mon, 12 Jan 2026 04:23:33 GMT</pubDate>
            <description><![CDATA[We’re excited to announce a collaboration between Spire and BTCS to improve Ethereum block building through higher quality inclusion and efficient transaction delivery.]]></description>
            <content:encoded><![CDATA[<p>We’re excited to announce a new partnership between Spire and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.btcs.com/">BTCS</a>, focused on improving Ethereum block building through higher quality inclusion and more efficient transaction delivery.</p><p>This collaboration integrates Spire’s <strong>DA Builder</strong> into BTCS’s Builder+ operations, aligning transaction aggregation with robust block building infrastructure on Ethereum.</p><p>BTCS Inc. is a publicly traded blockchain company focused on Ethereum, building and operating scalable, revenue-generating infrastructure across the Ethereum network. Anchored by expertise in block building, validator operations, and decentralized finance, BTCS supports growth within the Ethereum ecosystem through consistent execution and long-term focus.</p><p>This new integration with Spire creates a tighter path from transaction execution to Ethereum settlement. For BTCS, it expands and diversifies order flow while strengthening its Builder+ operations.</p><h2 id="h-improving-transaction-delivery-on-ethereum" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Improving transaction delivery on Ethereum</h2><p>As Ethereum evolves, with account abstraction, smart wallets, and increasingly complex application flows, reliable and cost efficient transaction delivery has become essential. Spire’s DA Builder is designed to meet this need by optimizing how transactions reach Ethereum blocks.</p><p>DA Builder aggregates transactions to:</p><ul><li><p>Reduce gas costs at scale</p></li><li><p>Ensure fast and reliable inclusion</p></li><li><p>Improve execution quality</p></li><li><p>Deliver MEV protection</p></li></ul><p>DA Builder is already used by leading relayers, wallet providers, and L2 networks, reflecting growing adoption across the Ethereum ecosystem.</p><h2 id="h-building-ethereum-infrastructure-together" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Building Ethereum infrastructure together</h2><p>This partnership reflects a shared belief that Ethereum infrastructure works best when aggregation, execution, and block building are designed together. By combining Spire’s DA Builder with BTCS’s block building expertise, we’re advancing more efficient and predictable transaction delivery on Ethereum.</p><p>We look forward to working closely together to expand this integration and strengthen Ethereum’s transaction and block building pipeline.</p><p>Together with BTCS, we’re helping shape the future of how applications execute and settle on Ethereum.</p>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Spire Labs)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/a793541e9f8106915cce2ce3e86802b3448ae457bba28a628442dd8733478b8f.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[The first synchronously composable appchain on Celo]]></title>
            <link>https://paragraph.com/@spire/human-appchain</link>
            <guid>4dBQyEjH6wRFmIDo8tjR</guid>
            <pubDate>Mon, 22 Dec 2025 14:55:33 GMT</pubDate>
            <description><![CDATA[The first synchronously composable appchain on Celo, the Ethereum Layer 2 built for the real world and designed for fast, low-cost transactions, is now live. Through a new collaboration between Spire, cLabs, and Self Protocol, this appchain is powered by Self’s zero-knowledge Proof of Humanity and built using Pylon, Spire’s platform for synchronous composability. The launch demonstrates how appchains can now natively verify onchain human identity without sacrificing user privacy. Together, we...]]></description>
            <content:encoded><![CDATA[<p>The first synchronously composable appchain on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://celo.org">Celo</a>, the Ethereum Layer 2 built for the real world and designed for fast, low-cost transactions, is now live.</p><p>Through a new collaboration between Spire, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://clabs.co/">cLabs</a>, and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://self.xyz">Self Protocol</a>, this appchain is powered by Self’s zero-knowledge Proof of Humanity and built using <strong>Pylon</strong>, Spire’s platform for synchronous composability. The launch demonstrates how appchains can now natively verify onchain human identity without sacrificing user privacy.</p><p>Together, we’ve unlocked a new class of applications that support compliant stablecoin usage, privacy-preserving eligibility and sanctions verification, and age-gated experiences while keeping user data protected.</p><p><strong>Try the live demo and claim your Human NFT: </strong></p><div data-type="embedly" src="https://human.spire.dev/" data="{&quot;provider_url&quot;:&quot;https://human.spire.dev&quot;,&quot;description&quot;:&quot;Claim your Human NFT - Mint your \&quot;I am human\&quot; NFT on Pylon appchain&quot;,&quot;title&quot;:&quot;Human NFT&quot;,&quot;mean_alpha&quot;:233.768650794,&quot;thumbnail_width&quot;:1200,&quot;url&quot;:&quot;https://human.spire.dev/&quot;,&quot;thumbnail_url&quot;:&quot;https://storage.googleapis.com/papyrus_images/b0b98917e3c9070a1031ec7442634da072c901fad1499950b20deb1559ce9283.png&quot;,&quot;version&quot;:&quot;1.0&quot;,&quot;provider_name&quot;:&quot;Human NFT&quot;,&quot;type&quot;:&quot;link&quot;,&quot;thumbnail_height&quot;:630,&quot;image&quot;:{&quot;base64&quot;:&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAARCAIAAAAzPjmrAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEs0lEQVR4nKXP609bZRwH8Oe1mSZGN4yJbhoTeaNR/widmbtoZS+mm8mWZeqGopMBYSttB6WUUtbLyqAdyGDgxjoUSlntygrtoYdTenqh7Snn9H49t54eNpDEW0xbh7v5RpNPvvl9n3zfPMAEJYYm5qatrgR1L15Y+5+iuVKaWXeHUuDZWgDAa2/vBqEo6/JHfVgqw9x7ojRV9ug79WRpis8xG0Sakcj1J0+3a/TXAM2tM6UNltvIkaUcxZeTLBVI/j8gaZ6i7+byJYrmNzd/+/2PPzc2fwUxT4rMFZkCx1IcU/hXVI4lc0X6b+z9fEghSc5N3c4nCkyhmE+T+TRJZmiwMrySx3Ilio174kySZtJ0McM8okRyd+nSOrt2j17j89yWBzdcrpgnMhFkpZhl2RTNpmgmSTFJCrg1KOYI5z0p71XPWppcS1P8w0ppElsOLczYYRsUgNB4AMfRMO6LJHz4/U2+guLT9HqWKcULFfn1LLOeo4H1MuS5ha5exWAjksCJVCRGhmN8LLuFxuL6HoOkSXrs0ClJU8eobvTbz1tOHW0Unj7PEUk+likj0lUlPFnJNB/L+GYQnxkBs1Kr/5I/pMfsNyEWT7CROIfFS3iSiySqknDg6MEvJY3SzibZN8cb1RKNWqL5+mhjv+zSqgMtL7H4P8LxYjDGxzJZT7itTtWyvwfYRPaQLuTSe8xX7eQSxoVjxWC0GCSKQYIN4DyR2mR5KhAhFtwJlz9gcUQdngKKZWA/H8v8QnElPMn6I2yAqCoGCQ6L0Sg2eOZKy4FekUANXGrPks59bc7pHHcVXEHGi9GeEO0JkXCghCd1YjUAOwDYCcAuAHZur3mzpuaNSn0JgJcBqNGJNVw4TsIBCglSyErGjgYnndr6wdO75SKBWnhIC2aVTrPB7h7wR68jeQjNLaAFyJt3ojm7h/FG9GL1U2DX9mdqn9v2+vPbane98NarL76zo1J3PF27DbxiEKspJJixwdk5N+MNmlST3+3pbP6g+9x+xbk9iu72SfDTBYev2285a/WOzWZscMLkJCZvp25BqVtQ0uzIziGMD99CIWEKCW9V1k+krUvx6fmEaT5hdhKL3ulha/fJgZY6ZcsRQ+tB7cAIBKa0LrcQVn0y2H9qgJiwEBMWSDNaPYgJCz4+uzpmflzoisk3bvZbnLEQkcWiuB2JWKGY2z/aZWz8UCE+f6dNDsl6zCOWFWDsg+a1TtOSu+uYoeewKtBvXB0zhYd+DBkmH3OzKqg3lvXfCBluYiNT2PBUeT9ohPtuiA+qmuo0bXKnpAtS6J0DRgSMX0dtg67pebjzcF/T3l75IdVYQ98d8WWfagRVPm74gSzzyIdQxfBsa/+Fz1QiQc+Z9zuFDSMiOSRVwuJOx8DEMrj8c8B2aXm6wdyyVy78qLd5n6L+XdnFIwpE0geLqnSw8CGLrdpqLrZqXa0X4baL3x9T1r/XJRSom/d1SeUzEqVLqoQlXZDu+jK4Yg0P98+LBOrmT3XN++RtggvNB3o6P1bcqZctNHQvNHTPneyYPX7eeqLdeqLdUsnKIbGckNi+6LDXy+xfdQwdlp05oBQJ1GfreqVyc/UHEvmi7gfkLzDPrjJ5PO5/AAAAAElFTkSuQmCC&quot;,&quot;img&quot;:{&quot;width&quot;:1200,&quot;height&quot;:630,&quot;src&quot;:&quot;https://storage.googleapis.com/papyrus_images/b0b98917e3c9070a1031ec7442634da072c901fad1499950b20deb1559ce9283.png&quot;}}}" format="small"><link rel="preload" as="image" href="https://storage.googleapis.com/papyrus_images/b0b98917e3c9070a1031ec7442634da072c901fad1499950b20deb1559ce9283.png"><div class="react-component embed my-5" data-drag-handle="true" data-node-view-wrapper="" style="white-space:normal"><a class="link-embed-link" href="https://human.spire.dev/" target="_blank" rel="noreferrer"><div class="link-embed"><div class="flex-1"><div><h2>Human NFT</h2><p>Claim your Human NFT - Mint your "I am human" NFT on Pylon appchain</p></div><span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link h-3 w-3 my-auto inline mr-1"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>https://human.spire.dev</span></div><img src="https://storage.googleapis.com/papyrus_images/b0b98917e3c9070a1031ec7442634da072c901fad1499950b20deb1559ce9283.png"></div></a></div></div><br><h2 id="h-unify-ethereum-chains-not-silo" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Unify Ethereum chains, not silo</strong></h2><p>To build the onchain economy, we need to create a connected and unified Ethereum.</p><p>As Ethereum scales, fragmentation has become a growing challenge. Users, liquidity, and data are increasingly siloed across layers and chains, forcing new networks to bootstrap liquidity, rebuild user bases, and duplicate infrastructure. Users are left navigating degraded UX and frequent bridging. A unified chain experience enables new applications to scale globally by delivering seamless product experiences to users.</p><p>Synchronous composability is the foundation of this unified chain experience. Rather than relying on asynchronous messaging, delayed settlement, or external bridges, synchronous composability allows applications to read and act on shared state in real time, within a single transaction.</p><p>To bring this vision to life, we’re introducing a new appchain on Celo with Self, enabling anyone to use onchain human identity while preserving user privacy.</p><p>The Human Appchain uses synchronous reads to verify users' unique humanity directly on Celo. Users maintain privacy of their identity data, attestations are enforced onchain, and access to the commemorative NFT is limited exclusively to verified humans.</p><br><h2 id="h-what-the-appchain-unlocks" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>What the appchain unlocks</strong></h2><p>The launch demonstrates how appchains can now natively verify onchain human identity without building custom identity or sybil-resistance infrastructure from scratch. This opens up a range of opportunities for new onchain applications:</p><ul><li><p>Stablecoin usage (e.g. USDT) with identity guarantees</p></li><li><p>DeFi with real-world credit score</p></li><li><p>Privacy-preserving eligibility and sanctions verification</p></li><li><p>Age-gated and compliance-ready experiences</p></li><li><p>Secure wallet recovery via verified identity</p></li><li><p>Fair airdrops and rewards with built-in sybil resistance</p></li></ul><p>Appchains have emerged as the next phase of blockchain scaling, giving teams dedicated blockspace, custom execution environments, and application-specific performance and economics. But appchains shouldn’t live in isolation. With Pylon, appchains remain sovereign at the application layer while staying composable with Ethereum L2s like Celo. This lets builders focus on product, UX, and differentiation while inheriting shared infrastructure for liquidity, identity, and security. The Human Appchain demonstrates this model by composing directly with existing identity primitives instead of rebuilding them.</p><p>Self paired with Pylon enables a verified identity single sign-on experience for app developers on their own chain. Together, they create an identity layer that appchains can tap into when they choose to build on Celo.</p><p>The app is <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/spire-labs/self-pylon-demo">open-source on GitHub</a> and demonstrates how any developer can seamlessly read from Celo in their smart contracts as if they were deployed on the same chain. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.spire.dev/pylon">See the docs</a> and start building.</p><br><h2 id="h-why-deploy-on-celo" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Why deploy on Celo</h2><p>Celo is the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.growthepie.com/fundamentals/daily-active-addresses">leading Ethereum L2 by DAUs</a>, with a community of over 700K users leveraging the network in their everyday lives. Having launched on mainnet Earth Day 2020, Celo is a battle-tested chain with an ecosystem committed to scaling blockchain through frontier tech. As early adopters of fee abstraction (stablecoins as gas payment), ZK infrastructure, and pioneers of mobile-first infra, the Celo community is primed for the next wave of innovation: synchronous composability.</p><p>Self Protocol provides privacy-preserving Proof of Humanity and identity verification through its zero-knowledge infrastructure enabling users to prove properties about themselves, such as uniqueness, age, or nationality without revealing underlying personal data. Instead of exposing identity details, users generate attestations simply confirming their eligibility that applications can verify. This ensures users retain custody of their identity while applications receive only what they need to enforce access, compliance, or eligibility.</p><p>Today, Self supports 8M+ users with support for biometric government-issued passports and ID cards across 129 and 35 countries, respectively. Self also supports onboarding via the Indian Aadhaar, used by 99% of the adult Indian population, making it one of the most widely accessible identity systems globally.</p><br><h2 id="h-whats-next" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What’s next</h2><p>The Human Appchain is the easiest way to experience how privacy-preserving Proof of Humanity works natively within an appchain.</p><p>This launch is only the first step. Verified human identity will increasingly underpin stablecoins, DeFi, consumer applications, and compliance-ready onchain experiences. Appchains combined with synchronous composability bring these capabilities to users through seamless, unified experiences.</p><p>If you’re building on Ethereum and exploring appchains, identity, or synchronous composability, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.spire.dev/contact">contact us</a>. </p>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Spire Labs)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/4510cf9ee42e8c6834caaf5240620ad989217092a15076a7f0b50dc950e5124e.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[The Rollup Cost Killer]]></title>
            <link>https://paragraph.com/@spire/the-rollup-cost-killer</link>
            <guid>9kYQPjjXcQgbC9u5Naqj</guid>
            <pubDate>Fri, 27 Jun 2025 18:35:46 GMT</pubDate>
            <description><![CDATA[tldr; We can save rollups thousands of dollars on Ethereum transactions. Get in touch today to stop wasting money!
While blob fees get the attention, the reality is that for rollup operators the execution layer gas costs are currently the bulk of the cost for running most rollups. Blob fees are such a small part of the cost to advance a rollup that EIPs are being created to keep them from dropping too low and multiple proposals have been made to modify their pric...]]></description>
            <content:encoded><![CDATA[<p>tldr; We can save rollups thousands of dollars on Ethereum transactions. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://spire.deform.cc/DABuilder/">Get in touch</a> today to stop wasting money!</p><h2 id="h-the-execution-layer-cost-crisis" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0">The Execution Layer Cost Crisis</h2><p>While blob fees get the attention, the reality is that for rollup operators the execution layer gas costs are currently the bulk of the cost for running most rollups.</p><p>Blob fees are such a small part of the cost to advance a rollup that EIPs are being created to keep them from dropping too low and multiple proposals have been made to modify their pricing in order to improve Ethereum’s economics.</p><div data-type="twitter" tweetid="1915728305438785974"> 
  <div class="twitter-embed embed">
    <div class="twitter-header">
        <div style="display:flex">
          <a target="_blank" href="https://twitter.com/weboftrees">
              <img alt="User Avatar" class="twitter-avatar" src="https://storage.googleapis.com/papyrus_images/4c5c95383d880d588c097548fc1e243c.jpg">
            </a>
            <div style="margin-left:4px;margin-right:auto;line-height:1.2;">
              <a target="_blank" href="https://twitter.com/weboftrees" class="twitter-displayname">Anders Elowsson 🌻</a>
              <p><a target="_blank" href="https://twitter.com/weboftrees" class="twitter-username">@weboftrees</a></p>
    
            </div>
            <a href="https://twitter.com/weboftrees/status/1915728305438785974" target="_blank">
              <img alt="Twitter Logo" class="twitter-logo" src="https://paragraph.com/editor/twitter/logo.png">
            </a>
          </div>
        </div>
      
    <div class="twitter-body">
      Apples of the Infinite Garden: A Children's Book on EIP-7918<br><br>Audrey the Auctioneer, Pontus the Ponderer and Therese the Tree Tender have started an apple orchard in a huge garden. The friends have a vision: feeding the world with apples. Let's follow them on their journey <img class="twitter-emoji" draggable="false" alt="🧵" src="https://abs-0.twimg.com/emoji/v2/72x72/1f9f5.png"><img class="twitter-emoji" draggable="false" alt="👇" src="https://abs-0.twimg.com/emoji/v2/72x72/1f447.png"> 
      <div class="twitter-media"><img class="twitter-image" src="https://storage.googleapis.com/papyrus_images/cb2e3924fe6c8285c14470978dc83269.jpg"></div>
      
       
    </div>
    
     <div class="twitter-footer">
          <a target="_blank" href="https://twitter.com/weboftrees/status/1915728305438785974" style="margin-right:16px; display:flex;">
            <img alt="Like Icon" class="twitter-heart" src="https://paragraph.com/editor/twitter/heart.png">
            129
          </a>
          <a target="_blank" href="https://twitter.com/weboftrees/status/1915728305438785974"><p>5:23 AM • Apr 25, 2025</p></a>
        </div>
    
  </div> 
  </div><p>This cost impacts blob submission rate and therefore the time-to-finality and time-to-withdrawal for users on L2s. The following thread shows how Scroll has 7x’ed their time-to-finality likely because blob submission costs are too high to justify posting blobs more often.</p><div data-type="twitter" tweetid="1936483204585709930"> 
  <div class="twitter-embed embed">
    <div class="twitter-header">
        <div style="display:flex">
          <a target="_blank" href="https://twitter.com/donnoh_eth">
              <img alt="User Avatar" class="twitter-avatar" src="https://storage.googleapis.com/papyrus_images/256ac2800c35c33beb7509c0ee2a9cae.jpg">
            </a>
            <div style="margin-left:4px;margin-right:auto;line-height:1.2;">
              <a target="_blank" href="https://twitter.com/donnoh_eth" class="twitter-displayname">donnoh.eth 💗</a>
              <p><a target="_blank" href="https://twitter.com/donnoh_eth" class="twitter-username">@donnoh_eth</a></p>
    
            </div>
            <a href="https://twitter.com/donnoh_eth/status/1936483204585709930" target="_blank">
              <img alt="Twitter Logo" class="twitter-logo" src="https://paragraph.com/editor/twitter/logo.png">
            </a>
          </div>
        </div>
      
    <div class="twitter-body">
      to give a concrete example, <a class="twitter-content-link" href="https://twitter.com/Scroll_ZKP" target="_blank">@Scroll_ZKP</a> recently switched from posting a proof every 30 minutes on average to 3h 30min (x7) on average, because not sustainable. slot times from 12s to 6s is an insignificant improvement in this context 
      <div class="twitter-media"><img class="twitter-image" src="https://storage.googleapis.com/papyrus_images/5314fdd2cb8ad370db96009467df0eb7.jpg"></div>
      
       
    </div>
    
     <div class="twitter-footer">
          <a target="_blank" href="https://twitter.com/donnoh_eth/status/1936483204585709930" style="margin-right:16px; display:flex;">
            <img alt="Like Icon" class="twitter-heart" src="https://paragraph.com/editor/twitter/heart.png">
            5
          </a>
          <a target="_blank" href="https://twitter.com/donnoh_eth/status/1936483204585709930"><p>11:55 AM • Jun 21, 2025</p></a>
        </div>
    
  </div> 
  </div><p><strong>Current Reality:</strong> Each rollup pays full execution costs for their individual blob submissions.</p><p><strong>The Numbers:</strong> You can see a breakdown of the costs of blob submission for Taiko in the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://dune.com/queries/5270153/8655708/">dune query below</a>.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><a href="https://dune.com/queries/5270153/8655708/" target="_blank" rel="noopener noreferrer nofollow ugc" style="cursor: pointer;"><img src="https://storage.googleapis.com/papyrus_images/1b10723ed8b73128b2730f465d92fe34.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAKCAIAAABaL8vzAAAACXBIWXMAAAsTAAALEwEAmpwYAAACtklEQVR4nJ2SX0hTURzHDwmbZ+H+3Kn3ntb1OOfVbXd/3L37d+edm7JmbHPmHU4n8w8KRkKJm1mSDSGol+ql9yTEAp+CHjJIH8SSspceI4hepKQegqTn2E6M9ecp+PLjw+93zvl9f+cc8OHd+6NPR18/fzn8eHj87ftAIiX5gpJfKscKROSe/1O4O5zLDIO52Tklk52Ymsnm8tlcXqMxQKgzGhmMLTzvMhoZjcYAQD2EOgh1KrVWpdYSrops+TsJQL3D5gS8lVeptQAAUuB5lyD4JEnmeRfGFkmSBcEnCD6MLf8Uw5gg1FEU3dTINDUyBCiKJi6jchSEu8ORSJ8kyUQYWxBiKYquCiEWY4uzS3R2iaSZIPiqPogDjrORXQixEOoQYjnOmkwNPljbAH6vH4A6UiCjaTSG2gawkr+QUQq5EYqiMbZsb+++Pni7/+rAZnfHzvQvLFyudqUoOhDsXt/YfPxka+vp82cPH5UnCPf0IsQixDKM6Q/vCLE0Y+LauPul1cWJ89ZORyTSt7Ozd3z8Y3dvP5+fXF4u3bl7T6MxIMR2dti9YkCS5IvzxYmpmenp2cmRqXIDmjGR19MbaAa1EJHnhVCnNzTrDc0NeqZO3aRSaxFiV1dK6xuba2vrSiZLLNec0AyhDoATJNrtPOAsHRDqEvHkUEpJxJN+T4BIdHv9nkAoIPs9AW9XOSMHy+wXQkMpZSilJOPp3nBfLNofi/aTlaGA7OYF06kWcgENJw2iWwSL84VEMj2eHUvGz96+eWuluMRzHQLvWCleyQ+PYmRSBs7duFYKB0McNueHR8dHxzA6LTpchblLsZ5eDpuVVHq5sCQ6XKLDdX3x6mBaAaAeoRaaxf5AELx58bJYWJIkmWFMtf+P42wVaKuwtQJl/l21yV9sbm03t7bzvNMTlvrisZ9V7sgLpQE23QAAAABJRU5ErkJggg==" nextheight="1030" nextwidth="3382" class="image-node embed"></a><figcaption htmlattributes="[object Object]" class="">Taiko exec layer blob submission costs</figcaption></figure><p>Taiko, at the time of this post, sees an average of ~$20k/week in total blob transaction costs since Pectra. i.e.&nbsp;On a weekly average rollups spend ~99.999% of their total blob submission costs on execution layer transactions alone.</p><p>Looking at the data for the week of 2025-06-09 Taiko paid $21,101.58 in total fees, with less than a cent going specifically to the cost of blobs and everything else going to execution layer costs.</p><p>This means rollups are spending tens of thousands of dollars on transaction overhead rather than data availability.</p><h2 id="h-the-blob-aggregation-revolution" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0">The Blob Aggregation Revolution</h2><p>Blob aggregation helps to solve both blob AND execution layer costs. When multiple rollups can submit blobs using the same L1 transaction the 21k min gas cost is only paid once and the cost can be split across the rollups participating in the aggregation. For Taiko that 21k gas cost is still ~$2k/week. If those transactions were paired with another rollup’s that would be ~$4k/month in savings or the ability to post blobs more often and halve the time-to-finality for the chain. If we had 10 rollups all posting together that 21k in gas would cost ~$200/week with $7,200/month in savings.</p><p>Of course, this is only a baseline savings estimate for execution costs. When blob pricing EIPs land on mainnet and/or blob saturation is reached the savings will be even greater.</p><h2 id="h-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0">Conclusion</h2><p>The execution layer cost savings from blob aggregation represent a fundamental shift in rollup economics. By eliminating redundant transaction overhead rollups can achieve significant cost reductions to improve their profitability while improving reliability and user experience at the same time.</p><p>Don't miss out! <strong>Register now</strong> through <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://spire.deform.cc/DABuilder/">our sign-up form</a> to secure your place for our mainnet launch and start saving on execution costs immediately!</p>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Spire Labs)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/d2e7e72193f526e638b1ac03a1365280.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[KZG Commitments and Blob Aggregation]]></title>
            <link>https://paragraph.com/@spire/kzg-commitments-and-blob-aggregation</link>
            <guid>0dr5MZyZlNkmZwT8ZdmV</guid>
            <pubDate>Thu, 29 May 2025 14:28:05 GMT</pubDate>
            <description><![CDATA[TL;DR:Blob aggregation does not modify the original data submitted by rollups, so their KZG commitments remain valid post-aggregation—as long as the data can be losslessly recovered.BackgroundEIP-4844 blobs have a fixed size of 128KB. Because this data is too large to pass around, a lighter commitment to the blob data is calculated and used for blob verification. KZG commitments allow validators and nodes to efficiently prove that some data (like a blob) exists and has not been altered, witho...]]></description>
            <content:encoded><![CDATA[<h3 id="h-tldr" class="text-2xl font-header">TL;DR:</h3><p>Blob aggregation does not modify the original data submitted by rollups, so their KZG commitments remain valid post-aggregation—as long as the data can be losslessly recovered.</p><h3 id="h-background" class="text-2xl font-header">Background</h3><p>EIP-4844 blobs have a fixed size of 128KB. Because this data is too large to pass around, a lighter commitment to the blob data is calculated and used for blob verification. KZG commitments allow validators and nodes to efficiently prove that some data (like a blob) exists and has not been altered, without actually transmitting or storing the full data on-chain.</p><p>But this begs a question, what happens to a blob’s KZG commitment when it is aggregated into a shared blob? In short, the answer is that nothing happens to it. Nothing happens to the blob’s data during the aggregation process that would alter it’s KZG commitment after it has been unpacked.</p><p>To understand why this is, we need to look at how data is encoded into a blob, and how KZG commitments are calculated. Blobs in EIP-4844 have a fixed length of exactly 4096 field elements, each field element being 32 bytes, thus totaling 128KB.</p><p>KZG Commitments operate on a polynomial constructed from these 4096 fixed-size field elements, not on arbitrarily sized data directly, so if a rollup’s original data is smaller than 128KB, it must first pad or encode the data to exactly 128KB before calculating the KZG Commitment. This is what libraries like alloys-rs do when encoding data into EIP-4844 blobs.</p><p>The point to keep in mind is that blob encoding and kzg commitment computation are both <strong>deterministic</strong> processes. So long as the input rollup data doesn’t change, the kzg commitment won’t change. And as we’ll see, the aggregation/deaggregation process does not mutate the original rollup data.</p><h3 id="h-example" class="text-2xl font-header">Example</h3><p><strong>Overview</strong></p><p>We’ll walk through a simple code example using the open source alloys crate, which is what reth uses internally for its eip4844 support.</p><p>In this example, we’re going to take two data strings:</p><p>let string1 = “Transaction data from Rollup 1”</p><p>let string2 = “Transaction data from Rollup 2”</p><p>we’re then going to “blobify” these strings individually, and calculate their kzg commitments. We’ll then do a very basic form of aggregation by concatenating them, blobifying the concatenated data, and then reverse that process to show that the kzg commitment stays intact.</p><p><strong>Walkthrough</strong></p><p>We start with some simulated rollup data, and convert it into bytes:</p><pre data-type="codeBlock" text="let rollup_1_data = &quot;Transaction data from rollup 1&quot;;
let rollup_2_data = &quot;Transaction data from rollup 2&quot;;
let rollup_1_data_len = rollup_1_data.len();
let rollup_2_data_len = rollup_2_data.len();

let rollup_1_data_bytes = rollup_1_data.as_bytes();
let rollup_2_data_bytes = rollup_2_data.as_bytes();
"><code>let <span class="hljs-attr">rollup_1_data</span> = <span class="hljs-string">"Transaction data from rollup 1"</span><span class="hljs-comment">;</span>
let <span class="hljs-attr">rollup_2_data</span> = <span class="hljs-string">"Transaction data from rollup 2"</span><span class="hljs-comment">;</span>
let <span class="hljs-attr">rollup_1_data_len</span> = rollup_1_data.len()<span class="hljs-comment">;</span>
let <span class="hljs-attr">rollup_2_data_len</span> = rollup_2_data.len()<span class="hljs-comment">;</span>

let <span class="hljs-attr">rollup_1_data_bytes</span> = rollup_1_data.as_bytes()<span class="hljs-comment">;</span>
let <span class="hljs-attr">rollup_2_data_bytes</span> = rollup_2_data.as_bytes()<span class="hljs-comment">;</span>
</code></pre><p>Next, we use alloy’s SimpleCoder and SidecarBuilder to encode each rollup’s data into a 128KB blob, and retrieve its KZG commitment:</p><pre data-type="codeBlock" text="let mut rollup_1_blob_builder = SidecarBuilder::<SimpleCoder>::new();
rollup_1_blob_builder.ingest(rollup_1_data_bytes);

let rollup_1_sidecar: BlobTransactionSidecar = rollup_1_blob_builder.build()?;

let rollup_1_blob = rollup_1_sidecar.blobs.get(0).ok_or(&quot;Sidecar1 has no blobs&quot;)?;
let rollup_1_commitment = rollup_1_sidecar.commitments.get(0).ok_or(&quot;Sidecar1 has no commitments&quot;)?;
"><code>let mut rollup_1_blob_builder <span class="hljs-operator">=</span> SidecarBuilder::<span class="hljs-operator">&lt;</span>SimpleCoder<span class="hljs-operator">&gt;</span>::<span class="hljs-keyword">new</span>();
rollup_1_blob_builder.ingest(rollup_1_data_bytes);

let rollup_1_sidecar: BlobTransactionSidecar <span class="hljs-operator">=</span> rollup_1_blob_builder.build()?;

let rollup_1_blob <span class="hljs-operator">=</span> rollup_1_sidecar.blobs.get(<span class="hljs-number">0</span>).ok_or(<span class="hljs-string">"Sidecar1 has no blobs"</span>)?;
let rollup_1_commitment <span class="hljs-operator">=</span> rollup_1_sidecar.commitments.get(<span class="hljs-number">0</span>).ok_or(<span class="hljs-string">"Sidecar1 has no commitments"</span>)?;
</code></pre><p>We do the same for rollup two as well. It’s worth noting these two KZG commitments, as these are what the rollups would keep track of.</p><p>Next, we “aggregate” the rollup data by concatenating the raw bytes for the original rollup data strings (not the blob-encoded versions of these strings)</p><pre data-type="codeBlock" text="let mut aggregated_data_bytes = Vec::new();
aggregated_data_bytes.extend_from_slice(rollup_1_data_bytes);
aggregated_data_bytes.extend_from_slice(rollup_2_data_bytes);
"><code>let mut aggregated_data_bytes <span class="hljs-operator">=</span> Vec::<span class="hljs-keyword">new</span>();
aggregated_data_bytes.extend_from_slice(rollup_1_data_bytes);
aggregated_data_bytes.extend_from_slice(rollup_2_data_bytes);
</code></pre><p>We then go through the process of encoding this aggregated data as a blob, and calculating its KZG commitment. Note that this “aggregated” KZG commitment is not of much use to us in this example, although it will be different that either rollup 1 or rollup 2’s individual KZG commitments.</p><p>Finally, we deaggregate the aggregated blob by stripping it of its blob encoding, and manually parsing the bytes for rollup 1 and rollup 2</p><pre data-type="codeBlock" text="    let mut coder = SimpleCoder::default();
    let decoded_data = coder.decode_all(&amp;[owned_aggregated_blob])
        .and_then(|v| v.into_iter().next())
        .ok_or_else(|| eyre::eyre!(&quot;Failed to decode or find data in aggregated blob&quot;))?;
    
    let decoded_data_str = String::from_utf8(decoded_data)?;

    println!(&quot;Decoded Data: {}&quot;, decoded_data_str);
    // prints out Decoded Data: Transaction data from rollup 1Transaction data from rollup 2

    // We know the lengths of the original data, so we can split the decoded data into the two original strings
    // In reality, aggregated blobs encode offsets and lengths into a common header format
    let rollup_1_data_after_aggregation = decoded_data_str[..rollup_1_data_len].to_string();
    let rollup_2_data_after_aggregation = decoded_data_str[rollup_1_data_len..].to_string();

    println!(&quot;Rollup 1 Data After Aggregation and Decoding: {}&quot;, rollup_1_data_after_aggregation);
    println!(&quot;Rollup 2 Data After Aggregation and Decoding: {}&quot;, rollup_2_data_after_aggregation);

"><code>    let mut coder <span class="hljs-operator">=</span> SimpleCoder::default();
    let decoded_data <span class="hljs-operator">=</span> coder.decode_all(<span class="hljs-operator">&amp;</span>[owned_aggregated_blob])
        .and_then(<span class="hljs-operator">|</span>v<span class="hljs-operator">|</span> v.into_iter().next())
        .ok_or_else(<span class="hljs-operator">|</span><span class="hljs-operator">|</span> eyre::eyre<span class="hljs-operator">!</span>(<span class="hljs-string">"Failed to decode or find data in aggregated blob"</span>))?;
    
    let decoded_data_str <span class="hljs-operator">=</span> String::from_utf8(decoded_data)?;

    println<span class="hljs-operator">!</span>(<span class="hljs-string">"Decoded Data: {}"</span>, decoded_data_str);
    <span class="hljs-comment">// prints out Decoded Data: Transaction data from rollup 1Transaction data from rollup 2</span>

    <span class="hljs-comment">// We know the lengths of the original data, so we can split the decoded data into the two original strings</span>
    <span class="hljs-comment">// In reality, aggregated blobs encode offsets and lengths into a common header format</span>
    let rollup_1_data_after_aggregation <span class="hljs-operator">=</span> decoded_data_str[..rollup_1_data_len].to_string();
    let rollup_2_data_after_aggregation <span class="hljs-operator">=</span> decoded_data_str[rollup_1_data_len..].to_string();

    println<span class="hljs-operator">!</span>(<span class="hljs-string">"Rollup 1 Data After Aggregation and Decoding: {}"</span>, rollup_1_data_after_aggregation);
    println<span class="hljs-operator">!</span>(<span class="hljs-string">"Rollup 2 Data After Aggregation and Decoding: {}"</span>, rollup_2_data_after_aggregation);

</code></pre><p>we now have the original string data that the rollups submitted. If this were transaction data, the rollup nodes could begin running it through the rest of their derivation pipeline. As a last step, we re-encode each string as a blob so we can calculate its KZG commitment, and confirm that it hasn’t changed since the rollup initially submitted it.</p><pre data-type="codeBlock" text="    // Now, let's encode the two original strings back into blobs and verify the KZG commitments
    let mut rollup_1_blob_builder = SidecarBuilder::<SimpleCoder>::new();
    rollup_1_blob_builder.ingest(rollup_1_data_after_aggregation.as_bytes());

    let rollup_1_sidecar: BlobTransactionSidecar = rollup_1_blob_builder.build()?;

    let rollup_1_blob = rollup_1_sidecar.blobs.get(0).ok_or(&quot;Sidecar1 has no blobs&quot;)?;
    let rollup_1_commitment_after_aggregation = rollup_1_sidecar.commitments.get(0).ok_or(&quot;Sidecar1 has no commitments&quot;)?;

    // println!(&quot;Rollup 1 Blob After Encoding: {}&quot;, hex::encode(rollup_1_blob));
    println!(&quot;Rollup 1 Commitment After Encoding: {}&quot;, hex::encode(rollup_1_commitment));

    let mut rollup_2_blob_builder = SidecarBuilder::<SimpleCoder>::new();
    rollup_2_blob_builder.ingest(rollup_2_data_after_aggregation.as_bytes());

    let rollup_2_sidecar: BlobTransactionSidecar = rollup_2_blob_builder.build()?;

    let rollup_2_blob = rollup_2_sidecar.blobs.get(0).ok_or(&quot;Sidecar2 has no blobs&quot;)?;
    let rollup_2_commitment_after_aggregation = rollup_2_sidecar.commitments.get(0).ok_or(&quot;Sidecar2 has no commitments&quot;)?;

    // println!(&quot;Rollup 2 Blob After Encoding: {}&quot;, hex::encode(rollup_2_blob));
    println!(&quot;Rollup 2 Commitment After Encoding: {}&quot;, hex::encode(rollup_2_commitment));

    // assert that the commitments are the same before and after aggregation
    assert_eq!(rollup_1_commitment, rollup_1_commitment_after_aggregation);
    assert_eq!(rollup_2_commitment, rollup_2_commitment_after_aggregation);
"><code>    <span class="hljs-comment">// Now, let's encode the two original strings back into blobs and verify the KZG commitments</span>
    let mut rollup_1_blob_builder <span class="hljs-operator">=</span> SidecarBuilder::<span class="hljs-operator">&lt;</span>SimpleCoder<span class="hljs-operator">&gt;</span>::<span class="hljs-keyword">new</span>();
    rollup_1_blob_builder.ingest(rollup_1_data_after_aggregation.as_bytes());

    let rollup_1_sidecar: BlobTransactionSidecar <span class="hljs-operator">=</span> rollup_1_blob_builder.build()?;

    let rollup_1_blob <span class="hljs-operator">=</span> rollup_1_sidecar.blobs.get(<span class="hljs-number">0</span>).ok_or(<span class="hljs-string">"Sidecar1 has no blobs"</span>)?;
    let rollup_1_commitment_after_aggregation <span class="hljs-operator">=</span> rollup_1_sidecar.commitments.get(<span class="hljs-number">0</span>).ok_or(<span class="hljs-string">"Sidecar1 has no commitments"</span>)?;

    <span class="hljs-comment">// println!("Rollup 1 Blob After Encoding: {}", hex::encode(rollup_1_blob));</span>
    println<span class="hljs-operator">!</span>(<span class="hljs-string">"Rollup 1 Commitment After Encoding: {}"</span>, hex::encode(rollup_1_commitment));

    let mut rollup_2_blob_builder <span class="hljs-operator">=</span> SidecarBuilder::<span class="hljs-operator">&lt;</span>SimpleCoder<span class="hljs-operator">&gt;</span>::<span class="hljs-keyword">new</span>();
    rollup_2_blob_builder.ingest(rollup_2_data_after_aggregation.as_bytes());

    let rollup_2_sidecar: BlobTransactionSidecar <span class="hljs-operator">=</span> rollup_2_blob_builder.build()?;

    let rollup_2_blob <span class="hljs-operator">=</span> rollup_2_sidecar.blobs.get(<span class="hljs-number">0</span>).ok_or(<span class="hljs-string">"Sidecar2 has no blobs"</span>)?;
    let rollup_2_commitment_after_aggregation <span class="hljs-operator">=</span> rollup_2_sidecar.commitments.get(<span class="hljs-number">0</span>).ok_or(<span class="hljs-string">"Sidecar2 has no commitments"</span>)?;

    <span class="hljs-comment">// println!("Rollup 2 Blob After Encoding: {}", hex::encode(rollup_2_blob));</span>
    println<span class="hljs-operator">!</span>(<span class="hljs-string">"Rollup 2 Commitment After Encoding: {}"</span>, hex::encode(rollup_2_commitment));

    <span class="hljs-comment">// assert that the commitments are the same before and after aggregation</span>
    assert_eq<span class="hljs-operator">!</span>(rollup_1_commitment, rollup_1_commitment_after_aggregation);
    assert_eq<span class="hljs-operator">!</span>(rollup_2_commitment, rollup_2_commitment_after_aggregation);
</code></pre><h3 id="h-full-code" class="text-2xl font-header">Full Code:</h3><div data-type="embedly" src="https://github.com/spire-labs/kzg-commitment-example" data="{&quot;provider_url&quot;:&quot;https://github.com&quot;,&quot;description&quot;:&quot;Contribute to spire-labs/kzg-commitment-example development by creating an account on GitHub.&quot;,&quot;title&quot;:&quot;GitHub - spire-labs/kzg-commitment-example&quot;,&quot;author_name&quot;:&quot;spire-labs&quot;,&quot;thumbnail_width&quot;:1200,&quot;url&quot;:&quot;https://github.com/spire-labs/kzg-commitment-example&quot;,&quot;thumbnail_url&quot;:&quot;https://storage.googleapis.com/papyrus_images/fe3219d8b14e9a43972bfd7bcc5b67b2.png&quot;,&quot;author_url&quot;:&quot;https://github.com/spire-labs&quot;,&quot;version&quot;:&quot;1.0&quot;,&quot;provider_name&quot;:&quot;GitHub&quot;,&quot;type&quot;:&quot;link&quot;,&quot;thumbnail_height&quot;:600,&quot;image&quot;:{&quot;base64&quot;:&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAQCAIAAAD4YuoOAAAACXBIWXMAAAsTAAALEwEAmpwYAAACmklEQVR4nLVUX0hTURj/kGBP4osoaUnN8KmngnyIYSRNfaiI/g3qwh6igmiQiNKD6QUJzZdeRpEPG5shDacz0rgTwaWb17mH7bbWHlaXfOnFfLiTezu7Z/fEdub1OiYtsB/n4XfO+c73O9/3OxwgRWADyqY6SBXAOK+oqnEFyOFBVbG2SzDO7wlgjEVRjMcTPB8VhOTXdJrjgqvhsCiKzlev5xc+clxQFEWMMUI5Wg0lZdkJIeMzIXj8kubUjBXcf/jo8tVrvX39Q8Msz0ctHRdtd+729g3cvG2DIgQhSQjRDu4MIeR9KA5HOgDOwrMJQki+uFgS4Ligy+2Z9s/MBuZcbk//wFOX2+P1Ts4G5p6Pjr2ZmJicfOv3B1xu9zufb2rK53A8SaVSu24VEiUS36HpCkAbwGmAcxaHk5ZVEJBl+bzlAtSYzK1tx0+Ym1tONjQ2Nx1rgRpTQ+PR2rr6af9MbV091JgAwNzaRmsaHRunAvSKiqQEhgMPTPeuw40z0D7n/ECLqMpkbV83sCzLlU1G6tCtF6egfd6zqGuXBPDBQAhVWiw3mXZ8++d2PCTo00N+phR5nNff6H8RwIbs/yCA9x+rIr7UQCg7byTGHwKXeMFv6kqVSgUBhFA4vBYOryGU0zcSQnJxaenH5iYhRJKk+QUuFovR4OVPqzzPV9Sg9xO+pF1ef0kgh5AiyzvZbPJzMhJZi0Qi6+vrO9msJEmZTGZ5OZTJfMsh9Gtra2VlRRCSeYx3stmN6EYsFlNkOYeQcSCECNEEIeXy+ujungdY0xRVlX8jRVXpw6dfo/47GrmqYj3sLy1iGSvLWIeYSyP27uLoGbH3sIx10NbJMtYRezfLdO0G9BSnBc4yXZRXHIO2TnqcZax/AArYIwg2KJ+0AAAAAElFTkSuQmCC&quot;,&quot;img&quot;:{&quot;width&quot;:1200,&quot;height&quot;:600,&quot;src&quot;:&quot;https://storage.googleapis.com/papyrus_images/fe3219d8b14e9a43972bfd7bcc5b67b2.png&quot;}}}" format="small"><link rel="preload" as="image" href="https://storage.googleapis.com/papyrus_images/fe3219d8b14e9a43972bfd7bcc5b67b2.png"><div class="react-component embed my-5" data-drag-handle="true" data-node-view-wrapper="" style="white-space:normal"><a class="link-embed-link" href="https://github.com/spire-labs/kzg-commitment-example" target="_blank" rel="noreferrer"><div class="link-embed"><div class="flex-1"><div><h2>GitHub - spire-labs/kzg-commitment-example</h2><p>Contribute to spire-labs/kzg-commitment-example development by creating an account on GitHub.</p></div><span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link h-3 w-3 my-auto inline mr-1"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>https://github.com</span></div><img src="https://storage.googleapis.com/papyrus_images/fe3219d8b14e9a43972bfd7bcc5b67b2.png"></div></a></div></div><h3 id="h-conclusion" class="text-2xl font-header">Conclusion</h3><p>We’ve seen that aggregation preserves a rollup blob’s original KZG commitment, so long as the aggregation process doesn’t irreversibly alter the rollup’s data in any way.</p><h3 id="h-final-thoughts" class="text-2xl font-header">Final Thoughts</h3><p>If your an L2 and want to save costs on Ethereum DA without code changes get started with us now <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://spire.deform.cc/DABuilder/">https://spire.deform.cc/DABuilder/</a></p>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Spire Labs)</author>
            <author>spire@newsletter.paragraph.com (Antony Denyer)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/29795a5fec40664f86405904f9d9adc5.webp" length="0" type="image/webp"/>
        </item>
        <item>
            <title><![CDATA[Fair Fees for Shared Space: Pricing Blob Aggregation with Shapley Values
]]></title>
            <link>https://paragraph.com/@spire/fair-fees-for-shared-space-pricing-blob-aggregation-with-shapley-values</link>
            <guid>MgtBmxgFMGtD3cPPAZOY</guid>
            <pubDate>Mon, 14 Apr 2025 17:54:09 GMT</pubDate>
            <description><![CDATA[Spire explores a fair pricing model for Ethereum’s blob transactions using Shapley Values. By aggregating transactions and distributing fees based on marginal contribution, the model ensures participants pay less than they would alone while still supporting fast inclusion. This approach reduces costs, improves fairness, and aligns with Ethereum’s modular, scalable future. ]]></description>
            <content:encoded><![CDATA[<p>Our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://paragraph.com/@spire/shared-blob-compression">previous post</a> discussed how shared blob aggregation optimizes Ethereum's blob space by combining DA requirements. Today, we dive deeper into a critical piece of that efficiency puzzle: how to price aggregated blob transactions fairly and effectively. </p><hr><h2 id="h-understanding-blob-aggregation" class="text-3xl font-header">Understanding Blob Aggregation</h2><p>Blob aggregation intelligently packs multiple Ethereum transactions into a compact, space-efficient unit—potentially spanning multiple blobs.</p><p>Ethereum’s blob space is limited. Competing transactions need to be packed in a way that maximizes utilization. Blob aggregation helps by grouping transactions to reduce overall gas costs, with additional savings from amortizing base costs across the group.</p><p>Think of it like a version of the “knapsack problem”—how do we fit a set of transactions into limited blob space while maximizing efficiency and minimizing cost?</p><br><hr><h2 id="h-how-blob-transactions-are-priced" class="text-3xl font-header">How Blob Transactions Are Priced</h2><p>Blob transactions consist of three fee components:</p><ul><li><p><strong>Blob Base Fee</strong></p></li><li><p><strong>Transaction Base Fee</strong></p></li><li><p><strong>Priority Fee</strong></p></li></ul><p>The first two are set by the Ethereum network. Only the <strong>Priority Fee</strong> is user-defined, making it the key mechanism for signaling urgency and inclusion preference.</p><hr><h2 id="h-the-core-pricing-dilemma-in-aggregated-blobs" class="text-3xl font-header">The Core Pricing Dilemma in Aggregated Blobs</h2><p>What happens when different transactions in an aggregated blob have varying willingness to pay? How do we fairly divide the shared cost of the blob space?</p><p>Enter <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Shapley_value"><strong>Shapley Values</strong></a> - a concept from cooperative game theory used to distribute costs (or rewards) fairly among participants based on their marginal contribution to the group.</p><hr><h2 id="h-our-pricing-approach-at-spire" class="text-3xl font-header">Our Pricing Approach at Spire</h2><p>At Spire, we are exploring ways to dynamically price blob usage and transaction costs, then calculate each transaction's marginal utilization. This results in a pricing model where:</p><ul><li><p>You always pay less than you would in isolation</p></li><li><p>Costs are distributed fairly based on declared willingness to pay and actual usage</p></li><li><p>Fast inclusion is guaranteed by setting the group’s priority fee to match the highest participant’s</p></li></ul><p>The result is a system optimized for <strong>maximum inclusion</strong> and <strong>minimal latency</strong>, without undercharging smaller contributors.</p><hr><h2 id="h-benefits-of-fair-aggregation-pricing" class="text-3xl font-header">Benefits of Fair Aggregation Pricing</h2><p>Fair and efficient blob pricing enables:</p><ul><li><p><span data-name="check_mark_button" class="emoji" data-type="emoji">✅</span> <strong>Reduced transaction costs</strong> by sharing gas across many participants</p></li><li><p><span data-name="check_mark_button" class="emoji" data-type="emoji">✅</span> <strong>Fairer pricing mechanisms</strong> using transparent, marginal-impact-based calculations</p></li><li><p><span data-name="check_mark_button" class="emoji" data-type="emoji">✅</span> <strong>Fast inclusion</strong> for lower-fee users, and cheaper fees for higher-fee ones</p></li></ul><p>As we continue to iterate, we aim to improve fairness and efficiency to support long-term scalability and economic sustainability.</p><hr><h2 id="h-example-shapley-value-cost-allocation" class="text-3xl font-header"><span data-name="bar_chart" class="emoji" data-type="emoji">📊</span> Example: Shapley Value Cost Allocation</h2><p>Let’s walk through a simplified example (excluding Blob Base Fee and Transaction Base Fee for clarity):</p><h3 id="h-transaction-a" class="text-2xl font-header">Transaction A</h3><ul><li><p>Priority Fee: 2 wei</p></li><li><p>Uses 50% of a blob</p></li><li><p>Standalone gas cost: 42,000 wei</p></li></ul><h3 id="h-transaction-b" class="text-2xl font-header">Transaction B</h3><ul><li><p>Priority Fee: 1 wei</p></li><li><p>Uses 50% of a blob</p></li><li><p>Standalone gas cost: 21,000 wei</p></li></ul><p>If included together, the total cost remains 42,000 wei, thanks to shared intrinsic gas savings.</p><p>To calculate Shapley Values, we look at all possible orderings in which transactions could be added and compute each transaction's marginal contribution to the total cost. We then average those contributions across all permutations. This ensures each participant pays an amount that reflects their impact on the collective cost.</p><p>Using Shapley Value cost sharing we allocate costs as:</p><ul><li><p><strong>Transaction A pays</strong>: 31,500 wei</p></li><li><p><strong>Transaction B pays</strong>: 10,500 wei</p></li><li><p><strong>Total</strong>: 42,000 wei</p></li></ul><p><span data-name="chart_increasing" class="emoji" data-type="emoji">📈</span> <strong>Outcome</strong>: Both users pay less than they would individually, while still benefiting from top-priority inclusion. Efficiency meets fairness.</p><hr><h2 id="h-looking-ahead" class="text-3xl font-header">Looking Ahead</h2><p>This pricing model aligns with Ethereum’s long-term vision for modular scalability, economic sustainability, and equitable resource distribution. As rollups and blobspace continue to take centre stage in Ethereum’s execution landscape, fair aggregation pricing will be critical to ensuring healthy, sustainable network growth.</p><br><p>This is just the first iteration. As the ecosystem evolves and new dynamics emerge, we’ll revisit and refine the underlying game mechanics. Our goal is to stay ahead of the curve—continuously exploring how to make blob packaging on Ethereum as fair and efficient as possible.</p>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Antony Denyer)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/12b0809c57098c6a7b2a49a678f86d6d.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[The First Based L3: A Live Demo of Synchronous Composability]]></title>
            <link>https://paragraph.com/@spire/a-live-demo-of-synchronous-composability</link>
            <guid>R8GbaiVEOlhCf3pJe9SW</guid>
            <pubDate>Mon, 07 Apr 2025 14:53:58 GMT</pubDate>
            <description><![CDATA[We’re sharing a live public demo of the first based L3 appchain — now running on testnet. You can try it here: https://frontend.l3testnet.spire.dev/ This post breaks down what it is, why it matters, and where we’re headed next.Synchronously composability is unlockedA “based L3” is an appchain that is sequenced by underlying L2 — no centralized sequencer, no additional trust assumptions. This enables something powerful: synchronous composability with L2, just like a smart contract on L2. In th...]]></description>
            <content:encoded><![CDATA[<p>We’re sharing a live public demo of the <strong>first based L3</strong> appchain — now running on testnet. You can try it here: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://frontend.l3testnet.spire.dev/">https://frontend.l3testnet.spire.dev/</a></p><p>This post breaks down what it is, why it matters, and where we’re headed next.</p><h2 id="h-synchronously-composability-is-unlocked" class="text-3xl font-header"><strong>Synchronously</strong> composability is unlocked</h2><p>A “<strong>based L3”</strong> is an appchain that is sequenced by underlying L2 — no centralized sequencer, no additional trust assumptions. This enables something powerful: <strong>synchronous composability with L2</strong>, just like a smart contract on L2.</p><p>In this demo, the based L3 appchain is <strong>synchronously reading data</strong> from its L2. This may seem simple, but the implications are significant. As an example, our demo utilizes oracle data from L2 at no cost while still gaining the benefits of running an appchain.</p><p>In the future, based L3s can natively tap into liquidity and users on L2. Furthermore, <strong>users can access L3 directly from L2 without bridging assets</strong>. The typical problem of appchains is isolation, but synchronous composability will solve this.</p><br><h2 id="h-but-isnt-running-a-chain-heavy-and-expensive" class="text-3xl font-header"><strong>But isn’t running a chain heavy and expensive?</strong></h2><p>Not for based L3s!</p><p>Compared to common L3s today, based L3s offer lightweight operations. As L2 handles sequencing, there’s <strong>no need for a centralized sequencer</strong>. This dramatically reduces DevOps overhead.</p><p>In addition, based L3s won’t even need an additional explorer. Transactions are visible and verifiable via L2 — just like a smart contract on L2.</p><p>As you can see, based appchains break the traditional trade-offs. You get the benefits of appchains (scalability, customization, sovereignty) while still maintaining composability and lightweight deployment.</p><br><h2 id="h-the-future-levels-of-synchronous-composability" class="text-3xl font-header"><strong>The future - levels of synchronous composability</strong></h2><p>With this demo, we’ve reached <strong>synchronous composability level 1 — synchronous reading from L2</strong>.</p><p>Soon we aim to reach higher levels of synchronous composability where using a based L3 feels indistinguishable from a smart contract on L2 — both for users and developers.</p><br><ul><li><p><strong>L3 reads L2</strong></p></li></ul><p>This can saves appchains millions of dollors of infrastructure costs. For example, oracle, explore, sequencer devops cost.</p><br><ul><li><p><strong>L2 reads L3</strong></p></li></ul><p>L3 can natively tap into liquidity, smart contracts, and users on L2.</p><br><ul><li><p><strong>L2 &lt;&gt; L3 &lt;&gt; L3 reads and writes</strong></p></li></ul><p>Users can interact with L3 directly from L2 without needing to bridge assets — eliminating the bridging user experience friction.</p><br><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/19cd3dcc1e0b284167967878d84583b5.png" blurdataurl="data:image/png;base64,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" nextheight="1080" nextwidth="1920" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><br><br><p>We will apply features of this technology to work between L2 and L1. This means the demo isn’t just about L3s. It previews an onchain world where millions of appchains operate in sync and are secured by a single unifying network: Ethereum.</p><p>Try out the demo of based L3. If you're interested in building appchains or based rollups, come talk to us!</p><p>Live demo: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://frontend.l3testnet.spire.dev/">https://frontend.l3testnet.spire.dev/</a></p><br><br>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Spire Labs)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/7980cf95a8693925de591da39b04883c.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[The Based Path to Decentralised Sequencing]]></title>
            <link>https://paragraph.com/@spire/the-based-path-to-decentralised-sequencing</link>
            <guid>Xo6kG7qL4w4lh9aJXuk6</guid>
            <pubDate>Wed, 26 Mar 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[One of the core promises of rollups is scalability without compromising Ethereum's neutrality and decentralisation. But many rollups today still rely on centralised sequencers—entities with privileged access to ordering transactions. While efficient, this undermines the trust-minimised ethos that makes rollups attractive in the first place. At Spire Labs, we've been exploring a new approach to this problem with Based Rollups. As part of this journey, we're releasing our Based Stack. It's a fo...]]></description>
            <content:encoded><![CDATA[<p>One of the core promises of rollups is scalability <strong>without compromising Ethereum's neutrality and decentralisation</strong>. But many rollups today still rely on <strong>centralised sequencers</strong>—entities with privileged access to ordering transactions. While efficient, this undermines the trust-minimised ethos that makes rollups attractive in the first place.</p><p>At Spire Labs, we've been exploring a new approach to this problem with <strong>Based Rollups. </strong>As part of this journey, we're releasing our Based Stack. It's a fork of the OP Stack designed for deploying "based rollups" that inherit Ethereum's decentralisation and security guarantees without compromising on scalability or developer experience.</p><p>Two big primitive we've delivered in our based-stack is Sequencer Elections. We've tackled this by focusing on two key areas</p><p><span data-name="receipt" class="emoji" data-type="emoji">🧾</span> <strong>Election Tickets</strong></p><p><span data-name="hourglass_flowing_sand" class="emoji" data-type="emoji">⏳</span> <strong>Dutch Block Auction</strong></p><p>Together, they form a <strong>market-driven, permissionless sequencing mechanism</strong> where <em>anyone</em> can win the right to produce a block on the rollup and submit it to Ethereum L1.</p><div class="relative header-and-anchor"><h2 id="h-lets-dive-in">Let's dive in!</h2></div><div class="relative header-and-anchor"><h3 id="h-the-problem-with-centralized-sequencers"><span data-name="round_pushpin" class="emoji" data-type="emoji">📍</span><strong> The Problem With Centralized Sequencers</strong></h3></div><p>Most rollups use a single operator to sequence transactions. The ones that don't usually use a permissioned set of sequencers and have some form of round-robin BFT consensus. This allows fast block times and UX improvements, but creates serious downsides:</p><ul><li><p><strong>Censorship risk</strong>: Users are stuck if the sequencer refuses to include certain transactions.</p></li><li><p><strong>MEV extraction</strong>: A centralised sequencer can reorder transactions for profit.</p></li><li><p><strong>Trust assumptions</strong>: Users must trust an off-chain actor to behave honestly.</p></li></ul><p>To fix this, we need <strong>decentralised sequencing</strong> — where many actors can compete to build and submit blocks, and no single party has control.</p><div class="relative header-and-anchor"><h3 id="h-enter-the-dutch-auction"><span data-name="brain" class="emoji" data-type="emoji">🧠</span><strong> Enter: The Dutch Auction</strong></h3></div><p>The Based Stack introduces a novel mechanism to the L2 block-building process: the Dutch Auction!</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ee0cdd3c1953e04421a8fda91f74e25b.png" blurdataurl="data:image/png;base64,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" nextheight="560" nextwidth="500" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p></p><p>This permissionless auction determines who gets the <strong>right to participate as a sequencer</strong> in future blocks. </p><p><strong>Here's how it works:</strong></p><ul><li><p>The auction begins at a high bid price with 32 sequencing slots for sale.</p></li><li><p>Each block, the price <strong>decreases</strong> at configurable decay rate.</p></li><li><p>Anyone can call the auction contract to <strong>buy up to the remaining tickets</strong>, locking in their right to build one or more future blocks at the current price they pay.</p></li><li><p>Once purchased, that holder becomes <strong>eligible to propose a block</strong>.</p></li><li><p>When the auction ends, soulbound NFTs are <strong>minted as election tickets</strong> to the participants who purchased tickets.</p></li></ul><p><strong>The auction decides <em>who</em> gets to be in sequencer pool.</strong></p><div class="relative header-and-anchor"><h3 id="h-election-tickets-the-proof-of-sequencer-rights"><span data-name="ballot_box" class="emoji" data-type="emoji">🗳</span><strong> Election Tickets: The Proof of Sequencer Rights</strong></h3></div><p>Election Tickets are <strong>tokenised rights to participate in sequencing</strong>, tightly integrated with the auction mechanism.</p><ul><li><p>The slot winners are chosen from the pool of <strong>ticket holders</strong> every epoch.</p></li><li><p>Winning election tickets are <strong>burnt.</strong></p></li><li><p>The winner <strong>should</strong> submit a block for the slot they win.</p></li><li><p>In the future, misbehaviour (like submitting an invalid block) can lead to <strong>slashing</strong> of a staked ticket.</p></li></ul><p></p><p>These tickets form the backbone of <strong>trustless sequencing</strong> in the based stack. You can prove on-chain that you earned the right to submit a block. The system can enforce rules and incentives (e.g., slashing, rewards, or rebates). They unlock <strong>game-theoretic participation</strong>, as participants strategise around ticket pricing, auction timing, and MEV opportunities.</p><p>This also opens the door to further decentralisation. DAOs could subsidise ticket purchases to promote public goods infrastructure or specific applications. We belive that a liquid, permissionless market for sequencing rights will emerge on top of Ethereum. This structure enables MEV builders and relayers to engage in a secondary market with election winners.</p><p><strong>The election process chooses <em>when</em> they can sequence. </strong></p><div class="relative header-and-anchor"><h3 id="h-how-this-enables-a-based-rollup"><span data-name="arrows_counterclockwise" class="emoji" data-type="emoji">🔄</span><strong> How This Enables a Based Rollup</strong></h3></div><p>In Ethereum's L1, miners and validators compete in an open blockspace market. The Based Stack brings this ethos to L2 with <strong>election-based sequencing</strong>.</p><p></p><p>For us, the table stakes for a <strong>based rollup</strong> is one where:</p><ul><li><p><strong>Anyone</strong> can become a sequencer through open participation.</p></li><li><p><strong>No entity controls ordering rights</strong> long-term.</p></li><li><p><strong>Consensus remains minimal</strong>, with Ethereum still securing data availability and settlement.</p></li></ul><p></p><p>The Dutch auction with election ticket model is a novel mechanism for enabling this. It's simple, modular, and aligned with Ethereum's values.</p><div class="relative header-and-anchor"><h2 id="h-try-it-out-help-build-the-future-of-l2-sequencing"><span data-name="hammer_and_wrench" class="emoji" data-type="emoji">🛠</span><strong> Try It Out — Help Build the Future of L2 Sequencing</strong></h2></div><p>The initial implementation is open source and available in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out editor-rtfLink" href="https://github.com/spire-labs/based-stack">our github repo</a>. If you’re launching a rollup, rethinking L2 decentralisation, or exploring new sequencing designs, we want to build with you.</p><p>Got ideas? Questions? Drop us an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="mailto:hello@spire.dev">email</a> or fill out this <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.google.com/forms/d/1ii4vDERJQpadOmDzCD_DpoCG9GtS8isVPUhTs17Er8k/edit">form</a> to get building! </p><p></p>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Antony Denyer)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/4b7dd10e9a81aeab49ccdfbf4473a3d4.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[L3 Based Stack - Unlocking Appchain Synchronous Composability]]></title>
            <link>https://paragraph.com/@spire/l3-based-stack</link>
            <guid>NkmTYNNNaYhd1hwuT3Pe</guid>
            <pubDate>Mon, 10 Feb 2025 20:48:15 GMT</pubDate>
            <description><![CDATA[At Spire, we're building the Based Stack — letting apps spin up their own based rollup L2s / appchains. As rollup ecosystems evolve, a new frontier is emerging — L3s built on top of existing L2s. This post explores how Spire’s approach, which combines shared settlement and coordinated sequencing, can extend beyond L2s, enabling rollups to function as synchronous execution environments. This architecture extends beyond traditional rollup sequencing models, offering faster, customizable intra-b...]]></description>
            <content:encoded><![CDATA[<p>At Spire, we're building the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.spire.dev/based-stack"><strong>Based Stack</strong></a> — letting apps spin up their own <strong>based rollup L2s / appchains.</strong></p><p>As rollup ecosystems evolve, a new frontier is emerging —<strong> L3s</strong> built on top of existing L2s. This post explores how Spire’s approach, which combines <strong>shared settlement</strong> and <strong>coordinated sequencing,</strong> can extend beyond L2s, enabling rollups to function as synchronous execution environments. This architecture extends beyond traditional rollup sequencing models, offering <strong>faster, customizable intra-block execution</strong> while remaining <strong>backward compatible</strong> with existing L2 rollups.</p><figure float="none" width="582px" data-type="figure" class="img-center" style="max-width: 582px;"><img src="https://storage.googleapis.com/papyrus_images/d179ef3a8b6a415b1ee4dd6c01e00c2a.png" blurdataurl="data:image/png;base64,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" nextheight="1100" nextwidth="1775" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><div class="relative header-and-anchor"><h2 id="h-the-challenge-islands-in-the-stream-of-fragmented-liquidity"><strong>The Challenge: Islands in the stream of fragmented liquidity</strong></h2></div><p>Current rollup architectures create <strong>isolated liquidity islands</strong>, where appchains operate independently with separate sequencers and settlement layers. This fragmentation leads to:</p><ul><li><p><strong>Capital inefficiency</strong> – Liquidity pools are confined to individual appchains, reducing capital utilisation.</p></li><li><p><strong>Delayed execution</strong> – Cross-rollup transactions require bridging or asynchronous settlement, introducing latency and reducing DeFi composability.</p></li><li><p><strong>Fragmented price discovery</strong> – Markets across different rollups lack synchronization, creating inefficiencies in pricing and execution.</p></li><li><p><strong>Cross-domain execution risk</strong> – Transactions spanning multiple appchains must be executed optimistically, increasing the likelihood of failure with the loss of atomicity.</p></li></ul><p>These inefficiencies make it challenging to build low-latency, high-frequency applications that require synchronous settlement and atomic execution across multiple chains.</p><p>Spire solves this problem by introducing <strong>shared settlement</strong> and <strong>coordinated sequencing</strong>, eliminating liquidity islands and enabling seamless intra-block composability.</p><div class="relative header-and-anchor"><h2 id="h-the-spire-solution-shared-settlement-coordinated-sequencing"><strong>The Spire Solution: Shared Settlement + Coordinated Sequencing</strong></h2></div><p>Spire extends sequencer design by introducing <strong>(1) Shared Settlement + (2) Coordinated Sequencing</strong>:</p><p></p><div class="relative header-and-anchor"><h3 id="h-1-shared-settlement-multi-appchain-execution-in-a-single-sequencer-batch"><strong>1. Shared Settlement: Multi-Appchain Execution in a Single Sequencer Batch</strong></h3></div><p>Instead of settling transactions in isolated rollup environments, Spire enables <strong>shared sequencing</strong> across L3 appchains.</p><ul><li><p>Appchains submit transaction bundles to a shared sequencer rather than operating in isolation.</p></li><li><p><strong>Batch execution enforces synchronous composability</strong>, ensuring all transactions within a batch either execute atomically or revert.</p></li><li><p><strong>Optimistic atomicity</strong> allows users to receive <strong>preconfirmations</strong> for execution before final settlement.</p></li></ul><p>This architecture <strong>preserves independent appchain logic</strong> while leveraging <strong>L2 settlement guarantees</strong>, reducing fragmentation and improving execution reliability.</p><p></p><div class="relative header-and-anchor"><h3 id="h-2-coordinated-sequencing-dynamic-transaction-ordering-for-customisable-execution"><strong>2. Coordinated Sequencing: Dynamic Transaction Ordering for Customisable Execution</strong></h3></div><p>Spire enables programmable sequencing, allowing transactions to be dynamically ordered within a batch.</p><ul><li><p><strong>Optimistic atomic execution</strong> ensures interdependent transactions execute in the same batch.</p></li><li><p><strong>Custom priority rules</strong> let appchains control ordering, execution fees, and failure handling.</p></li><li><p><strong>Sequencer marketplaces</strong> allow applications to select execution models that optimize for cost, latency, or MEV strategies.</p></li></ul><p>These mechanisms enhance intra-block composability, delivering low-latency, deterministic execution across L3s.</p><div class="relative header-and-anchor"><h2 id="h-forward-sequencing-optimistic-atomic-execution-for-preconfirmations"><strong>Forward Sequencing: Optimistic Atomic Execution for Preconfirmations</strong></h2></div><p>A key innovation in Spire is forward sequencing, which enables execution preconfirmations. L3 sidecars can commit to transaction inclusion before final L2 settlement. Users receive execution guarantees based on real-time fee estimation and state simulation. Sequencers dynamically adjust execution order to minimise contention and optimise gas fees.</p><p>This model unlocks optimistic execution guarantees that reduce execution risk while maintaining synchronous composability.</p><div class="relative header-and-anchor"><h2 id="h-the-spire-tooling-and-api-ecosystem"><strong>The Spire Tooling &amp; API Ecosystem</strong></h2></div><p>To support <strong>next-gen modular execution</strong>, Spire provides:</p><ul><li><p><strong>Extensible Sequencer Architectures</strong> – Customizable sequencing for L3 appchains.</p></li><li><p><strong>Composable EVM Execution</strong> – Full EVM compatibility for cross-appchain transactions.</p></li><li><p><strong>Preconfirmation APIs</strong> – Transaction simulation and execution guarantees.</p></li><li><p><strong>Optimistic Settlement Models</strong> – Seamless integration with L2 rollups and sidecars.</p></li></ul><div class="relative header-and-anchor"><h2 id="h-redefining-rollup-execution"><strong>Redefining Rollup Execution</strong></h2></div><p>Spire’s <strong>shared settlement + coordinated sequencing</strong> model transforms how appchains interact, offering:</p><ul><li><p><strong>Atomic execution across appchains</strong></p></li><li><p><strong>Low-latency composability with deterministic ordering</strong></p></li><li><p><strong>Preconfirmations for faster execution and reduced risk</strong></p></li><li><p><strong>A marketplace of sequencers for customizable transaction processing</strong></p></li></ul><p>We're building the next generation of modular execution infrastructure and invite <strong>app developers</strong> to explore the <strong>L3 Based Stack</strong>. If you're looking to launch an appchain, join us in shaping the future. Send a DM on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/Spire_Labs">X</a> or an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="mailto:hello@spire.dev">email</a> to get started! </p>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Spire Labs)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/1f62ad54a46fa54e2e8a99c404317d60.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[Shared Blob Compression]]></title>
            <link>https://paragraph.com/@spire/shared-blob-compression</link>
            <guid>xpvwTa9qaxIn2VnJ5zEL</guid>
            <pubDate>Tue, 24 Dec 2024 03:16:25 GMT</pubDate>
            <description><![CDATA[IntroductionAs appchain adoption grows, there will be an increasing need for chains to opt-into having their blobs aggregated and compressed with blobs from other appchains. Aggregation carries the following benefits:appchains can submit transactions to their chosen DA layer more frequently. They no longer need to wait to have enough transaction data to fill a blob before submitting, or pay the cost of submitting partially filled blobs.appchains can use blobspace more efficiently, particularl...]]></description>
            <content:encoded><![CDATA[<div class="relative header-and-anchor"><h2 id="h-introduction">Introduction</h2></div><p>As appchain adoption grows, there will be an increasing need for chains to opt-into having their blobs aggregated and compressed with blobs from other appchains. Aggregation carries the following benefits:</p><ul><li><p>appchains can submit transactions to their chosen DA layer more frequently. They no longer need to wait to have enough transaction data to fill a blob before submitting, or pay the cost of submitting partially filled blobs.</p></li><li><p>appchains can use blobspace more efficiently, particularly chains with lower tx volume.</p></li><li><p>appchains no longer have to worry about scenarios where an L1 block runs out of available blob slots, as their blobs will be aggregated with other appchains.</p></li></ul><p>In addition to aggregating blobs, this would allow appchains to specify additional parameters such as which DA layers they support, which data compression schemes they use, which L1 block they are targeting, and how they choose to update their state. In this post, we explore some possibilities for what a specification would look like.</p><div class="relative header-and-anchor"><h2 id="h-implementation">Implementation</h2></div><p>We don’t intend for this to be a single implementation that all appchains must use. The goal is to create a neutral specification to enable general access to shared blob compression and aggregation. As Spire heavily supports the growth of appchains, we may provide an implementation of this specification to appchains running on Spire.</p><div class="relative header-and-anchor"><h2 id="h-capabilities-statement">Capabilities Statement</h2></div><p>Appchains wishing to opt into this design can define a list of DA layers, compression schemes, and other fields that they support via json. This format is flexible, and the json can be converted to a binary or uri representation as needed.</p><p>For example:</p><pre data-type="codeBlock" text="{
		&quot;chain_id&quot;: &quot;123&quot;, 
    &quot;capabilities&quot;: {
        &quot;da_layers&quot;: [
            &quot;beacon&quot;, &quot;altda1&quot;, &quot;altda2&quot;
        ],
        &quot;compression_schemes&quot;: [
            &quot;gzip&quot;
        ],
        &quot;shared_state&quot;: false, // indicates whether or not the appchain will run its own nodes and derivation pipeline.
        &quot;uniform_blob&quot;: false, // indicates whether or not the appchain wants to be in its own blob or a shared blob
        &quot;target_block&quot;: 1234567, // The L1 slot in which the appchain’s blob data must be published. This might need to be specified elsewhere
        &quot;tip&quot;: 5 gwei // A way for appchains to prioritize inclusion of their blobs in times of high aggregation requests.
    }
}
"><code>{
		<span class="hljs-string">"chain_id"</span>: <span class="hljs-string">"123"</span>, 
    <span class="hljs-string">"capabilities"</span>: {
        <span class="hljs-string">"da_layers"</span>: [
            <span class="hljs-string">"beacon"</span>, <span class="hljs-string">"altda1"</span>, <span class="hljs-string">"altda2"</span>
        ],
        <span class="hljs-string">"compression_schemes"</span>: [
            <span class="hljs-string">"gzip"</span>
        ],
        <span class="hljs-string">"shared_state"</span>: <span class="hljs-literal">false</span>, <span class="hljs-comment">// indicates whether or not the appchain will run its own nodes and derivation pipeline.</span>
        <span class="hljs-string">"uniform_blob"</span>: <span class="hljs-literal">false</span>, <span class="hljs-comment">// indicates whether or not the appchain wants to be in its own blob or a shared blob</span>
        <span class="hljs-string">"target_block"</span>: <span class="hljs-number">1234567</span>, <span class="hljs-comment">// The L1 slot in which the appchain’s blob data must be published. This might need to be specified elsewhere</span>
        <span class="hljs-string">"tip"</span>: <span class="hljs-number">5</span> <span class="hljs-literal">gwei</span> <span class="hljs-comment">// A way for appchains to prioritize inclusion of their blobs in times of high aggregation requests.</span>
    }
}
</code></pre><div class="relative header-and-anchor"><h2 id="h-location-specifier">Location Specifier</h2></div><p>TBD. This is the information required to retrieve a unit of blob data. Fields may include:</p><ul><li><p>target DA</p></li><li><p>compression scheme</p></li><li><p>data length</p></li><li><p>data offset</p></li><li><p>chain_id/namespace</p></li></ul><div class="relative header-and-anchor"><h2 id="h-blob-layout">Blob Layout</h2></div><p>The layout of an aggregated blob could be a namespaced merkle tree (NMT), with chunks of individual blob data at the leaves, along with a rollup identifier as a namespace. NMTs provide some guarantees that the contents of the blobs will not have been forged.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5698d7e3adabfd922b83e79ec9b13849.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAUCAIAAABj86gYAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEqUlEQVR4nK2V/08TdxjHP8mSfflhPziTCfglRDenC8tihl/I5kYmxsGU6ZhTBzjUjaGCg8JaCAMrRSglUKUnpRZaaZGD0i9YC6yDulu7puVaSmnvrrT3hfNuGukP7l9YSh1TNBtbfPL54e6T5/K653m/P88HxEhq9esux9/l+DCGr/4TsMo8hmUdE4hG2S8Rt9qtUz509jkDYiSJumd279wNAGhvk+OhyHMD8DxPUTTDslbz+OHPigTlwgtnBKE5IlkWw7L/H0BRNBqcG5tEYJNNcV2vGTQhHj9BRL0uH3xjxNBvckwgLsTzz5I8G0BRtNONQtf1kvZrnUqd1xdYrib548lXxwSiV8EexOd1+ZyI+z8AWI4bNo+BpejVGXiex3DiadlDc8SoxQYAeOPNrYjdGSPJVQEiMTIej19T63dl5+UVFHVAffF4/GlAjKTmIzEVpN6fc+DEsWLTsHW1FTA0g+FE74DRjQbweap3wOj1BahE0E9by6C3zKLhnyyO8VE7wy78O2A2hLnRgN44Zhmb4jhuSYzpq+pBNIj5ZoLLaRhO4KGIB/FZYBvDLoQxPClG0l3PBiSMTdEO1/T2HXsyd+4x2SYf7Ti9ufkFa9el9WiH/hKDxMPREwVFmzamQx0qluMC/lBDnRgAcFUGrTgiKwF3XN7XN2xevyldodLe5XiGZmw/I1veynjhpVfrxNKHfzzEcCISjUbn6azM9wEAdT80PFiMB/yhY198BQAoO3M+Ok8/rvYTLWI5zusLXL7S196tv+P08Hxi7PQOGB1OLxrEND03nYg7Eo0u2ZQcHbptM9jtNgfDLiQHiVlndUwgK5R4AuBGZ/QWO2yyjU85jbapaX/QPPFL303L0mFOJMB9I9NOP+oJBPwhD+L71fEb6p6ZRUOoJ+Ca9JjhWx7Eh4ejj1vuEQDDiQeLi8LGZgCAqKljbcqGlI3pErkqUXVFdTA8HyNJmmYu1kvWrUuRNXV+ffzU5s1bmmqkGRnvZO344NzpitSUtOrS2q1bt2Vn7SNjzHKXEgAMJ5IAcUtHxrvvdWuHsnM++TAnF9LA27a/LW7pmI8lHEnTjEQsffHlV9QKzcnjJWvWvNbR1JWakpqdta+8tBIAUFvekLZ+/eFPC1YC+KWgKFqpNdS3qzqVurZrulaov1Opu3RVI5Grb41PshyH4cSw1jTYYxhQD8N9I2adtVehM+us+m5YfUVn6DOr5VqzzmozTDAsy9+/x9+/lwA43ej2j4+Wipr1Rlt9c2dpeWW3duhCdW1bZ1ePdujLolMKlXbEao+RFEFEG6slp4tLreZxSN5zuvhbvRoWCuqqzgprKkRV56vrqhrLy75XyJQW2Hb2aKXou0YfOgum/cHKRlmz/DqkgRul0DeCH6WQ9pxQ3HBZ3nJFffRU+SUZNGBMjAGCiLTUygRlIoPeopApK0oEN5SDYlHzxZpmsehy8uGiUAJJVS7EA0lVXa3KKTvyd4twnDh46Mj+3IOZu7IKi0t2ZO45kHeoRlh/e3xyNoTFSCqM4SUlZ/LzP9+796PCwpP7cw7k5x+pEtSYTKMc/3toLiFkaI4giEjynkgO3T8Bf6pcB+Xaa24AAAAASUVORK5CYII=" nextheight="1186" nextwidth="1852" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>An alternative approach could use a flat structure with lengths and offsets.</p><div class="relative header-and-anchor"><h2 id="h-blob-aggregator-architecture-example">Blob Aggregator Architecture Example</h2></div><p>For context, here is a brief overview of how blobs currently work in rollups like Optimism.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/efe2a7be53dccfc29e3e7a7156d1cdf9.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAKCAIAAABaL8vzAAAACXBIWXMAABYlAAAWJQFJUiTwAAAC2klEQVR4nJWSUUgacRzHfYr15PaaQQXlqB62BuZAg9OHFaiDbQ/VQzkIgx1unNfm+TAv6P4GKi2Vdne07m7j7mJcPSwNURgqA/VFjaW+qC/qi/pSvVcOdiMi2mB/fvwffr//7/v5/X7/n4KkaAIAr8+fSKbSmWwimZL29kmKPghHAsGQG8e9Pn86k5X29p0YtsMwawSRTP1IZ7LpTJYXRDeO2+2vE8mUE3ONjo1DEGQymzUaDQzb641mvdFUuHF8yWZz4zhJ0dLePsNyVutLCIIQB4qiK2r1/YVFKy+IBAD0p+1ut7v1cYuk6EAwJMN67vT23OlNJFOQwaC4dpRKJQzbOe6zwom5nkxPWyxPK9Vaq91ptTsnp2cnp2cXl5dOzDU7N79ks7XanVy+IEnS+cW5JEmVaq3eaJ6cnvGCqJnUQgZDJHJIADAwOKTT6YdH1Hr9VJ9KxbBcsVRWkBTtxvE1gvD6/BS9HQiGTGbL6Nj4s+cvVldXjUYj4kBJit7Y3JRLgyCIYTmPZz0QDJEUPTA49ODhxEE4Um80i6XylR0dHVeqtUq1poBhu2ZSOzs3n85k5VguX0hnspVqDXGgev3UzMxMsVT+nkhsbH44jEa/8Lz8slKt8YI4PKIeHRvnBbHeaMqKN0zh8awvLy87MVcgGOIFkaTo2bl5nU6POFDEgZrMliWbjWE5r8/3LRzudrs7DBMIhhiWk52aSe3wiJphuVa7I1NvAggAnBjmxLDrHSSSqWKpTABgMlsQB1oslWPx+Mq7t4fR6Hu3O53JxuLxXL7we0SD/f39u7tf/9pBLl9AHCjDcolkKhaPy8uayxcKP4/lXYzF47Lxgsiw3EE4cpVcLJVl3Vtr/wMIBEMEAHIyw3IEAPKvKO/e61OpFhatbhyXQ7wg8oIIw/Z/yN0CYFhOnql8v4JhyGCADIaJiUda7WOj0WgyW7w+v9fnJwAgAHiDOP4L8Att+kj0E6GRWwAAAABJRU5ErkJggg==" nextheight="772" nextwidth="2446" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Blobs are fetched from the consensus layer in the derivation step of each rollup using the <code>GetBlobSidecars</code> method of the L1 beacon client.</p><p>What follows is a hypothetical design of how appchains/rollups could opt in to using a blob aggregator service. After initially registering with the service by sending the above JSON data and receiving a rollup id, blob data could be sent to the aggregator:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8cd92cbd1de525b623f16fc763ac045e.png" blurdataurl="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAUCAIAAABj86gYAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEZklEQVR4nJ1VQWgiZxSeXrqnxtA9dG+bpQtZ2EDbWxc2PWxhC1loe9k2LZiSBHYXVIiBJESkCmpJAmsKTkEn6BRnwswsHQ+DoB7GwyCMs6iFQVBBZyHJohZmJjhCExdNiY8dTdqUUnkH9f//973ve9//fuTg8OiqaLba4zH+f8fodowu/Kw3FEHICUJOzEvwheezlWoNVpHxXOPZzWPC8ICYl8ydHJecm5tbca5WqjVV03EcD0cwjktyXJJlExyXDKEoSe6rml5vKEiz1S4US2JeKhRLlWoNYDpGl+ezHq+X45IkuY/j+I8ej6rpUIfb7Xn32rUvv/qaYV686fejMbxU+r1jdGG1Y3RlucyyiRHA1vaOx+vd2t4JR7BKtSbmpUq1Fo3hFM30B4Nmq61qepwgCsVSoVgShFwIRaen79jsjmgMrzeU58GgIOTGlRSEHEUzIwAM2/N4vRi2t7v7M8clKZpJpTM+fyAawztGt95QFOVVCEVZNsGyiThB2uyOqalb8999v7W9k0pnNl1uWS7DkSFpTpJejgA6RndtfcNmd1itC9EYfnZ2pmp6fzAQ85JJs95Q4gSpajqoFAzuTk/f2dre4bhkfzBg2YSYl+oNBShC80YAqqZHY3icICma8fkDUCPLJnz+QJwgT057vV4P9kCTVU1fXFqesEzenZlh2cTJaS8cwWS53DG6qqaDuwrF0gWAcATzeL2gCRRSqdYY5kUqnUmlMw8efO52e+IECdYCxhbLpNW6wPPZjtGNxnA4CxEnSJ8/gGF7I4k2Xa4Vp3NxaQlFfwGJTk57Yl7i+WwqnXn48ItNl9tkMHRqq9lq6/qx6exKtTYe9YZibj5nQNF0CEXjBLm1vQNVUDQTCPxE0cxQoje6fmwCwD2AkgGgUCz9Gif2KRrkjRNkCEV5Pgur5wDB4O6my+3xejdd7g9u3Lg5dQtBkLlHj1LpTLPVNptsAnw7P48giNW6IMvloYPJVDojy2VZLheKJVkuc1wSTHEuERCEBTEv3Z2ZsVgm35uYsNkdZhUHh0dxggT6slx+8vTZ/dnZJ0+f8XwWAAAJboyq6YViaXTRzLpUTZfl8oRlEkGQ969fX1tf57ikySCEohTNUDQTjeE2u+Pm1C2b3UHRDMcl19Y3xLykajq0rdlqi3lp5KLxESbmpfuzn604V9fWNxaXllk2YQ4AimagdZVqbZ+i2u0/fmNZk4EkvVQ1neezFM28BaAvA4ALFeVVx+j2BwOez/r8/mxWEIRcKp15Hgz+eXLyutmsNxSnczUcwVacq2Je6hhdlk0UiqXxuSsIuQs9uBSgycHhEfBYWPhhcWl5xbnq8wdkuXzcMT68fRtBkI8+/gSkp2hGEHL1hmJ6NJXORGP4lQDmhfr03j3kwucdmE5gRFku1xsK1BuOYGBQmAjB4C70b/Qe/B1A1XSP1/v48TcwpsyMMC3AM1c9TcNoXXhw/jHezhZD148vZfzv8W8A0Awz/kf2g8OjvwB4LJljWjy1lQAAAABJRU5ErkJggg==" nextheight="1240" nextwidth="1958" class="image-node embed"><figcaption htmlattributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>In this design, a rollup would:</p><ol><li><p>Send their blob data to the off-chain aggregator service, along with commitments to each blob, their rollup/chain-id, supported compression schemes, target DA layer, target L1 block, and potentially some other fields.</p></li><li><p>The aggregator service would then sort incoming blobs by size, target DA, compression scheme, etc. Implementation details can vary.</p></li><li><p>The aggregator service concatenates blobs targeting the same DA into a “super blob”, and generates and stores a NMT for allowing rollups to quickly identify their blobs within the super blob via their rollup-id.</p></li><li><p>The super blobs are sent to their respective DA layers via sidecars. L1 transactions targeting the Blob Aggregator’s inbox contract w/commitments to the super blobs are sent to the L1. Note that it may be necessary for the aggregator to obtain some sort of preconf at this stage, if rollups have specified a target L1 block.</p></li><li><p>Rollups update their state (e.g. derivation pipelines, etc) to recognize batch transactions or proofs coming from the aggregator service address. Blob data relevant to the rollup is fetched from the super blob, either by the rollup itself, or using some endpoint provided by the aggregator service</p></li><li><p>Rollups are responsible for providing a mechanism for confirming that the retrieved blob(s) match the ones they originally sent. For example, providing a commitment to a blob that can be verified with a public key. Additional confirmations may be required. For example, based rollups may need to confirm that the original L2 data in the blob was sequenced by the correct election winner for the L1 block, etc.</p></li><li><p>Rollups then use the unpacked data to update their state and advance the canonical derivation.</p></li></ol><div class="relative header-and-anchor"><h2 id="h-shared-blob-compression-and-aggregation-details">Shared Blob Compression and Aggregation Details</h2></div><div class="relative header-and-anchor"><h3 id="h-supported-compression-algorithms">Supported Compression Algorithms</h3></div><p>This specification places no restrictions on which types of compression are supported. Appchains are free to choose between file and streaming compression schemes.</p><p>We assume one compression scheme per root DA specification address.</p><div class="relative header-and-anchor"><h3 id="h-blob-concatenation">Blob Concatenation</h3></div><p>TBD. One approach could be to simply always select the largest blob that will fit in the remaining space for the current blob.</p><div class="relative header-and-anchor"><h3 id="h-efficient-blob-retrieval">Efficient Blob Retrieval</h3></div><p>Given an aggregated blob, appchains are able to efficiently verify and retrieve the sections of the aggregated blob relevant to them using namespaced merkle trees. Espresso uses a similar approach to allow individual rollups to easily derive their blocks from a shared stream of HotShot blocks [<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.espressosys.com/sequencer/releases/gibraltar-testnet-release/arbitrum-nitro-integration#mapping-hotshot-blocks-to-nitro-blocks">ref</a>]. Every appchain will have a unique appchain-id which serves as a namespace identifier.</p><div class="relative header-and-anchor"><h2 id="h-choice-of-da">Choice of DA</h2></div><p>This specification defaults to using Ethereum’s beacon layer for blob DA. However, rollups are free to choose an alternative DA layer if they need to support faster and cheaper DA not bound to the L1’s fixed block time.</p><div class="relative header-and-anchor"><h3 id="h-fee-distribution">Fee Distribution</h3></div><p>TBD. Fees could be distributed proportionally over rollups based on the percentage of a given blob that they use.</p><div class="relative header-and-anchor"><h2 id="h-extensions">Extensions</h2></div><p>This specification is designed to be extensible. A future extension could involve sending encrypted blobs to help with fair-exchange problems with preconfers.</p><div class="relative header-and-anchor"><h2 id="h-references">References</h2></div><ul><li><p>Sample implementation of blob aggregation from EthGlobal Istanbull [<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethglobal.com/showcase/blob-merger-k7m1f">ref</a>]</p></li><li><p>HackMD paper on blob sharing [<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@dapplion/blob_sharing">ref</a>]</p></li><li><p>Dankrad’s paper on shard blob header format [<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/suggested-format-for-shard-blob-header/9996">ref</a>]</p></li><li><p>References to how Espresso enables easy namespace access to rollups [<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.espressosys.com/sequencer/integrating-a-rollup/integrating-an-optimistic-rollup/using-the-espresso-sequencer#rollups-subset-of-a-block">ref</a>] [<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@EspressoSystems/the-derivation-pipeline#Namespace-Filtering">ref</a>]</p></li></ul><p></p><div class="relative header-and-anchor"><h3 id="h-follow-us"><strong>Follow us!</strong><span data-name="tokyo_tower" class="emoji" data-type="emoji">🗼</span></h3></div><p>Get the latest from Spire:</p><ul><li><p>X(Twitter):&nbsp;<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/Spire_Labs">https://x.com/Spire_Labs</a></p></li><li><p>Website:&nbsp;<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.spire.dev/">https://www.spire.dev/</a></p></li><li><p>Docs: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.spire.dev/">https://docs.spire.dev/</a></p></li></ul><p></p>]]></content:encoded>
            <author>spire@newsletter.paragraph.com (Spire Labs)</author>
            <category>l2</category>
            <category>basedrollup</category>
            <category>blob</category>
            <category>da</category>
            <category>spire</category>
            <enclosure url="https://storage.googleapis.com/papyrus_images/707510c301b0d7e3b96b67be5610350d.jpg" length="0" type="image/jpg"/>
        </item>
    </channel>
</rss>