<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[the technology]]></title><description><![CDATA[Research and development notes from init4, a research collective building next-generation Ethereum]]></description><link>https://blog.init4.technology</link><image><url>https://substackcdn.com/image/fetch/$s_!PbqP!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9134e73f-ab2d-4186-b045-bdf145d2d231_400x400.png</url><title>the technology</title><link>https://blog.init4.technology</link></image><generator>Substack</generator><lastBuildDate>Wed, 06 May 2026 09:55:19 GMT</lastBuildDate><atom:link href="https://blog.init4.technology/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[init4]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[init4@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[init4@substack.com]]></itunes:email><itunes:name><![CDATA[init4]]></itunes:name></itunes:owner><itunes:author><![CDATA[init4]]></itunes:author><googleplay:owner><![CDATA[init4@substack.com]]></googleplay:owner><googleplay:email><![CDATA[init4@substack.com]]></googleplay:email><googleplay:author><![CDATA[init4]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[(Re)Based Rollups]]></title><description><![CDATA[Extending Ethereum Fork-Choice Rules]]></description><link>https://blog.init4.technology/p/rebased-rollups</link><guid isPermaLink="false">https://blog.init4.technology/p/rebased-rollups</guid><dc:creator><![CDATA[init4]]></dc:creator><pubDate>Tue, 17 Sep 2024 16:01:01 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!LdQR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5f3eae5-a6f3-4b70-99d6-1424a3b4b06f_5000x3337.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Rollup engineering has historically focused on the state-transition function (STF). That STF drives the engineering concerns of the node and the proving system. It holds user balances and contracts, and processes user transactions. We have designed run-ahead sequencers, pre-confs, and other mechanisms to pre-commit to the output of the STF. And we continue to spend effort on Verkle tries and other complex statements about the state it produces. For a change of pace, we&#8217;d like to examine an under-explored part of the rollup: its fork-choice rule. Once understood properly, rollup fork-choice rules become more interesting and useful than the state-transition function.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LdQR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5f3eae5-a6f3-4b70-99d6-1424a3b4b06f_5000x3337.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LdQR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5f3eae5-a6f3-4b70-99d6-1424a3b4b06f_5000x3337.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LdQR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5f3eae5-a6f3-4b70-99d6-1424a3b4b06f_5000x3337.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LdQR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5f3eae5-a6f3-4b70-99d6-1424a3b4b06f_5000x3337.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LdQR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5f3eae5-a6f3-4b70-99d6-1424a3b4b06f_5000x3337.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LdQR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5f3eae5-a6f3-4b70-99d6-1424a3b4b06f_5000x3337.jpeg" width="1456" height="972" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c5f3eae5-a6f3-4b70-99d6-1424a3b4b06f_5000x3337.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:972,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1378706,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LdQR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5f3eae5-a6f3-4b70-99d6-1424a3b4b06f_5000x3337.jpeg 424w, https://substackcdn.com/image/fetch/$s_!LdQR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5f3eae5-a6f3-4b70-99d6-1424a3b4b06f_5000x3337.jpeg 848w, https://substackcdn.com/image/fetch/$s_!LdQR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5f3eae5-a6f3-4b70-99d6-1424a3b4b06f_5000x3337.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!LdQR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc5f3eae5-a6f3-4b70-99d6-1424a3b4b06f_5000x3337.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Needed something pretty for the header image. So here&#8217;s a cairn. Cairns are somewhat like rollups in that they can reorg themselves spontaeously. Photo by <a href="https://unsplash.com/@pronipro4to?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Alexandr Gerdt</a> on <a href="https://unsplash.com/photos/a-stack-of-rocks-sitting-on-top-of-a-river-Ommct6yhexo?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></figcaption></figure></div><h2>Fork-choice Rules and Reorgs</h2><p>Fork-choice rules (FCR) describe how blockchain nodes establish confidence in the history of a chain based on subjective<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a> information. The simplest and best-understood rule is the proof-of-work rule: nodes must accept the history with the most accumulated difficulty.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a> Nodes execute the fork-choice rule continuously as they learn consensus-relevant information. Each new block, attestation, or simply the passage of time may cause a node to update their subjective view of the chain tip according to some fork-choice rule.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.init4.technology/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading the technology! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GksB!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99dac356-a507-455d-aca2-4f5fa8070d35_1825x2191.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GksB!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99dac356-a507-455d-aca2-4f5fa8070d35_1825x2191.png 424w, https://substackcdn.com/image/fetch/$s_!GksB!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99dac356-a507-455d-aca2-4f5fa8070d35_1825x2191.png 848w, https://substackcdn.com/image/fetch/$s_!GksB!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99dac356-a507-455d-aca2-4f5fa8070d35_1825x2191.png 1272w, https://substackcdn.com/image/fetch/$s_!GksB!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99dac356-a507-455d-aca2-4f5fa8070d35_1825x2191.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GksB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99dac356-a507-455d-aca2-4f5fa8070d35_1825x2191.png" width="1456" height="1748" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/99dac356-a507-455d-aca2-4f5fa8070d35_1825x2191.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1748,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:176339,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GksB!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99dac356-a507-455d-aca2-4f5fa8070d35_1825x2191.png 424w, https://substackcdn.com/image/fetch/$s_!GksB!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99dac356-a507-455d-aca2-4f5fa8070d35_1825x2191.png 848w, https://substackcdn.com/image/fetch/$s_!GksB!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99dac356-a507-455d-aca2-4f5fa8070d35_1825x2191.png 1272w, https://substackcdn.com/image/fetch/$s_!GksB!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F99dac356-a507-455d-aca2-4f5fa8070d35_1825x2191.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Fork-choice rules are not objective evaluations of the chain tip. They rely on information that the node has observed, and are therefore always subjective. Nodes cannot enforce their FCRs be followed by other nodes, and at any given time, different nodes on the network may have different outcomes from the same FCR based on their individual subjective inputs. Trivially, this always occurs during block propagation. A block will have been accepted by some nodes, but not yet reached other nodes. As a result, the nodes will be on different histories, both of which are subjectively correct. As nodes observe new information, they update their view of the history according to their fork-choice rule. In a well-designed network (and in the absence of long-term partitions), nodes&#8217; subjective views should converge over time. When nodes have consistent views of a chain&#8217;s history, we say they are &#8220;in consensus&#8221; with each other. Nodes following well-designed FCRs are eventually in consensus with other nodes.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a></p><p>Ethereum has two officially-recommended fork-choice rules, one of which is also considered a fundamental protocol rule.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a> First, attesters and proposers are expected to use a modified version of the LMD-GHOST<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> rule to determine the canonical tip. Proposers should base their block on the tip chosen by the LMD-GHOST rule, and attestors should only sign attestations that confirm their subjective tip. Second, nodes are required to use the Casper FFG<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a> rule to finalize blocks. A node must not accept any history which removes a block after that block has been confirmed by their view of the Casper FFG rule. To conform to Ethereum protocol rules, nodes must follow the Casper FFG rule, but may deviate from the LMD-GHOST rule.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wOny!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1a8c36-1b5a-49bc-b92c-02a63b677947_1508x2651.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wOny!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1a8c36-1b5a-49bc-b92c-02a63b677947_1508x2651.png 424w, https://substackcdn.com/image/fetch/$s_!wOny!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1a8c36-1b5a-49bc-b92c-02a63b677947_1508x2651.png 848w, https://substackcdn.com/image/fetch/$s_!wOny!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1a8c36-1b5a-49bc-b92c-02a63b677947_1508x2651.png 1272w, https://substackcdn.com/image/fetch/$s_!wOny!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1a8c36-1b5a-49bc-b92c-02a63b677947_1508x2651.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wOny!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1a8c36-1b5a-49bc-b92c-02a63b677947_1508x2651.png" width="1456" height="2560" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9a1a8c36-1b5a-49bc-b92c-02a63b677947_1508x2651.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2560,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:195866,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wOny!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1a8c36-1b5a-49bc-b92c-02a63b677947_1508x2651.png 424w, https://substackcdn.com/image/fetch/$s_!wOny!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1a8c36-1b5a-49bc-b92c-02a63b677947_1508x2651.png 848w, https://substackcdn.com/image/fetch/$s_!wOny!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1a8c36-1b5a-49bc-b92c-02a63b677947_1508x2651.png 1272w, https://substackcdn.com/image/fetch/$s_!wOny!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9a1a8c36-1b5a-49bc-b92c-02a63b677947_1508x2651.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Fork-choice rules allow observers (like nodes) to establish a view of the chain history, and therefore of the chain state. When this view changes in a way that rejects blocks previously accepted a chain reorganization (&#8220;reorg&#8221;) occurs. Nodes must unwind the execution of the blocks which have been decanonized, and execute blocks which have been canonized. The depth of permitted reorganization falls out of the design of the FCR. Some - like uncheckpointed PoW - allow reorganization of the entire chain, while others - like Tendermint and other &#8220;single-slot finality&#8221; FCRs - do not allow reorgs at all. While LMD-GHOST allows reorgs of unlimited depth, Casper FFG does not. Casper is mandatory. It is a violation of the protocol rules for a node to revert a block once finalized by its view of the Casper FFG FCR. Therefore rule-following Ethereum nodes currently support reorgs up to that depth.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a></p><p>Fork-choice rules have a few secondary users. Light clients,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-9" href="#footnote-9" target="_self">9</a> for example, hypothetically follow an FCR without executing the state-transition function. More interesting, however, are rollups. Rollups, as users of the host chain, must follow some host FCR. Rollups, as chains, also have an FCR. Many desirable properties of a rollup derive from the relationship between host fork-choice and rollup fork-choice.</p><p>Reorgs are subjective, because FCRs are subjective. Because nodes have different clocks and views, some nodes may experience reorgs while others do not. For simplification, we say that the network experiences a reorg when a non-trivial fraction of nodes experience a reorg. This frequently removes individual blocks from the accepted history (preventing their Casper justification and eventual finalization), but very rarely removes more than 1 or 2 blocks. A reorg of depth 7 in 2022 was considered notable enough to prompt <a href="https://barnabe.substack.com/p/pos-ethereum-reorg">in-depth exploration</a>. It would take a reorg of &gt;= 32 blocks to remove the Casper-justified block. This should be considered a black swan event, and as a result justification is called &#8220;safe&#8221; by the node RPC.</p><blockquote><p><em>Authors&#8217; Note:</em></p><p><em>Throughout the remainder of this note, when we say &#8220;the host reorgs&#8221; or &#8220;the rollup reorgs&#8221; please interpret it to mean &#8220;when a significant number of host/rollup nodes accept a new history that is not a strict extension of previously accepted history after evaluating the fork-choice rule.&#8221; It is important to remember that reorgs are entirely subjective, but it&#8217;s very clunky to always use subjective language.</em></p></blockquote><h2>FCRs in Rollups</h2><p>Much debate notwithstanding, rollups are blockchains. Their blocks form a neat chain, which nodes use to calculate the current state. <strong>Rollups have fork-choice rules</strong>. This may be a somewhat controversial statement. We&#8217;re too used to modeling rollups as dependent systems. However, it is a necessary consequence of rollups having blocks that form chains. There must be a process by which a node authenticates and accepts a new block. To the extent that the host chain affects the inputs to that process,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-10" href="#footnote-10" target="_self">10</a> the rollup must resolve history conflicts arising from host reorgs. We&#8217;ll first discuss the category containing all existing rollups: Host-following FCRs. We&#8217;ll then consider a second category with no concrete examples.</p><h3>Host-following Fork-choice</h3><p>All modern rollups are host-following. <strong>For host-following rollups, all rollup reorgs are triggered by a host reorg</strong><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-11" href="#footnote-11" target="_self">11</a> (although, this doesn&#8217;t mean that host reorgs always cause rollup sequence or state changes - more on this later). Host-following rollups include Arbiturm, Optimism, Taiko, ZkSync, and many others. Existing rollups can be sorted into two general types: Based and Run-ahead.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-12" href="#footnote-12" target="_self">12</a></p><h4><strong>Based (Totally host-following)</strong></h4><p>Based rollups follow the host fork-choice perfectly. For based rollups, every host reorg triggers a re-extraction of the rollup history corresponding to the affected host blocks. The new host history may contain different transactions and orderings, so as rollup nodes observe host reorgs, they re-derive the rollup sequence from the new host history. They then execute the rollup state-transition function on the new sequence to produce the new state,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-13" href="#footnote-13" target="_self">13</a> and discard the old sequence and state transitions. In this way, each host reorg directly causes a rollup reorg.&nbsp;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!e6ER!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8afc15d-c685-462c-bd44-a2603ef32c96_2048x1952.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!e6ER!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8afc15d-c685-462c-bd44-a2603ef32c96_2048x1952.png 424w, https://substackcdn.com/image/fetch/$s_!e6ER!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8afc15d-c685-462c-bd44-a2603ef32c96_2048x1952.png 848w, https://substackcdn.com/image/fetch/$s_!e6ER!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8afc15d-c685-462c-bd44-a2603ef32c96_2048x1952.png 1272w, https://substackcdn.com/image/fetch/$s_!e6ER!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8afc15d-c685-462c-bd44-a2603ef32c96_2048x1952.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!e6ER!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8afc15d-c685-462c-bd44-a2603ef32c96_2048x1952.png" width="1456" height="1388" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b8afc15d-c685-462c-bd44-a2603ef32c96_2048x1952.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1388,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:187412,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!e6ER!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8afc15d-c685-462c-bd44-a2603ef32c96_2048x1952.png 424w, https://substackcdn.com/image/fetch/$s_!e6ER!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8afc15d-c685-462c-bd44-a2603ef32c96_2048x1952.png 848w, https://substackcdn.com/image/fetch/$s_!e6ER!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8afc15d-c685-462c-bd44-a2603ef32c96_2048x1952.png 1272w, https://substackcdn.com/image/fetch/$s_!e6ER!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb8afc15d-c685-462c-bd44-a2603ef32c96_2048x1952.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Based rollups should be considered <strong>totally host following</strong> in that there is a bijective relationship: all host reorgs cause a reorg of the rollup, and all rollup reorgs are triggered by a specific host reorg. Based rollups have the simplest relationship to their host. Other systems introduce significant complexity.</p><h4><strong>Run-ahead (Partially host-following)</strong></h4><p>Run-ahead<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-14" href="#footnote-14" target="_self">14</a> rollups muddy the fork-choice waters significantly. Run-ahead rollups - like Arbitrum and Optimism - assume that the Sequencer will not equivocate or falsify execution, and leverage this assumption to provide pre-confirmation of inclusion and pre-commitment to execution outcomes. Because the sequence is finalized before it is posted to the host chain, Ethereum reorgs often cannot cause a change to the sequence. The Sequencer&#8217;s commitment provides all necessary assurances to nodes that the sequence is immutable.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uNfq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ed4da-1bd0-4a6a-b598-37e3a06df45a_2242x1783.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uNfq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ed4da-1bd0-4a6a-b598-37e3a06df45a_2242x1783.png 424w, https://substackcdn.com/image/fetch/$s_!uNfq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ed4da-1bd0-4a6a-b598-37e3a06df45a_2242x1783.png 848w, https://substackcdn.com/image/fetch/$s_!uNfq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ed4da-1bd0-4a6a-b598-37e3a06df45a_2242x1783.png 1272w, https://substackcdn.com/image/fetch/$s_!uNfq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ed4da-1bd0-4a6a-b598-37e3a06df45a_2242x1783.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uNfq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ed4da-1bd0-4a6a-b598-37e3a06df45a_2242x1783.png" width="1456" height="1158" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1a3ed4da-1bd0-4a6a-b598-37e3a06df45a_2242x1783.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1158,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157847,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!uNfq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ed4da-1bd0-4a6a-b598-37e3a06df45a_2242x1783.png 424w, https://substackcdn.com/image/fetch/$s_!uNfq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ed4da-1bd0-4a6a-b598-37e3a06df45a_2242x1783.png 848w, https://substackcdn.com/image/fetch/$s_!uNfq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ed4da-1bd0-4a6a-b598-37e3a06df45a_2242x1783.png 1272w, https://substackcdn.com/image/fetch/$s_!uNfq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1a3ed4da-1bd0-4a6a-b598-37e3a06df45a_2242x1783.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>These run-ahead FCRs simply follow the Sequencer&#8217;s signatures, regardless of the host-chain&#8217;s behavior.&nbsp; If the new host history omits previously committed rollup sequences, the rollup must reconfirm them, however, this does not imply a rollup reorg unless the sequencer equivocates. In order to support bridge-ins, the Sequencer references a specific host block in their batch commitment. The rollup sequence and the outcome of its state transition cannot change unless the referenced host block is replaced in the post-reorg host chain. Sequencers delay these host commitments for a security margin to ensure that these reorgs are uncommon.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-15" href="#footnote-15" target="_self">15</a></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NAbY!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da489a9-ebdd-4838-9eef-3fd39942f775_2242x1783.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NAbY!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da489a9-ebdd-4838-9eef-3fd39942f775_2242x1783.png 424w, https://substackcdn.com/image/fetch/$s_!NAbY!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da489a9-ebdd-4838-9eef-3fd39942f775_2242x1783.png 848w, https://substackcdn.com/image/fetch/$s_!NAbY!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da489a9-ebdd-4838-9eef-3fd39942f775_2242x1783.png 1272w, https://substackcdn.com/image/fetch/$s_!NAbY!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da489a9-ebdd-4838-9eef-3fd39942f775_2242x1783.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NAbY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da489a9-ebdd-4838-9eef-3fd39942f775_2242x1783.png" width="1456" height="1158" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4da489a9-ebdd-4838-9eef-3fd39942f775_2242x1783.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1158,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:179398,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NAbY!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da489a9-ebdd-4838-9eef-3fd39942f775_2242x1783.png 424w, https://substackcdn.com/image/fetch/$s_!NAbY!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da489a9-ebdd-4838-9eef-3fd39942f775_2242x1783.png 848w, https://substackcdn.com/image/fetch/$s_!NAbY!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da489a9-ebdd-4838-9eef-3fd39942f775_2242x1783.png 1272w, https://substackcdn.com/image/fetch/$s_!NAbY!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4da489a9-ebdd-4838-9eef-3fd39942f775_2242x1783.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>Compared to a based rollup, the sequence of a run-ahead rollup demands significantly more independence from its host&#8217;s FCR. Run-ahead rollup fork-choice rules should be considered <strong>partially host-following </strong>because all rollup reorgs are triggered by a specific host reorg, but not all host reorgs cause a rollup reorg. Which is to say, there is an injective relationship from rollup reorgs onto host reorgs.</p><h4><strong>Brief Digression</strong></h4><p>We discuss based and run-ahead rollups because they exist. We can imagine other examples of totally and partially host-following rollup fork-choice rules that are not strictly based or run-ahead. For example, consider a rollup using a lagging sequencer. In this case the sequencer orders a set of transactions after those transactions have been committed to the host chain. First, users commit transaction data in one epoch. In the next epoch the sequencer chooses an ordering for those transactions, and all nodes execute state-transitions.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-16" href="#footnote-16" target="_self">16</a> Ordering behavior could be invalidated if the host reorgs deeply enough to change transaction data in the commit epoch, leading to a reorganization of the rollup history. Which is to say, the FCR for this rollup would be partially host-following.</p><p>While there has been minimal exploration of rollup FCRs outside of run-ahead and based, at least we can examine some deployed examples of host-following rollups. Another major class of rollup fork-choice rules has not been explored at all.</p><h3>Host-watching Fork-choice</h3><p>Host-following fork-choice rules change their output <em><strong>only</strong></em> when the host chain FCR output changes. On the other hand,<strong> for host-watching fork-choice, only </strong><em><strong>some </strong></em><strong>rollup reorgs are triggered by a host reorg.</strong>&nbsp; Host-watching fork-choice rules have conditions under which the rollup FCR&nbsp; may reorg even though the host fork-choice rule has not reorged.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-17" href="#footnote-17" target="_self">17</a> This appears counterintuitive. We&#8217;re not used to thinking about rollup history as independent of host history. However, this is a host-centric view of the rollup history.&nbsp;</p><p>While the rollup history must be derivable from the host history at any given point,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-18" href="#footnote-18" target="_self">18</a> rollups do not need to guarantee that that history becomes immutable at any point. Rollups have their own FCR. A rollup designer can choose a non-finalizing FCR, and a rollup engineer can write a node that respects such an FCR. There is no reason that rollup FCRs must be host-following. In fact the original <a href="https://ethresear.ch/t/minimal-viable-merged-consensus/5617">Merged Consensus</a> design, from which most modern rollup study descends, has a host-watching fork-choice. The design reorgs the rollup based on the state of the host in addition to the history of the host. Because it relies on contract state to enforce its FCR&#8217;s fault proof requirements, there are situations (valid fault proofs) under which the rollup may reorg in the absence of a host reorg.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!I0po!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abd16f7-39b8-40e1-a39b-76c54a6d9dbc_1912x2091.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!I0po!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abd16f7-39b8-40e1-a39b-76c54a6d9dbc_1912x2091.png 424w, https://substackcdn.com/image/fetch/$s_!I0po!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abd16f7-39b8-40e1-a39b-76c54a6d9dbc_1912x2091.png 848w, https://substackcdn.com/image/fetch/$s_!I0po!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abd16f7-39b8-40e1-a39b-76c54a6d9dbc_1912x2091.png 1272w, https://substackcdn.com/image/fetch/$s_!I0po!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abd16f7-39b8-40e1-a39b-76c54a6d9dbc_1912x2091.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!I0po!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abd16f7-39b8-40e1-a39b-76c54a6d9dbc_1912x2091.png" width="1456" height="1592" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8abd16f7-39b8-40e1-a39b-76c54a6d9dbc_1912x2091.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1592,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:194190,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!I0po!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abd16f7-39b8-40e1-a39b-76c54a6d9dbc_1912x2091.png 424w, https://substackcdn.com/image/fetch/$s_!I0po!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abd16f7-39b8-40e1-a39b-76c54a6d9dbc_1912x2091.png 848w, https://substackcdn.com/image/fetch/$s_!I0po!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abd16f7-39b8-40e1-a39b-76c54a6d9dbc_1912x2091.png 1272w, https://substackcdn.com/image/fetch/$s_!I0po!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8abd16f7-39b8-40e1-a39b-76c54a6d9dbc_1912x2091.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>&nbsp;</p><p>Rollups can leverage reorgs to achieve interesting results. For rollups, updating the FCR means selecting a different sequence. Allowing the rollup to choose a new history effectively means reaching backwards in time to change things that have already occurred. Fork-choice extensions allow the rollup to enforce retrospective rules on its own history, state, and state-transitions. These rules may be evaluated at time <em>t+1</em>, but affect the outcomes of actions that occurred at time <em>t</em> by causing a reorganization of the rollup history.</p><h4><strong>(Small) Limitations</strong></h4><p>Like any fork-choice rule, the rollup FCR must rely only on information that the node can observe. In addition, rollups must be fully derivable from the host history. This imposes an additional constraint: rollup FCRs may only read information computable from the host history or state. This ensures that new nodes may still sync the rollup.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-19" href="#footnote-19" target="_self">19</a> This seems like a serious restriction, however it allows significantly more flexibility than it appears. Anything that can be submitted to host DA or produced by a smart contract can be used by the rollup FCR. This allows oracles, zk or fault proofs of any computation, DEX prices, and NFT ownership to be included in the rollup fork choice rule <em>as long as they pass through the host history and/or state</em>.</p><p>In addition, for rollups with bridges to the host chain, the bridge may not pass messages to the host until the rollup FCR has finalized the rollup history to a high degree of confidence. The FCR controls the inputs to the STF, which in turn controls the inputs to the bridge.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-20" href="#footnote-20" target="_self">20</a> As a result, if the FCR reorganizes the chain history, the bridge may have passed messages that are no longer part of the rollup history. That would be bad. The bridge from rollup to host must choose a subjective FCR and wait for it to be satisfied. This is the same constraint discussed with respect to light client bridges earlier, as ZK-proof and fault-proof bridges are simply a reified light client bridge.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-21" href="#footnote-21" target="_self">21</a></p><h4><strong>Examples</strong></h4><p>Reorganization of rollup history can be used to alter outcomes without altering transaction inclusion. Because the FCR defines the rollup&#8217;s history, it is allowed to edit it in any deterministic fashion based on any available information. It can insert arbitrary state transitions, transactions, state changes, hard forks, etc into the rollup&#8217;s history, even after many blocks have elapsed. The node must then evaluate the new history.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-22" href="#footnote-22" target="_self">22</a> The new history does not necessarily have to have any relationship to the old one, as long as it can be deterministically derived from host information. This shines in the presence of enshrined applications.</p><p>A simple and obviously useful example would be allowing a permissioned party to retroactively veto specific transactions on the rollup. It would be simple to set up as a specific event emitted by some host contract containing the transaction ID of the transaction to be removed. Upon observing such an event, a rollup node&#8217;s FCR would change the rollup&#8217;s tip to a new block whose history does not include the specified transaction. The nodes would unwind their local history to just before the transaction&#8217;s inclusion, and then re-execute all transactions <em>except</em> the specified transaction. This would allow an oracle to effectively &#8220;roll-back&#8221; hack transactions or other chain issues without a hard fork.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-23" href="#footnote-23" target="_self">23</a></p><p>Retroactive history changes seem broadly applicable.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-24" href="#footnote-24" target="_self">24</a> Application-specific rollups, or a general rollup willing to enshrine specific applications, could differentiate from applications hosted on general-purpose rollups by enshrining application semantics in the fork-choice rule. This would allow them to run application logic that extends across many transactions or blocks in ways that cannot be achieved by smart contracts alone.</p><h2>Followup work</h2><h4><strong>Optimization: Delayed State Commitment</strong></h4><p>Rollups whose FCR allows for retroactive history changes may want to delay committing to their state until the FCR guarantees finality as is done in other ecosystems.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-25" href="#footnote-25" target="_self">25</a> Rather than calculating a state root for sequences which may be reverted, they could instead delay calculation of that root until the protocol rules out reorgs. This would save a significant amount of calculation on each reorg,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-26" href="#footnote-26" target="_self">26</a> allowing deeper reorgs with the same computational resources. However, delayed commitment would marginally delay fault- or zk-proof based bridges. Given the complex trade-offs and that the chief benefit here is optimization, it seems like significant more examination would be warranted.</p><h4><strong>Multi-host-following/watching Rollups</strong></h4><p>A rollup has its own fork-choice rule, which it can extend in arbitrary ways. Why not introduce the fork-choice rule of a third chain? This would allow the rollup privileged communication with that chain. This has been <a href="https://www.youtube.com/watch?v=OTNjdw_XmDk">loosely explored before</a> and at first appears to create serious synchrony issues. Nodes following independent chains may have completely different views of the FCR outcome for each chain, and those views may diverge forever. However, we can use the same trick as applications to get access to information outside the host. We can simply pass information through the host.&nbsp;</p><p>Rather than watch the third chain directly, we can introduce an evaluation of the third chain&#8217;s FCR into the host chain&#8217;s state or history via a smart contract. The rollup FCR can read the result of this smart contract execution. In this way, the rollup&#8217;s FCR has access to any bridge which the host chain has access to. While this seems to solve the problem, it does introduce some amount of time lag. The delay to communicate to the rollup from the third chain is increased by the finalization period of the host bridge&#8217;s FCR for the third-chain.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-27" href="#footnote-27" target="_self">27</a> This feels bad. There may be ways to improve this without integrating the third chain&#8217;s FCR into the host FCR. It may be possible to use <a href="https://prestwich.substack.com/p/contingency">contingent states</a> or some other local-verification solution to speed this up and prevent the wait. More research is needed.</p><h2>Conclusion</h2><p>Rollups are real blockchains. They have their own nodes, fork-choice, and state. Rollups can reach backwards in time and edit their own history and state. By carefully choosing their fork-choice rules rollups can achieve fast communication with the host and allow their applications to modify the history of the chain in useful ways. There are clear use cases for FCR-enshrined applications for hack-reversion, censorship, and fair execution guarantees. Rollup FCR research has been chilled by the over-complex design of run-ahead sequencing and the over-simplistic design of based sequencing. Rollups using run-ahead or based sequencing are giving up a significant edge over competitors.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.init4.technology/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.init4.technology/subscribe?"><span>Subscribe now</span></a></p><p></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>Read &#8220;observable&#8221;.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>This is often incorrectly called the &#8220;longest chain&#8221; rule. <a href="https://bitcoin.org/bitcoin.pdf">Even Satoshi made this mistake</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>With the usual hand-waving about weak subjectivity and limitations on network partitions.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>In-depth explanation of these rules is outside the scope of this note. People looking to learn more should consult <a href="https://eth2book.info/capella/part3/forkchoice/">The Book</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>&#8220;Latest-Message-Driven Greedy Heaviest-Observed Subtree&#8221;, a modified version of GHOST. Ethereum <a href="https://github.com/ethereum/consensus-specs/pull/2845">sometimes modifies</a> its LMD-GHOST implementation in response to <a href="https://ethresear.ch/t/balancing-attack-lmd-edition/11853">observed defects</a>.&nbsp;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>&#8220;Friendly Finality Gadget&#8221;. It&#8217;s a joke about Casper the Friendly Ghost.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>There&#8217;s significant nuance here. We do not recommend nodes begin using custom FCRs, and doing so might be considered &#8220;unaligned&#8221;.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p>Casper FFG also includes the concept of a &#8220;justified&#8221; block, which is an output of the Casper FFG FCR that is used as an input to the recommended LMD-GHOST FCR. Assuming nodes use the justified block as input to the LMD-GHOST process and honestly attest and propose based on the LMD-GHOST output, the justified block will eventually be finalized.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-9" href="#footnote-anchor-9" class="footnote-number" contenteditable="false" target="_self">9</a><div class="footnote-content"><p>And bridges as a special class of light client. A bridge must choose an FCR and wait for safety according to that FCR before allowing any messages sent by the tracked chain to be received by the target chain. The selection of this FCR is critical. The bridge&#8217;s FCR must achieve a high level of confidence that the tracked chain&#8217;s FCR does not allow rejection of blocks that the bridge&#8217;s FCR has accepted. This would result in reversion of messages from the tracked chain <em>after</em> they had been delivered to the target chain. That&#8217;s bad.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-10" href="#footnote-anchor-10" class="footnote-number" contenteditable="false" target="_self">10</a><div class="footnote-content"><p>This is a bit of a rhetorical device. A rollup must be completely derivable from its host in retrospect, i.e. the host perfectly determines the inputs to the FCR for any newly syncing node, although not necessarily for nodes that are actively following the tip. In other words the host chain&#8217;s effect on the inputs to the rollup block-acceptance process is <strong>total</strong> <em>for newly syncing nodes</em>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-11" href="#footnote-anchor-11" class="footnote-number" contenteditable="false" target="_self">11</a><div class="footnote-content"><p>This is equivalent to saying that a change in the rollup fork-choice rule omits previously-committed sequences only when a change in the host chain fork-choice rule omits previously-committed blocks. This is a subtle but important definition and is difficult to state more simply. For host-following rollups, appending a host block without reverting one never results in the rollup reverting some sequence.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-12" href="#footnote-anchor-12" class="footnote-number" contenteditable="false" target="_self">12</a><div class="footnote-content"><p>The design space allows for more interesting types of host-following rollup. One can imagine permissioned based rollups, multi-sequencer run-ahead systems, etc etc.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-13" href="#footnote-anchor-13" class="footnote-number" contenteditable="false" target="_self">13</a><div class="footnote-content"><p>There&#8217;s an interesting bit of nuance here, since based rollups strive to be derivable entirely from their own sequence, i.e. to have no data dependency on the host state in the blocks that contain the sequence. This is achievable for environmental attributes like the block timestamp, but not achievable while still allowing bridging into the rollup. Bridge-ins to the rollup are contained in the host state, and may change during reorgs. As a result, the rollup must re-evaluate its state-transition based on host state in reorgs, or eschew bridge-ins, which seems bad.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-14" href="#footnote-anchor-14" class="footnote-number" contenteditable="false" target="_self">14</a><div class="footnote-content"><p>As opposed to a &#8220;based&#8221; sequencer model. In most modern rollups the sequencer &#8220;runs ahead&#8221; of Ethereum as it provides inclusion and execution attestations for a transaction before the transaction has been committed to Ethereum. In this model the Sequencer has total control over the sequence, and the outcome of the transaction must be independent of Ethereum reorgs.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-15" href="#footnote-anchor-15" class="footnote-number" contenteditable="false" target="_self">15</a><div class="footnote-content"><p>For example, <a href="https://docs.arbitrum.io/build-decentralized-apps/token-bridging/token-bridge-ether#depositing-ether">Arbitrum&#8217;s sequencer references justified blocks</a>, implying a delay of about 13 minutes, while Optimism&#8217;s sequencer wait&#8217;s <a href="https://docs.optimism.io/builders/app-developers/bridging/messaging#for-l1-to-l2-transactions">1-3 minutes</a>. Both choose to delay forced inclusion transactions significantly longer than the expected finalization time of Ethereum. Although Casper FFG allows finalization to be delayed indefinitely, and reorgs can hypothetically reach any depth, this is vanishingly unlikely to occur in practice and can be discounted by users.&nbsp;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-16" href="#footnote-anchor-16" class="footnote-number" contenteditable="false" target="_self">16</a><div class="footnote-content"><p>The rollup could be running each execution epoch simultaneously with the next commitment epoch rather than alternating between them.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-17" href="#footnote-anchor-17" class="footnote-number" contenteditable="false" target="_self">17</a><div class="footnote-content"><p>This is a subtle but important definition and is difficult to state more simply. It is equivalent to saying that the rollup may omit previously-committed data even when the host has not omitted previously-committed blocks. For host-watching rollups, appending a host block may result in the rollup reverting some sequence.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-18" href="#footnote-anchor-18" class="footnote-number" contenteditable="false" target="_self">18</a><div class="footnote-content"><p>Or at least eventually-derivable in the case of run-ahead FCRs</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-19" href="#footnote-anchor-19" class="footnote-number" contenteditable="false" target="_self">19</a><div class="footnote-content"><p>&nbsp;If a rollup FCR includes information that is not derived from the host, it is not a rollup.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-20" href="#footnote-anchor-20" class="footnote-number" contenteditable="false" target="_self">20</a><div class="footnote-content"><p>There is a common misconception about fault proofs, that the fault proof &#8220;reorgs&#8221; the rollup. In reality, the rollup FCR is executed long before the fault proof, and the fault proof cannot be constructed before the FCR is executed (and therefore can never be an element of the FCR as that would create a cyclic data dependency). In other words, the ordering is an output of the FCR, and an input to the fault proof. As a result, the fault proof cannot ever be an input to the FCR.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-21" href="#footnote-anchor-21" class="footnote-number" contenteditable="false" target="_self">21</a><div class="footnote-content"><p>They are interesting as a special class of light client bridge that evaluates both FCR and STF outputs. This is distinct from almost all other light client bridges, which validate only the FCR and only in a limited way. Rollup bridges may achieve this because the history and state are deterministically calculated from information committed to the host. Host-watching FCRs with arbitrary behavior do not prevent proof-based bridges, however they do increase the complexity.&nbsp;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-22" href="#footnote-anchor-22" class="footnote-number" contenteditable="false" target="_self">22</a><div class="footnote-content"><p>This imposes practical constraints. Nodes must re-execute blocks to derive the new state. So reorging to a depth of&nbsp; 500 blocks requires processing 500 blocks again.&nbsp;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-23" href="#footnote-anchor-23" class="footnote-number" contenteditable="false" target="_self">23</a><div class="footnote-content"><p>An extension of this could couple the oracle-driven FCR update with an irregular state transition that preserves account nonces, effectively invalidating all transactions that occurred during the reverted period. This would prevent knock-on effects of the hack, by ensuring that all transactions ma&nbsp;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-24" href="#footnote-anchor-24" class="footnote-number" contenteditable="false" target="_self">24</a><div class="footnote-content"><p>Imagine a rollup whose fork-choice rule observes the MakerDAO oracle and retroactively changes the outcomes of trades that deviate too far from that price. And consider an AMM whose LPs can retroactively cause themselves to have left or joined the pool at earlier points in history. Are these good ideas? Maybe not. But they are possible, fairly easily achievable and indicative of how much power the fork-choice rule wields.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-25" href="#footnote-anchor-25" class="footnote-number" contenteditable="false" target="_self">25</a><div class="footnote-content"><p>Tendermint-based chains have a 1 block delay in state calculation and commitment. It has <a href="https://github.com/tendermint/tendermint/issues/7898#issuecomment-721407590">complex ramifications</a>.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-26" href="#footnote-anchor-26" class="footnote-number" contenteditable="false" target="_self">26</a><div class="footnote-content"><p>Anecdotally, state-trie calculation takes up &gt;50% of block execution time.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-27" href="#footnote-anchor-27" class="footnote-number" contenteditable="false" target="_self">27</a><div class="footnote-content"><p>This is a complicated sentence. The host bridge observes the third chain via some FCR implemented in the smart contract. This FCR has some finalization delay before reading from it is safe. Reading unsafe data may result in receiving fraudulent messages. As a result, the rollup needs to wait for the host contract&#8217;s enshrined FCR&#8217;s view of the chain to reach acceptable finality.</p><p></p></div></div>]]></content:encoded></item><item><title><![CDATA[The Hand-off Problem]]></title><description><![CDATA[Practical Limitations on Forced Inclusion Mechanisms for Censorship Resistance]]></description><link>https://blog.init4.technology/p/the-hand-off-problem</link><guid isPermaLink="false">https://blog.init4.technology/p/the-hand-off-problem</guid><dc:creator><![CDATA[init4]]></dc:creator><pubDate>Tue, 03 Sep 2024 18:00:48 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!angR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0c98cbf-8b17-47e2-b682-cc05edd9cee6_5184x3888.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em><strong>Authors&#8217; Note</strong>:</em> <em><a href="https://twitter.com/init4tech">init4</a> is a research collective working on next-generation Ethereum tools. This is a research note, not a disclosure document. While we will discuss nuances and gaps in the security models of deployed and proposed systems, it would be hyperbolic to describe these as &#8220;vulnerabilities&#8221; or as &#8220;previously unknown&#8221;.</em></p><p>Censorship resistance remains a core value of cryptocurrencies in general, and Ethereum <a href="https://blog.ethereum.org/2015/06/06/the-problem-of-censorship">in particular</a>. We believe that the benefits of transacting on-chain should be available to anyone, and that the rules of the chain should apply to all users and uses equally. Values drive this space forward. Engineering is the process of testing our values against reality to find where and how they break.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://blog.init4.technology/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">subscribe? :)</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!angR!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0c98cbf-8b17-47e2-b682-cc05edd9cee6_5184x3888.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!angR!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0c98cbf-8b17-47e2-b682-cc05edd9cee6_5184x3888.jpeg 424w, https://substackcdn.com/image/fetch/$s_!angR!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0c98cbf-8b17-47e2-b682-cc05edd9cee6_5184x3888.jpeg 848w, https://substackcdn.com/image/fetch/$s_!angR!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0c98cbf-8b17-47e2-b682-cc05edd9cee6_5184x3888.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!angR!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0c98cbf-8b17-47e2-b682-cc05edd9cee6_5184x3888.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!angR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0c98cbf-8b17-47e2-b682-cc05edd9cee6_5184x3888.jpeg" width="1456" height="1092" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a0c98cbf-8b17-47e2-b682-cc05edd9cee6_5184x3888.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1092,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:464473,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!angR!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0c98cbf-8b17-47e2-b682-cc05edd9cee6_5184x3888.jpeg 424w, https://substackcdn.com/image/fetch/$s_!angR!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0c98cbf-8b17-47e2-b682-cc05edd9cee6_5184x3888.jpeg 848w, https://substackcdn.com/image/fetch/$s_!angR!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0c98cbf-8b17-47e2-b682-cc05edd9cee6_5184x3888.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!angR!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa0c98cbf-8b17-47e2-b682-cc05edd9cee6_5184x3888.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Dominos go in a sequence too :) Photo by <a href="https://unsplash.com/@pastorthomasbwilson?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Tom Wilson</a> on <a href="https://unsplash.com/photos/silver-and-white-bracelet-on-white-surface-OFSl1o6gt6U?utm_content=creditCopyText&amp;utm_medium=referral&amp;utm_source=unsplash">Unsplash</a></figcaption></figure></div><p><strong>Defining Censorship</strong></p><p>We tend to model censorship as intentionally preventing transactions from appearing in the canonical ordering (i.e. transaction <em>exclusion</em>). We consider orders to be fair or neutral when they depend entirely on the economic outcome for the ordering system, and unfair or censored when they depend on other information. E.g. when creating a block, it is acceptable to refuse to include a low-fee transaction, but unacceptable to refuse to include a transaction because it was sent by a specific person. Therefore, we<strong> </strong>say <strong>a transaction is </strong><em><strong>censored</strong></em><strong> if its inclusion depends on non-economic information.</strong> If the transaction creates more observable profit for the ordering system than any included transaction, but is not itself included, it is considered to be <strong>censored</strong>.<strong> </strong>This definition motivates work on forced inclusion mechanisms for censorship resistance. If a user can force the inclusion of their transaction, then it cannot be censored under this definition.</p><p><strong>Forced Inclusion Mechanisms&nbsp;</strong></p><blockquote><p>A core security goal of OP Stack chains is that the Sequencer should not be able to prevent users from submitting transactions to the L2 chain.&nbsp;</p><p>- <a href="https://docs.optimism.io/stack/protocol/outages#bypassing-the-sequencer">Optimism</a></p></blockquote><p>Modern rollups tend to have centralized sequencing. This means that censorship by the sequencer is trivial, as they can simply choose not to include any given user transaction. To mitigate this, several rollups - including <a href="https://docs.optimism.io/stack/protocol/outages#bypassing-the-sequencer">Optimism</a> and <a href="https://docs.arbitrum.io/how-arbitrum-works/sequencer#the-core-inbox">Arbitrum</a> - have forced inclusion mechanisms. These mechanisms allow a user to ensure that their transaction will be executed by the rollup after some time delay, regardless of the sequencer&#8217;s behavior. Inclusion is forced via a contract deployed on L1. Forced inclusion transactions therefore (theoretically) have the same resistance to censorship as other Ethereum transactions.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xmKn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7c735f-13b6-47ee-b3e3-f6eb8aeaacea_3052x1310.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xmKn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7c735f-13b6-47ee-b3e3-f6eb8aeaacea_3052x1310.png 424w, https://substackcdn.com/image/fetch/$s_!xmKn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7c735f-13b6-47ee-b3e3-f6eb8aeaacea_3052x1310.png 848w, https://substackcdn.com/image/fetch/$s_!xmKn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7c735f-13b6-47ee-b3e3-f6eb8aeaacea_3052x1310.png 1272w, https://substackcdn.com/image/fetch/$s_!xmKn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7c735f-13b6-47ee-b3e3-f6eb8aeaacea_3052x1310.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xmKn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7c735f-13b6-47ee-b3e3-f6eb8aeaacea_3052x1310.png" width="1456" height="625" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb7c735f-13b6-47ee-b3e3-f6eb8aeaacea_3052x1310.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:625,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:121698,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!xmKn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7c735f-13b6-47ee-b3e3-f6eb8aeaacea_3052x1310.png 424w, https://substackcdn.com/image/fetch/$s_!xmKn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7c735f-13b6-47ee-b3e3-f6eb8aeaacea_3052x1310.png 848w, https://substackcdn.com/image/fetch/$s_!xmKn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7c735f-13b6-47ee-b3e3-f6eb8aeaacea_3052x1310.png 1272w, https://substackcdn.com/image/fetch/$s_!xmKn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb7c735f-13b6-47ee-b3e3-f6eb8aeaacea_3052x1310.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Forced inclusion specifies sub-range that must be preserved in any valid ordering.</figcaption></figure></div><p>A forced inclusion mechanism has also been proposed for Ethereum via <a href="https://eips.ethereum.org/EIPS/eip-7547">EIP-7547</a>. Inclusion lists would allow block proposals to partially specify the contents of the next block. Under the assumption that block proposers have fewer incentives to censor than block builders, it would provide an effective mitigation to censorship.</p><p>Generally speaking, forced inclusion mechanisms create new constraints on valid orderings. They make broad classes of orderings invalid according to protocol rules<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-1" href="#footnote-1" target="_self">1</a>. Forced inclusion should be thought of as allowing the user to specify a subset of the future ordering. All valid orderings must expand upon the forced subset.&nbsp;</p><p><strong>Expanding Our Model of Censorship</strong></p><p>Unfortunately, transaction confirmation is the means, not the end. Our model of censorship is incomplete!</p><p>Censorship must be defined in terms of goals. Users want to send tokens, buy NFTs, borrow funds, etc etc. The transaction&#8217;s confirmation is incidental to that goal<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-2" href="#footnote-2" target="_self">2</a>. Censors, similarly, have specific goals. That goal may be to prevent some hack transaction from succeeding, to comply with some law, or to interfere with a competitor&#8217;s business. Respecting the intent of both parties, we need to redefine censorship.</p><p>With this in mind, we should expand our definition of censorship to say: <strong>a transaction is </strong><em><strong>censored</strong></em><strong> if a third party can prevent it from achieving its goal.</strong> Which is to say, the censor does not need to prevent the transaction from confirming; they only need to make smart contract execution revert. Making an EVM transaction revert is censorship of that transaction, despite that transaction being part of the canonical chain. Threat models that are blind to the contents of a transaction do not accurately model censorship, and therefore cannot effectively protect users from it.&nbsp;&nbsp;</p><p>Semi-formally, we would say that for any given interaction with the chain, there is some scoring predicate <em>f</em> that evaluates the resulting ordering, and produces 0 (goal failed) or 1 (goal achieved). In this model, the censor&#8217;s scoring function is simply the negation: <em>f&#8217; = !f</em>. The censor achieves their goal when the user does not.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-3" href="#footnote-3" target="_self">3</a>&nbsp;</p><p>While the user&#8217;s goal may be hidden, the transaction itself almost always contains enough information to infer it. Uniswap trades have obvious goals. In addition, because blockchains are deterministic, the censor can perfectly predict which orderings will satisfy the censor&#8217;s predicate. As a result, users cannot rely on hidden information to protect them from censorship in the EVM model. Transaction details must be public, which means that information about the user&#8217;s goal is public.</p><p>For simplicity, let&#8217;s assume that we&#8217;re working in the standard run-ahead sequencer model<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-4" href="#footnote-4" target="_self">4</a>. We will deal with the forced inclusion under sequencer rotation later. In this model, the sequencer has total control over the sequence, and can perfectly simulate any outcome. Which is to say, they are free to choose from the set of all possible orderings. Our semi-formal question about censorship then becomes &#8220;does there exist some valid ordering over which <em>f</em> evaluates to 0&#8221;? If such an ordering exists, then the sequencer can select it.</p><p>From there, we can expand our model to account for forced inclusion. &#8220;Does there exist some valid ordering, which includes the user&#8217;s sub-ordering, for which f evaluates to 0?&#8221; If such an ordering exists, the sequencer can select it. Forced inclusion does not prevent the sequencer from exercising control over the ordering, it only constrains their behavior. Unfortunately, forced inclusion has fundamental issues that prevent it from being an effective censorship resistance mechanism for many transactions.</p><p><strong>The Hand-off Problem</strong></p><p>Forced inclusion mechanisms mean ordering happens in one of two modes: unforced or forced. There is a defined point at which it transitions from unforced to forced (and vice versa). That point is the hand-off. The hand-off poses a thorny issue for the design of forced inclusion mechanisms.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LWMP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f3bee4-0a8d-4c40-9c8d-0a145be64d87_3216x1243.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LWMP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f3bee4-0a8d-4c40-9c8d-0a145be64d87_3216x1243.png 424w, https://substackcdn.com/image/fetch/$s_!LWMP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f3bee4-0a8d-4c40-9c8d-0a145be64d87_3216x1243.png 848w, https://substackcdn.com/image/fetch/$s_!LWMP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f3bee4-0a8d-4c40-9c8d-0a145be64d87_3216x1243.png 1272w, https://substackcdn.com/image/fetch/$s_!LWMP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f3bee4-0a8d-4c40-9c8d-0a145be64d87_3216x1243.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LWMP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f3bee4-0a8d-4c40-9c8d-0a145be64d87_3216x1243.png" width="1456" height="563" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/35f3bee4-0a8d-4c40-9c8d-0a145be64d87_3216x1243.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:563,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:127576,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LWMP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f3bee4-0a8d-4c40-9c8d-0a145be64d87_3216x1243.png 424w, https://substackcdn.com/image/fetch/$s_!LWMP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f3bee4-0a8d-4c40-9c8d-0a145be64d87_3216x1243.png 848w, https://substackcdn.com/image/fetch/$s_!LWMP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f3bee4-0a8d-4c40-9c8d-0a145be64d87_3216x1243.png 1272w, https://substackcdn.com/image/fetch/$s_!LWMP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F35f3bee4-0a8d-4c40-9c8d-0a145be64d87_3216x1243.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">There must be a hand-off from unforced to forced inclusion.</figcaption></figure></div><p>The forced transaction executes on the state at the hand-off. So once again, state contention<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-5" href="#footnote-5" target="_self">5</a> rears its ugly head. When the hand-off occurs within a batch of transactions (like a block), the creator of the batch can exercise control over the state at the hand-off. If the forced inclusion transaction reads any public state, then the creator of the batch can rewrite that state before and after the forced transaction execution. Contention is sufficient for censorship.</p><p>Because the batch creator can exercise control over the state at the hand-off, then it can affect the outcome of the forced transaction. If it can affect the outcome, it can potentially affect the result of the scoring predicate. For example, consider a simple AMM interaction. The user sets a minimum acceptable price, however, the batch creator can ensure that at the handoff point the market price is below the minimum acceptable price. This causes the user transaction to revert, effectively censoring the user.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-6" href="#footnote-6" target="_self">6</a><a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-7" href="#footnote-7" target="_self">7</a></p><p>Interestingly, <strong>censorship via state contention is more effective than censorship via exclusion. </strong>An excluded transaction can be included in future blocks. A transaction censored via contention is permanently invalidated. It has been included in the chain, and can never be included again. That transaction can never achieve the user&#8217;s goal. To try again, the user must recreate and resubmit the transaction (which can then be potentially censored again).&nbsp;</p><p><strong>In practical systems</strong></p><blockquote><p>[A]ny user can bypass the Sequencer entirely to submit any Arbitrum transaction (including one that, say, initiates an L2 to L1 message to withdraw funds) directly from layer 1. Thus [sic] mechanism thereby preserves censorship resistance even if the Sequencer is being completely unresponsive or even malicious.</p><p>- <a href="https://docs.arbitrum.io/how-arbitrum-works/sequencer">Arbitrum</a></p></blockquote><p>In the run-ahead sequencing model, the sequencer has near-perfect control over the location of the handoff in the sequence, and pays reduced fees (as they need not tip and can exercise some control over the EIP-1559 basefee). As a result, the sequencer is in a privileged position to use state contention to censor user actions. It is trivial. The hand-off problem ensures that the sequencer can censor large classes of transactions.</p><p>For EIP-7547, builders choose where in the block hand-offs occur.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-8" href="#footnote-8" target="_self">8</a> As a result, the builder is capable of choosing the location of the hand-off within the block. This means that they can select a prefix and a postfix at will,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-9" href="#footnote-9" target="_self">9</a> as long as they respect block gas rules. The prefix can put the chain into a state on which the transaction will revert, while the postfix will restore the chain to a normal state. EIP-7547 inclusion lists are not sufficient to prevent censorship for any transaction accessing contentious state. The hand-off problem prevents ILs from ensuring transaction execution in most cases.</p><p>Forced inclusion is ineffective at protecting users from censorship for most non-trivial uses of the blockchain. The hand-off problem ensures that the censor has sufficient discretion over state even if they don&#8217;t have sufficient discretion over order. This problem affects AMMs, lending markets, auctions, and most other DeFi actions. <strong>Many important actions are censorable </strong><em><strong>even if you can guarantee transaction inclusion.</strong></em><strong> </strong>State contention creates hard limits on the effectiveness of forced inclusion as a censorship-resistance mechanism.</p><p><strong>Case study</strong></p><p>To see the far-reaching effects of this, consider a user lending USDC in a lending market on Optimism. When the user wants to withdraw USDC from the market, they submit an Optimism transaction, which the sequencer censors. They then use the official forced inclusion mechanism to queue their transaction on Ethereum, bypassing the sequencer. </p><p>The sequencer can see that transaction in the queue, and can choose to sandwich it. In order to censor the transaction, the sequencer borrows all available USDC from the market immediately before the forced transaction. Because the market no longer has liquidity, the forced transaction reverts. The sequencer can then repay the USDC immediately.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!SKvO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b449e22-66d0-4fe1-bc25-28aea3329e72_2799x1428.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!SKvO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b449e22-66d0-4fe1-bc25-28aea3329e72_2799x1428.png 424w, https://substackcdn.com/image/fetch/$s_!SKvO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b449e22-66d0-4fe1-bc25-28aea3329e72_2799x1428.png 848w, https://substackcdn.com/image/fetch/$s_!SKvO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b449e22-66d0-4fe1-bc25-28aea3329e72_2799x1428.png 1272w, https://substackcdn.com/image/fetch/$s_!SKvO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b449e22-66d0-4fe1-bc25-28aea3329e72_2799x1428.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!SKvO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b449e22-66d0-4fe1-bc25-28aea3329e72_2799x1428.png" width="1456" height="743" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/9b449e22-66d0-4fe1-bc25-28aea3329e72_2799x1428.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:743,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:154414,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!SKvO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b449e22-66d0-4fe1-bc25-28aea3329e72_2799x1428.png 424w, https://substackcdn.com/image/fetch/$s_!SKvO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b449e22-66d0-4fe1-bc25-28aea3329e72_2799x1428.png 848w, https://substackcdn.com/image/fetch/$s_!SKvO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b449e22-66d0-4fe1-bc25-28aea3329e72_2799x1428.png 1272w, https://substackcdn.com/image/fetch/$s_!SKvO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9b449e22-66d0-4fe1-bc25-28aea3329e72_2799x1428.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">The sequncer or builder can manipulate the state at the hand-off. </figcaption></figure></div><p> This requires the sequencer to have collateral sufficient to borrow the USDC, but it imposes only an extremely small borrow cost.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-10" href="#footnote-10" target="_self">10</a> Furthermore, the collateral is reusable for all censorship, as the borrow is never held open. As a result, a user of AAVE or Compound on Optimism (or Arbitrum or any other centrally-sequenced rollup) has <strong>no guarantee that they will be able to withdraw collateral </strong><em><strong>ever</strong></em>. The sequencer can censor any withdrawal from any lending market at any time. Forced inclusion is simply not sufficient to protect users against censorship.</p><p><strong>Followup Work</strong></p><p>We have a few areas of followup research.</p><p>First, EIP-7547 can be trivially improved by requiring IL transactions be processed at the end of the next block. In the PBS auction context, censorship is MEV. The builder derives some non-economic value, to which they must assign a subjective value denominated in ETH. Censorship by the builder therefore causes an increase in the builder&#8217;s block bid.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-11" href="#footnote-11" target="_self">11</a> This extends to searchers, who may make censoring bundles. Some of the economic value of censorship is then captured by the proposer, providing an incentive to tolerate censorship even when not participating in it directly. Placing forced inclusion transactions at the end of the block removes the block builder&#8217;s ability to trivially sandwich the IL transactions, and increases the economic cost of contentious censorship. E.g. censoring an AMM interaction via state contention could require giving up some AMM arbitrage or a high cost to push the market out of range that cannot be recouped by closing the sandwich. In addition, this would restrict censorship bundles produced by Searchers (rather than builders) to one per block.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-12" href="#footnote-12" target="_self">12</a> We would recommend top-of-block execution, as the prefix is more significant than the postfix, however, that would drastically increase the cost of an IL transaction, as it would allow top-of-block MEV extraction via forced inclusion.<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-13" href="#footnote-13" target="_self">13</a> Removing the censor&#8217;s right to atomically postfix the IL transactions is a small improvement.</p><p>Second, the hand-off problem exists because the censor can look ahead via transaction simulation and exercise control over the input state. Many MEV-resistance mechanisms introduce hidden information to remove the censor&#8217;s ability to derive information about users&#8217; goals and to simulate outcomes. Typically these are commit-reveal schemes, where some transaction information is private until after ordering occurs. Ordering-execution separation and hidden information seem promising, but are largely incompatible with the MEV supply chain, Ethereum consensus processes, and the sequenced rollup model. Some way to negate the ability to simulate transactions would address censorship and large classes of MEV, but would be extremely invasive to the protocol, the operators of the protocol, applications, and the end user.</p><p>Third, there is an interesting class of &#8220;order-independent&#8221; scoring functions. These are goals that cannot be censored by state contention, either because they don&#8217;t access contentious state, or because the contentious state they do access has sufficient constraints to make it &#8220;reliable&#8221; in some sense. Order-independent actions include sending ETH to an EOA, most ERC-20 sends,<a class="footnote-anchor" data-component-name="FootnoteAnchorToDOM" id="footnote-anchor-14" href="#footnote-14" target="_self">14</a> and some DeFi interactions like adding collateral to a market. These actions are protected from censorship via contention. This class of goals also has interesting correspondences in safe cross-chain communication and MEV resistance and is worth more in-depth study. Applications and protocols may be designed to include only order-independent actions in some cases, but more study is needed.</p><p><strong>Conclusion</strong></p><p>Rich state allows malicious actors to censor transactions while still including them. The hand-off problem is fundamental to forced inclusion mechanisms, and can only be mitigated. In centrally sequenced rollups, no mitigation is possible. Forced inclusion cannot address censorship in the presence of contentious state. Large classes of economically important transactions can be censored, even if included by force. The hand-off problem is endemic in modern rollups, and present in Ethereum&#8217;s censorship resistance EIPs. As a result, forced inclusion, while beneficial, is never sufficient to provide censorship resistance for rich-state chains. Rollups do not &#8220;inherit&#8221; Ethereum&#8217;s security properties and it&#8217;s silly to suggest that they do. When you stop obsessing over inclusion, it becomes obvious that censorship resistance is a special case of MEV resistance.</p><p><em>We&#8217;d like to thank <a href="https://x.com/mikeneuder">Mike Neuder</a>, <a href="https://x.com/tarunchitra">Tarun Chitra</a>, and <a href="https://x.com/bcmakes">Brandon Curtis</a> for review and feedback.</em></p><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-1" href="#footnote-anchor-1" class="footnote-number" contenteditable="false" target="_self">1</a><div class="footnote-content"><p>&nbsp;As is typical, for L1s this is accomplished by rejecting invalid blocks, while in rollups it is accomplished by coercing invalid sequences to valid sequences via some filtration function.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-2" href="#footnote-anchor-2" class="footnote-number" contenteditable="false" target="_self">2</a><div class="footnote-content"><p>&nbsp;This is not a post about intents, the world does not need more of those at this point.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-3" href="#footnote-anchor-3" class="footnote-number" contenteditable="false" target="_self">3</a><div class="footnote-content"><p>This is obviously an incomplete model, as it doesn&#8217;t take into account the subjective values of the outcomes. E.g. the censor may stand to lose any amount of money if censorship fails (e.g. because they could get arrested by French police if they fail to censor certain behavior). On the other hand, the user could stand to gain/lose any amount of money if their goal is not achieved on a specific timeframe (e.g. they have taken $100mm+ in loans against their own token and need to re-collateralize the position before they get liquidated).</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-4" href="#footnote-anchor-4" class="footnote-number" contenteditable="false" target="_self">4</a><div class="footnote-content"><p>As opposed to a &#8220;based&#8221; sequencer model. In most modern rollups the sequencer &#8220;runs ahead&#8221; of Ethereum as it provides inclusion and execution attestations for a transaction before the transaction has been committed to Ethereum. In this model the Sequencer has total control over the sequence, and the outcome of the transaction must be independent of Ethereum reorgs.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-5" href="#footnote-anchor-5" class="footnote-number" contenteditable="false" target="_self">5</a><div class="footnote-content"><p>&nbsp;When multiple users want to access the same contract, asset or state, their transactions &#8220;contend&#8221; with each other and potentially interfere with each others&#8217; outcomes. Contention may arise coincidentally, or deliberately. This is an intractable problem of rich state in blockchain systems. Public access to shared state is the root of MEV, scalability problems, and the decline of civility in modern society.&nbsp;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-6" href="#footnote-anchor-6" class="footnote-number" contenteditable="false" target="_self">6</a><div class="footnote-content"><p>&nbsp;Generally, you should think of censorship via state contention as a specialized case of MEV. Because the value extracted is off-chain, non-observable, and potentially very large, it may be difficult to predict when censorship via state contention will occur.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-7" href="#footnote-anchor-7" class="footnote-number" contenteditable="false" target="_self">7</a><div class="footnote-content"><p>&nbsp;We specifically covered using state contention to revert transactions in our 2017 article &#8220;<a href="https://medium.com/keepnetwork/miners-arent-your-friends-cde9b6e0e9ac">Miners Aren&#8217;t Your Friends</a>&#8221;. Back then the term &#8220;MEV&#8221; was not yet in usage.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-8" href="#footnote-anchor-8" class="footnote-number" contenteditable="false" target="_self">8</a><div class="footnote-content"><p>&nbsp;It&#8217;s well-known that PBS dramatically complicates censorship resistance. See VB&#8217;s <a href="https://notes.ethereum.org/@vbuterin/pbs_censorship_resistance">research note</a>.&nbsp;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-9" href="#footnote-anchor-9" class="footnote-number" contenteditable="false" target="_self">9</a><div class="footnote-content"><p>Prefixing and postfixing a transaction is commonly called &#8220;sandwiching&#8221; and is well-understood as a method of using state contention to extract MEV.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-10" href="#footnote-anchor-10" class="footnote-number" contenteditable="false" target="_self">10</a><div class="footnote-content"><p>The borrow is held for only a few seconds, if that. Rollup sequencers can in some cases hold timestamps or block boundaries to make the effective borrow time 0.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-11" href="#footnote-anchor-11" class="footnote-number" contenteditable="false" target="_self">11</a><div class="footnote-content"><p>&nbsp;The builder will be willing to pay up to their subjective value of censorship, potentially pushing the bid above the objectively observable extractable value of the block. In extreme cases this can result in instances where the censor has a negative ETH balance change (i.e. they pay more ETH to produce the block than they receive in fees and rewards).&nbsp;</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-12" href="#footnote-anchor-12" class="footnote-number" contenteditable="false" target="_self">12</a><div class="footnote-content"><p>Note that this relies on MEV auction rules preventing interleaving transactions from different bundles and not allowing &#8220;must revert&#8221; transactions. If those rules were relaxed to allow bundle txns to be interleaved, and/or if builders started to support &#8220;must revert&#8221; blocks in bundles, the protection would evaporate. This dynamic arises because if IL transactions must be at end of block, no non-forced transactions may be interleaved, and therefore at most one searcher censorship bundle could occur.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-13" href="#footnote-anchor-13" class="footnote-number" contenteditable="false" target="_self">13</a><div class="footnote-content"><p>Effectively allowing the builder to create limited inter-block bundles. Pre-consensus systems like <a href="https://ethresear.ch/t/fork-choice-enforced-inclusion-lists-focil-a-simple-committee-based-inclusion-list-proposal/19870">FOCIL</a> could mitigate this.</p></div></div><div class="footnote" data-component-name="FootnoteToDOM"><a id="footnote-14" href="#footnote-anchor-14" class="footnote-number" contenteditable="false" target="_self">14</a><div class="footnote-content"><p>For a standard ERC-20 token, <em>transfer</em> call is usually not censorable via contention, as third-parties cannot decrease the user&#8217;s balance.&nbsp;However, consider a <em>transferFrom</em> call. If the approved transferor is a contract that allows contention on its own state, then the action may be censorable via that contention (consuming the approval required for the <em>transferFrom</em> in some unintended way).</p></div></div>]]></content:encoded></item></channel></rss>