<?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[Alex Connolly]]></title><description><![CDATA[Alex Connolly]]></description><link>https://www.alexconnolly.xyz</link><image><url>https://substackcdn.com/image/fetch/$s_!AsHk!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5a11e076-d0ae-4647-9658-be788bb2d10e_72x72.png</url><title>Alex Connolly</title><link>https://www.alexconnolly.xyz</link></image><generator>Substack</generator><lastBuildDate>Sat, 23 May 2026 10:12:45 GMT</lastBuildDate><atom:link href="https://www.alexconnolly.xyz/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Alex Connolly]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[alexconnolly@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[alexconnolly@substack.com]]></itunes:email><itunes:name><![CDATA[Alex Connolly]]></itunes:name></itunes:owner><itunes:author><![CDATA[Alex Connolly]]></itunes:author><googleplay:owner><![CDATA[alexconnolly@substack.com]]></googleplay:owner><googleplay:email><![CDATA[alexconnolly@substack.com]]></googleplay:email><googleplay:author><![CDATA[Alex Connolly]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Is EIP-3074 a good idea?]]></title><description><![CDATA[Everything you need to know about the latest Ethereum wallet UX upgrade.]]></description><link>https://www.alexconnolly.xyz/p/eip-3074</link><guid isPermaLink="false">https://www.alexconnolly.xyz/p/eip-3074</guid><dc:creator><![CDATA[Alex Connolly]]></dc:creator><pubDate>Tue, 16 Apr 2024 07:35:19 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbeb9f-3147-498f-a8a0-0544a2c45a74_869x590.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It was recently announced that <a href="https://eips.ethereum.org/EIPS/eip-3074">EIP-3074</a> would be included in the next Ethereum hard fork as a protocol-level improvement to Ethereum wallet UX. A curious mix of reactions followed from the Ethereum community:</p><ul><li><p>Celebration: &#8220;&#8230;a monumental upgrade to Ethereum UX&#8221; (<a href="https://twitter.com/haydenzadams/status/1778513861408129181">Uniswap founder</a>)</p></li><li><p>Concern: &#8220;&#8230;very problematic" (<a href="https://twitter.com/koeppelmann/status/1778653049302491499">Gnosis founder</a>)</p></li><li><p>Confusion: &#8220;mixed feelings&#8230;not sure this is the right strategy&#8221; (<a href="https://twitter.com/adietrichs/status/1778442942115377277">one of the EIP-3074 authors</a>)</p></li></ul><p>So what actually is EIP-3074? Are my assets safe? How is this different to smart contract wallets, account abstraction or ERC-4337? Why does the Ethereum community name everything with confusing numbers? </p><p>If you&#8217;re a regular EVM user or developer, it&#8217;s worth understanding where wallets are heading next - but first, let&#8217;s start at the beginning. </p><h2>EOAs vs. Smart Contract Wallets</h2><p>The basic account primitive of the EVM is the Externally Owned Account (EOA).</p><ul><li><p>Account: an Ethereum address (e.g. 0xabcdef)</p></li><li><p>Externally Owned: the controller of this address is a cryptographic private key </p></li></ul><p>The other type of Ethereum &#8220;account&#8221; is a smart contract, which also has an address, but contains code and has no native controlling key: if you want to send transactions via a smart contract account, you need to build that capability into its code!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yclv!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b67781-45b8-4d63-9209-887875ea6821_528x427.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yclv!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b67781-45b8-4d63-9209-887875ea6821_528x427.png 424w, https://substackcdn.com/image/fetch/$s_!yclv!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b67781-45b8-4d63-9209-887875ea6821_528x427.png 848w, https://substackcdn.com/image/fetch/$s_!yclv!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b67781-45b8-4d63-9209-887875ea6821_528x427.png 1272w, https://substackcdn.com/image/fetch/$s_!yclv!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b67781-45b8-4d63-9209-887875ea6821_528x427.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yclv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b67781-45b8-4d63-9209-887875ea6821_528x427.png" width="470" height="380.094696969697" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/31b67781-45b8-4d63-9209-887875ea6821_528x427.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:427,&quot;width&quot;:528,&quot;resizeWidth&quot;:470,&quot;bytes&quot;:31559,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yclv!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b67781-45b8-4d63-9209-887875ea6821_528x427.png 424w, https://substackcdn.com/image/fetch/$s_!yclv!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b67781-45b8-4d63-9209-887875ea6821_528x427.png 848w, https://substackcdn.com/image/fetch/$s_!yclv!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b67781-45b8-4d63-9209-887875ea6821_528x427.png 1272w, https://substackcdn.com/image/fetch/$s_!yclv!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31b67781-45b8-4d63-9209-887875ea6821_528x427.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>All transactions on Ethereum must be initiated by an EOA, so they are by far the most common type of Ethereum account for users. However, EOAs have a number of major UX and security downsides:</p><ul><li><p>They must have enough ETH to use as gas in their transactions (problematic if the user has other valuable assets e.g. NFTs, but no ETH)</p></li><li><p>They cannot send bundled transactions/interact with &gt;1 smart contract atomically</p></li><li><p>They cannot have on-chain recovery mechanisms (e.g. social recovery)</p></li><li><p>They are very easy to compromise, and all your assets will be drained if they are</p></li></ul><p>To solve these challenges, a long term goal of the blockchain research community has been &#8220;<a href="https://ethereum.org/en/roadmap/account-abstraction/">account abstraction</a>&#8221; (AA): switching users from EOAs to &#8220;smart contract wallets&#8221; which are controlled by on-chain code code. The user usually still needs some key material on their device, but we can program arbitrary logic into the smart contract code to control user assets and solve the issues described above.</p><p>Some chains have introduced account abstraction as a native primitive (e.g. <a href="https://starkware.co/resource/native-account-abstraction-opening-blockchain-to-new-possibilities/">Starknet</a>), while Ethereum has been content to have wallet providers create their own smart contract wallet implementations. There are now dozens of smart contract wallets which offer different functionality for different purposes (e.g. Gnosis Safe, Argent, Coinbase Smart Wallet, Immutable Passport). </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!uTCl!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadd007c0-df0e-4e87-b24a-09c5bb6a55d3_338x293.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!uTCl!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadd007c0-df0e-4e87-b24a-09c5bb6a55d3_338x293.png 424w, https://substackcdn.com/image/fetch/$s_!uTCl!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadd007c0-df0e-4e87-b24a-09c5bb6a55d3_338x293.png 848w, https://substackcdn.com/image/fetch/$s_!uTCl!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadd007c0-df0e-4e87-b24a-09c5bb6a55d3_338x293.png 1272w, https://substackcdn.com/image/fetch/$s_!uTCl!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadd007c0-df0e-4e87-b24a-09c5bb6a55d3_338x293.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!uTCl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadd007c0-df0e-4e87-b24a-09c5bb6a55d3_338x293.png" width="338" height="293" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/add007c0-df0e-4e87-b24a-09c5bb6a55d3_338x293.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:293,&quot;width&quot;:338,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:17656,&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_!uTCl!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadd007c0-df0e-4e87-b24a-09c5bb6a55d3_338x293.png 424w, https://substackcdn.com/image/fetch/$s_!uTCl!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadd007c0-df0e-4e87-b24a-09c5bb6a55d3_338x293.png 848w, https://substackcdn.com/image/fetch/$s_!uTCl!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadd007c0-df0e-4e87-b24a-09c5bb6a55d3_338x293.png 1272w, https://substackcdn.com/image/fetch/$s_!uTCl!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fadd007c0-df0e-4e87-b24a-09c5bb6a55d3_338x293.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>However, the numbers speak for themselves: <a href="https://www.bundlebear.com/overview/ethereum">fewer than 0.1% of Ethereum users use smart contract wallets</a>, and there are still <a href="https://blockworks.co/news/metamask-monthly-active-users-blockaid">tens of millions of active Ethereum EOAs</a>. Getting these users to switch is a monumental undertaking and a security nightmare.</p><h2>How can EIP-3074 help?</h2><p>EIP-3074 was <a href="https://eips.ethereum.org/EIPS/eip-3074">proposed in late 2020</a> as a way to help EOA users get some of the benefits of account abstraction immediately, without needing to fully convert their accounts into smart contract wallets. </p><p>EIP-3074 introduces two new opcodes, AUTH and AUTHCALL. These opcodes allow users to temporarily delegate control of their EOA account to another account (the &#8220;invoker&#8221;, usually a smart contract) by signing a message. Another account (the &#8220;sponsor/bundler&#8221;) then sends a transaction which uses that message with an AUTH opcode to make the delegation official on-chain. The &#8220;invoker&#8221; account can then use AUTHCALL to transact as the user.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nWyz!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbeb9f-3147-498f-a8a0-0544a2c45a74_869x590.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nWyz!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbeb9f-3147-498f-a8a0-0544a2c45a74_869x590.png 424w, https://substackcdn.com/image/fetch/$s_!nWyz!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbeb9f-3147-498f-a8a0-0544a2c45a74_869x590.png 848w, https://substackcdn.com/image/fetch/$s_!nWyz!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbeb9f-3147-498f-a8a0-0544a2c45a74_869x590.png 1272w, https://substackcdn.com/image/fetch/$s_!nWyz!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbeb9f-3147-498f-a8a0-0544a2c45a74_869x590.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nWyz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbeb9f-3147-498f-a8a0-0544a2c45a74_869x590.png" width="869" height="590" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5dcbeb9f-3147-498f-a8a0-0544a2c45a74_869x590.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:590,&quot;width&quot;:869,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:53809,&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_!nWyz!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbeb9f-3147-498f-a8a0-0544a2c45a74_869x590.png 424w, https://substackcdn.com/image/fetch/$s_!nWyz!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbeb9f-3147-498f-a8a0-0544a2c45a74_869x590.png 848w, https://substackcdn.com/image/fetch/$s_!nWyz!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbeb9f-3147-498f-a8a0-0544a2c45a74_869x590.png 1272w, https://substackcdn.com/image/fetch/$s_!nWyz!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5dcbeb9f-3147-498f-a8a0-0544a2c45a74_869x590.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>There will probably be a few standard invoker contracts (e.g. one that handles batching), and these invokers will replicate some of the key UX benefits of account abstraction! </p><h4>Batched Transactions</h4><p>Consider the common flow of ERC20 approval + transfer, which currently requires two separate Ethereum transactions for EOAs. Through a delegation to a batching invoker, this can be reduced to one transaction (though wallets would still need to show two confirmations). Additionally, many applications attempt to avoid this &#8220;double request&#8221; on subsequent interactions by requesting unlimited spent approval during the user&#8217;s first interaction. This leaves users fatally exposed to any future bugs in those protocols, so by avoiding it we&#8217;d get a large security improvement for free!</p><h4>Gas Sponsorship</h4><p>Let&#8217;s say our user has $20 of USDC in their wallet, but no ETH with which to pay the gas fee (e.g. of a swap). A dapp could request permission to act on behalf of the user via an invoker, pay the gas fee themselves, and then seek reimbursement from the user&#8217;s USDC balance. The invoker contract must contain logic restricting the transactions it sends to only those approved by the user via an explicit signature. </p><p>Additional custom invokers will likely follow, and users could access this UX without needing to switch away from their existing, familiar wallets (assuming those wallets added EIP-3074 support). </p><h4>How is this different to ERC-4337?</h4><p>Hang on, I thought we already had an account abstraction proposal with a strange number? What happened to <a href="https://www.erc4337.io/">ERC-4337</a>? </p><p>ERC-4337 is a <a href="https://www.alchemy.com/overviews/what-is-account-abstraction">standard for smart contract wallets</a> which aims to consolidate the currently fragmented smart contract wallet ecosystem. ERC-4337 accounts are full smart contract wallets: user assets are stored in a smart contract rather than an EOA. There are lots of different implementations, but the overall flow for ERC-4337 transactions is as follows (note that alex.eth is a smart contract):</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Qh_Y!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad20478a-f7b3-4417-aa27-e2b02c9b64d4_874x593.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Qh_Y!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad20478a-f7b3-4417-aa27-e2b02c9b64d4_874x593.png 424w, https://substackcdn.com/image/fetch/$s_!Qh_Y!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad20478a-f7b3-4417-aa27-e2b02c9b64d4_874x593.png 848w, https://substackcdn.com/image/fetch/$s_!Qh_Y!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad20478a-f7b3-4417-aa27-e2b02c9b64d4_874x593.png 1272w, https://substackcdn.com/image/fetch/$s_!Qh_Y!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad20478a-f7b3-4417-aa27-e2b02c9b64d4_874x593.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Qh_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad20478a-f7b3-4417-aa27-e2b02c9b64d4_874x593.png" width="874" height="593" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ad20478a-f7b3-4417-aa27-e2b02c9b64d4_874x593.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:593,&quot;width&quot;:874,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:61927,&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_!Qh_Y!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad20478a-f7b3-4417-aa27-e2b02c9b64d4_874x593.png 424w, https://substackcdn.com/image/fetch/$s_!Qh_Y!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad20478a-f7b3-4417-aa27-e2b02c9b64d4_874x593.png 848w, https://substackcdn.com/image/fetch/$s_!Qh_Y!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad20478a-f7b3-4417-aa27-e2b02c9b64d4_874x593.png 1272w, https://substackcdn.com/image/fetch/$s_!Qh_Y!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fad20478a-f7b3-4417-aa27-e2b02c9b64d4_874x593.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>The goal of ERC4337 is to pioneer the widespread adoption of smart contract wallets without any change to the core EVM. Eventually, account abstraction is likely to be incorporated into chains natively: there is already a plan to introduce native account abstraction to Ethereum L2s via <a href="https://ethereum-magicians.org/t/rip-7560-native-account-abstraction/16664">RIP-7560</a>, and this could be extended to Ethereum itself in future (via <a href="https://eips.ethereum.org/EIPS/eip-2938">EIP-2938</a> or a successor). </p><p>Today, ERC-4337 is still in its infancy. The standard is yet to be finalised, and last week there were <a href="https://www.bundlebear.com/overview/all">only ~200,000 ERC-4337 transactions</a> across all EVM chains (90%+ on Polygon). EIP-3074 and ERC-4337 are parallel improvements to wallet UX, and most Ethereum users today are EOA users. Proponents of both have argued that the fastest way to improve Ethereum UX is pushing ahead on both fronts as fast as possible!</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AFm0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F550747ef-c5e3-4de0-a94e-e8ad72611d10_1080x608.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AFm0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F550747ef-c5e3-4de0-a94e-e8ad72611d10_1080x608.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AFm0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F550747ef-c5e3-4de0-a94e-e8ad72611d10_1080x608.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AFm0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F550747ef-c5e3-4de0-a94e-e8ad72611d10_1080x608.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AFm0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F550747ef-c5e3-4de0-a94e-e8ad72611d10_1080x608.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AFm0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F550747ef-c5e3-4de0-a94e-e8ad72611d10_1080x608.jpeg" width="356" height="200.4148148148148" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/550747ef-c5e3-4de0-a94e-e8ad72611d10_1080x608.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:608,&quot;width&quot;:1080,&quot;resizeWidth&quot;:356,&quot;bytes&quot;:48201,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&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_!AFm0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F550747ef-c5e3-4de0-a94e-e8ad72611d10_1080x608.jpeg 424w, https://substackcdn.com/image/fetch/$s_!AFm0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F550747ef-c5e3-4de0-a94e-e8ad72611d10_1080x608.jpeg 848w, https://substackcdn.com/image/fetch/$s_!AFm0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F550747ef-c5e3-4de0-a94e-e8ad72611d10_1080x608.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!AFm0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F550747ef-c5e3-4de0-a94e-e8ad72611d10_1080x608.jpeg 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><h2>So why are some people against EIP-3074?</h2><h4>EIP-3074 is a potentially major security attack vector</h4><p>The most common complaint you will have seen on Twitter is that after EIP-3074, &#8220;one signature can drain my account of all my ETH, ERC20s and NFTs&#8221;. This is true: delegate to a malicious invoker, and all your assets will be lost. Of course, one malicious &#8220;export private key&#8221; with an EOA wallet and your assets are also lost - but signatures are much more common in the standard flow of web3 applications, and many users just mash confirm as fast as possible. </p><p>However, there are some major caveats here. EIP-3074 signatures are very recognisable - they must have a &#8220;magic prefix&#8221; (literally just &#8220;0x04&#8221;). <a href="https://twitter.com/lightclients/status/1778823654047932723">Today, most wallets only support signing with a different prefix</a> defined in <a href="https://eips.ethereum.org/EIPS/eip-191">ERC-191</a>, so there&#8217;s a low (<a href="https://twitter.com/0xngmi/status/1778836691798610035">but not zero!</a>) chance of any current signatures being used to spoof EIP-3074 delegations. As wallets implement support for EIP-3074, they will likely introduce very scary screens which get users to double check their actions before signing this message - think &#8220;export your private key&#8221; levels of security. This limits the UX benefits of EIP-3074: if you need to approve the big red warning screen every time you want to use a different invoker, we haven&#8217;t made any progress. </p><p>To counter this, many wallets may choose to implement a list of approved invokers (e.g. the standard transaction batcher), and only display the scary screens when users step outside these bounds. However, this is an obvious centralisation vector, is going to be idiosyncratic across wallets, and relies on co-ordination between dapps and wallets (e.g. both choosing the same gas sponsorship invoker). </p><p>Assuming your wallet implements EIP-3074 sensibly, there&#8217;s no reason to believe that EIP-3074 will be a security disaster - but that&#8217;s a big assumption across the hundreds of Ethereum wallets. No matter what, it will be an important new attack vector which will no doubt cause some high profile incidents - I actually wonder whether disguised batch transactions (which applies to all AA wallets) is actually the largest area of long term risk. </p><h4>EIP-3074 won&#8217;t permanently &#8220;abstract&#8221; your wallet</h4><p>Some people have described EIP-3074 as &#8220;upgrading your EOA into a smart contract wallet&#8221;. This is misleading - more accurately users are &#8220;temporarily giving permission to a smart contract to act on your behalf&#8221;, which has a few major limitations:</p><ol><li><p><strong>Delegating to an invoker is temporary and can be revoked at any time</strong>. This means that if someone compromises your private key, or tricks you into signing a malicious transaction, your assets will still be drained. You get some of the UX benefits of account abstraction, but <a href="https://twitter.com/itamarl/status/1778698669992149393">none of the security benefits</a>. In fact, EIP-3074 may massively <em>reduce</em> <a href="https://twitter.com/koeppelmann/status/1778807483202457876">the incentive for wallets</a> and users to upgrade to full smart contract wallets - contradicting our long term goal. </p></li><li><p><strong>Any time you send an actual EOA transaction, you will <a href="https://twitter.com/real_philogy/status/1778945735578513692">clear any existing invoker authorisations</a>.</strong> This is fantastic for fast revocation, but if you ever need to send a non-EIP-3074 transaction for any reason, you&#8217;ll have to go through your wallet&#8217;s &#8220;scary screen&#8221; process all over again, for all of your existing authorisations - not fun. </p></li></ol><p>For many people in the Ethereum community, this feels like a job half done. If we are going to spend 2-3 years working to get dapps and wallets to support EIP-3074 interactions, why not implement the ability to make these delegations permanent, and replace the code of the account entirely (fully converting it into a smart contract wallet)? <a href="https://eips.ethereum.org/EIPS/eip-5003">EIP-5003</a> would introduce another new opcode, AUTHUSURP, which would do exactly that, and <a href="https://safe.global/blog/eip-3074-risks-opportunities-for-smart-account-adoption">there is now a large push to have EIP-5003 included in the next Ethereum hardfork</a> to &#8220;finish the job&#8221;.  </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!xfTq!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1306aa31-a62f-41c0-ac73-8d4df5425fad_1358x912.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!xfTq!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1306aa31-a62f-41c0-ac73-8d4df5425fad_1358x912.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xfTq!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1306aa31-a62f-41c0-ac73-8d4df5425fad_1358x912.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xfTq!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1306aa31-a62f-41c0-ac73-8d4df5425fad_1358x912.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xfTq!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1306aa31-a62f-41c0-ac73-8d4df5425fad_1358x912.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!xfTq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1306aa31-a62f-41c0-ac73-8d4df5425fad_1358x912.jpeg" width="570" height="382.7982326951399" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1306aa31-a62f-41c0-ac73-8d4df5425fad_1358x912.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:912,&quot;width&quot;:1358,&quot;resizeWidth&quot;:570,&quot;bytes&quot;:180684,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/jpeg&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_!xfTq!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1306aa31-a62f-41c0-ac73-8d4df5425fad_1358x912.jpeg 424w, https://substackcdn.com/image/fetch/$s_!xfTq!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1306aa31-a62f-41c0-ac73-8d4df5425fad_1358x912.jpeg 848w, https://substackcdn.com/image/fetch/$s_!xfTq!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1306aa31-a62f-41c0-ac73-8d4df5425fad_1358x912.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!xfTq!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1306aa31-a62f-41c0-ac73-8d4df5425fad_1358x912.jpeg 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"><a href="https://safe.global/blog/eip-3074-risks-opportunities-for-smart-account-adoption">Safe founder&#8217;s view</a> on the path to fully replacing EOAs with AA</figcaption></figure></div><p>Even though this proposal has support of a number of major Ethereum community members, it isn&#8217;t a magic bullet: </p><ul><li><p>EIP-5003 accounts will still have <a href="https://twitter.com/SchorLukas/status/1779853704411107399">some limitations</a> compared to full smart contract wallets</p></li><li><p>There&#8217;s no easy way to invalidate existing or new signatures from the EOA&#8217;s private key, and many contracts treat these signatures as authoritative</p></li><li><p>There are all sorts of <a href="https://twitter.com/real_philogy/status/1778945742234603724">challenges with cross-chain support</a>, though many of these are also present with <a href="https://sequence.xyz/blog/sequence-wallet-light-state-sync-full-merkle-wallets">ERC-4337 wallets</a></p></li></ul><h4>EIP-3074 will require widespread wallet infrastructure changes</h4><p>To enable the sponsored and batched transaction flow described above, we will need a flow which looks roughly like the following sketch:</p><ol><li><p>The dapp must identify that these transactions should be batched together</p></li><li><p>The dapp must know whether our wallet supports batch transactions, and might need to include the cost of the particular invoker used by the wallet in their cost estimation for the transaction (to know whether they want to sponsor)</p></li><li><p>The wallet must know whether the dapp intends to sponsor the transaction</p></li><li><p>The wallet must check to see whether the user has already approved the necessary batch transaction and sponsorship invoker</p></li><li><p>The wallet must be able to convert the dapp&#8217;s request for &#8220;approve and transfer&#8221; into an EIP-3074 authorisation of the correct invoker and the subsequent requests - or maybe we ask dapps to do this? </p></li><li><p>The wallet must request the EIP-3074 signature from the user authoring the batch transaction invoker, with their custom EIP-3074 logic</p></li><li><p>The wallet must present UI to the user to confirm each of the transactions included in the batch. This will have to be built individually by each wallet. </p></li></ol><p>Dapps will need to implement separate flows for batched/non-batched users, and custom error handling for any discrepancies. As you can see, getting this flow to be supported across all users/wallets/dapps is going to be an enormous task - and we haven&#8217;t even started with <a href="https://vitalik.eth.limo/general/2023/06/09/three_transitions.html">cross-L2 UX</a>! </p><p>This is very similar to the current challenge faced by ERC-4337/smart contract wallets, and there are already proposals for new wallet RPC methods like <a href="https://eips.ethereum.org/EIPS/eip-5792">EIP-5792</a> (batch transactions), standardising the paymaster APIs (<a href="https://ethereum-magicians.org/t/erc-7677-paymaster-web-service-capability/19530">EIP-7677</a>), account-agnostic user operation bundles (<a href="https://github.com/ethereum/ERCs/pull/361/files">ERC-7679</a>) and more <a href="https://twitter.com/danfinlay/status/1778599495179403452">human-readable permissions for wallets</a>. It&#8217;s possible that EIP-3074 batching is able to piggyback of this work in some/all cases, but it&#8217;s also entirely possible we end up with 3 separate flows (EOA, EIP-3074, ERC-4337)!</p><p>This big implementation lift has a large real world cost: the more complex we make Ethereum (both at the EVM layer and the wallet RPC layer), the more we distract builders from doing everything else Ethereum needs to succeed. </p><h2>TL;DR</h2><p>For users/dapps/wallets that adopt it, there is no doubt that EIP-3074 will be able to provide meaningful and immediate UX uplifts. </p><p>However, there is a big risk that uptake of this functionality will be very limited: the new UX will be confusing, complex and disparate across wallets. By the time dapps and wallets are offering widespread support for EIP-3074, full smart contract wallet standards will hopefully have the tooling and maturity to be a more attractive destination for users. I am most hopeful about EIP-3074 as an intermediate tool for users on their path to full smart contract wallets, and I agree with the argument that this is massively limited without the fast-follow inclusion of EIP-5003. </p><p>The largest risk to the Ethereum community is the effort required to support EIP-3074 will dilute the efforts of developers trying to move users to fully abstracted wallets. ERC-4337 is <em>still</em> not final, crucial EIPs for the wallet&lt;&gt;dapp layer are still up in the air, and attempts at native account abstraction on L2s via <a href="https://ethereum-magicians.org/t/rip-7560-native-account-abstraction/16664">RIP-7560 have relatively low traction</a>. Further division of developer focus is unlikely to produce better results!</p><p>Ultimately, whether EIP-3074 is a good idea will depend on the degree to which it can be the trojan horse for other paths towards account abstraction (ERC-4337 and native). In the success case, EIP-3074 is a fantastic immediate upgrade and provides the incentive for dapp developers to integrate the tooling necessary to kickstart ERC-4337 adoption. In the failure case, we end up with dapp developers needing to maintain custom flows for 8 different types of Ethereum account!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.alexconnolly.xyz/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"></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>]]></content:encoded></item><item><title><![CDATA[The State of zkEVMs: End of 2023]]></title><description><![CDATA[The ultimate guide to every major zkEVM project's progress in 2023, comparing Polygon zkEVM, Scroll, Taiko, Immutable zkEVM, Linea, zkSync and StarkNet.]]></description><link>https://www.alexconnolly.xyz/p/the-state-of-zkevms-2023</link><guid isPermaLink="false">https://www.alexconnolly.xyz/p/the-state-of-zkevms-2023</guid><dc:creator><![CDATA[Alex Connolly]]></dc:creator><pubDate>Thu, 21 Dec 2023 00:14:56 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a751eb-7276-4950-a4e7-f71882226606_1510x972.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In August 2022, I wrote a blog about the current state of zkEVMs: <a href="https://immutableblog.medium.com/ground-up-guide-zkevm-evm-compatibility-rollups-787b6e88108e">Ground Up Guide to zkEVM, EVM Compatibility and Rollups</a>. The same week, Vitalik put out his own blog post on the <a href="https://vitalik.ca/general/2022/08/04/zkevm.html">Different Types of zkEVMs</a> which established the Type 1, Type 2 taxonomy which is now commonly used to describe zkEVMs - tough competition!</p><p>In that blog, I made a prediction: </p><blockquote><p><em>&#8230;it&#8217;s also appropriate to be sober-minded about the current readiness of smart contract rollups. Every team has a strong incentive to market themselves as &#8220;just about to take over the world&#8221; &#8212; but there will be no &#8220;production-grade&#8221; smart contract rollups on Ethereum until the end of 2022 at the earliest, and many of these teams will not be ready until deep into 2023.</em></p></blockquote><p>Well, we&#8217;re now &#8220;deep into 2023&#8221; - what&#8217;s the status of zkEVM development and adoption? It&#8217;s been a big year for zkEVMs on many fronts:</p><ul><li><p>Polygon zkEVM, Linea and Scroll all launched!</p></li><li><p>Immutable announced that our next rollup would be <a href="https://www.immutable.com/products/immutable-zkevm">Immutable zkEVM</a></p></li><li><p>Polygon announced their plan to <a href="https://polygon.technology/blog/polygon-2-0-polygon-pos-zk-layer-2">upgrade Polygon PoS to a zkEVM Validium</a></p></li><li><p>Optimism suggested their intent to support running OP Stack chains as zkEVMs</p></li></ul><p>However, the numbers speak for themselves:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!FaEa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fece32e50-862f-433b-9f00-2e1db81b94c8_613x385.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!FaEa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fece32e50-862f-433b-9f00-2e1db81b94c8_613x385.png 424w, https://substackcdn.com/image/fetch/$s_!FaEa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fece32e50-862f-433b-9f00-2e1db81b94c8_613x385.png 848w, https://substackcdn.com/image/fetch/$s_!FaEa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fece32e50-862f-433b-9f00-2e1db81b94c8_613x385.png 1272w, https://substackcdn.com/image/fetch/$s_!FaEa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fece32e50-862f-433b-9f00-2e1db81b94c8_613x385.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!FaEa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fece32e50-862f-433b-9f00-2e1db81b94c8_613x385.png" width="613" height="385" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ece32e50-862f-433b-9f00-2e1db81b94c8_613x385.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:385,&quot;width&quot;:613,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:18990,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!FaEa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fece32e50-862f-433b-9f00-2e1db81b94c8_613x385.png 424w, https://substackcdn.com/image/fetch/$s_!FaEa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fece32e50-862f-433b-9f00-2e1db81b94c8_613x385.png 848w, https://substackcdn.com/image/fetch/$s_!FaEa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fece32e50-862f-433b-9f00-2e1db81b94c8_613x385.png 1272w, https://substackcdn.com/image/fetch/$s_!FaEa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fece32e50-862f-433b-9f00-2e1db81b94c8_613x385.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">TVL is an imperfect but correlated measure of traction. Data from <a href="https://www.coingecko.com/en/chains">CoinGecko</a>.</figcaption></figure></div><p><strong>Put simply, zkEVM development is progressing, but no zkEVM currently has huge adoption compared to existing blockchains. </strong>The purpose of this blog is to answer the obvious question - how are the various zkEVM projects progressing, and what will it take to generate the traction we want to see?&nbsp;</p><p>First, let&#8217;s start with a quick refresher on Vitalik&#8217;s &#8220;zkEVM types&#8221;, which are helpful in describing zkEVM projects:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!MiFG!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95a69e0f-f956-4780-9632-6523f6b4b435_856x631.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!MiFG!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95a69e0f-f956-4780-9632-6523f6b4b435_856x631.png 424w, https://substackcdn.com/image/fetch/$s_!MiFG!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95a69e0f-f956-4780-9632-6523f6b4b435_856x631.png 848w, https://substackcdn.com/image/fetch/$s_!MiFG!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95a69e0f-f956-4780-9632-6523f6b4b435_856x631.png 1272w, https://substackcdn.com/image/fetch/$s_!MiFG!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95a69e0f-f956-4780-9632-6523f6b4b435_856x631.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!MiFG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95a69e0f-f956-4780-9632-6523f6b4b435_856x631.png" width="656" height="483.5700934579439" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/95a69e0f-f956-4780-9632-6523f6b4b435_856x631.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:631,&quot;width&quot;:856,&quot;resizeWidth&quot;:656,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!MiFG!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95a69e0f-f956-4780-9632-6523f6b4b435_856x631.png 424w, https://substackcdn.com/image/fetch/$s_!MiFG!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95a69e0f-f956-4780-9632-6523f6b4b435_856x631.png 848w, https://substackcdn.com/image/fetch/$s_!MiFG!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95a69e0f-f956-4780-9632-6523f6b4b435_856x631.png 1272w, https://substackcdn.com/image/fetch/$s_!MiFG!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F95a69e0f-f956-4780-9632-6523f6b4b435_856x631.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>This looks complex, but is actually fairly simple to understand. Everyone&#8217;s initial mental model for a zkEVM is just taking an existing Ethereum execution client (e.g. Geth, Nethermind, Erigon), generating zk-proofs of its execution trace, and using these proofs to secure an L1 &lt;&gt; L2 message bridge. However, the EVM wasn&#8217;t designed with zk-proving in mind, and this approach is highly inefficient (e.g. Ethereum&#8217;s keccak hash function is very expensive). We therefore have a few options:</p><ul><li><p><strong>Type 1</strong> - Deal with it, my users/I will pay. There are two major advantages here: you can use Type 1 provers with existing blockchains, and you won&#8217;t need to maintain your own Ethereum client (development costs can be just as expensive as proving costs), though you will have to keep your execution clients updated.</p></li><li><p><strong>Type 2</strong> - Don&#8217;t touch the &#8220;application layer&#8221; (e.g. no changes to opcode costs/implementations), but modify the nodes on your chain to have a more prover-friendly internal structure (e.g. using a <a href="https://docs.polygon.technology/zkEVM/concepts/sparse-merkle-trees/sparse-merkle-tree/">Sparse Merkle Tree</a> for your state). The big downside of this approach is that you&#8217;ll need to maintain a permanently forked Ethereum client. Given the fact that Ethereum already <a href="https://clientdiversity.org/">struggles to maintain multiple production grade clients</a>, this is a non-trivial task and will require a team of specialist blockchain engineers.&nbsp;</p></li><li><p><strong>Type 3</strong> - Do everything in Type 2, and also modify the EVM to get rid of the hardest bits to prove (e.g. some of the rarely used precompiles) and potentially increase opcode costs for prover-intensive operations.&nbsp; This is the fastest way to get your prover to market, but you will need to make all the client changes above <em>and</em> experience areas of incompatibility with existing Ethereum applications and tools (e.g. any contract which uses those precompiles will break).&nbsp;</p></li><li><p><strong>Type 4</strong> - Create a custom VM which is specifically designed for efficient zk proving, and create a custom client for running that VM. This will make proving costs <em>much </em>cheaper, but you&#8217;ll need to build a large ecosystem of tools and infrastructure to support your custom VM/client. You may be able to offer some form of transpilation of Solidity code, but developers will probably have to make substantial changes to their existing contracts and tools to deploy on your chain. In my view, most Type 4 rollups are not <em>really</em> zkEVMs - &#8220;smart contract zk-rollups&#8221; is probably a more accurate description.</p></li></ul><p>This might be a little bit easier to understand in the form of a table:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wQjN!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7dcb16-6feb-40a4-bee3-5306b3bbdc09_626x172.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wQjN!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7dcb16-6feb-40a4-bee3-5306b3bbdc09_626x172.png 424w, https://substackcdn.com/image/fetch/$s_!wQjN!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7dcb16-6feb-40a4-bee3-5306b3bbdc09_626x172.png 848w, https://substackcdn.com/image/fetch/$s_!wQjN!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7dcb16-6feb-40a4-bee3-5306b3bbdc09_626x172.png 1272w, https://substackcdn.com/image/fetch/$s_!wQjN!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7dcb16-6feb-40a4-bee3-5306b3bbdc09_626x172.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wQjN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7dcb16-6feb-40a4-bee3-5306b3bbdc09_626x172.png" width="626" height="172" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3e7dcb16-6feb-40a4-bee3-5306b3bbdc09_626x172.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:172,&quot;width&quot;:626,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:19712,&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_!wQjN!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7dcb16-6feb-40a4-bee3-5306b3bbdc09_626x172.png 424w, https://substackcdn.com/image/fetch/$s_!wQjN!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7dcb16-6feb-40a4-bee3-5306b3bbdc09_626x172.png 848w, https://substackcdn.com/image/fetch/$s_!wQjN!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7dcb16-6feb-40a4-bee3-5306b3bbdc09_626x172.png 1272w, https://substackcdn.com/image/fetch/$s_!wQjN!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3e7dcb16-6feb-40a4-bee3-5306b3bbdc09_626x172.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>At the end of 2023, <strong>almost every live project is a type 3 or type 4 rollup</strong>, for a very simple reason: they have been much faster to build (at the cost of compatibility and increased maintenance overhead)! Interestingly, almost every project which is currently a Type 3 is aiming to eventually become a Type 2 or Type 1 rollup to improve their compatibility with Ethereum and potentially remove the need to develop their own client software.&nbsp;</p><p>In last year&#8217;s blog I focused mainly on how each zkEVM team had designed their prover. This year, I want to cover the other important facets of each project&#8217;s approach, including things which are definitely not discussed frequently enough (e.g. the plan for each zkEVM&#8217;s execution client). For instance, many people think of L2s as &#8220;sequencer&#8221; and &#8220;prover&#8221;, when the standard zkEVM design actually looks more like this!</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!scvw!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a751eb-7276-4950-a4e7-f71882226606_1510x972.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!scvw!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a751eb-7276-4950-a4e7-f71882226606_1510x972.png 424w, https://substackcdn.com/image/fetch/$s_!scvw!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a751eb-7276-4950-a4e7-f71882226606_1510x972.png 848w, https://substackcdn.com/image/fetch/$s_!scvw!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a751eb-7276-4950-a4e7-f71882226606_1510x972.png 1272w, https://substackcdn.com/image/fetch/$s_!scvw!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a751eb-7276-4950-a4e7-f71882226606_1510x972.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!scvw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a751eb-7276-4950-a4e7-f71882226606_1510x972.png" width="1456" height="937" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/07a751eb-7276-4950-a4e7-f71882226606_1510x972.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:937,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:146904,&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_!scvw!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a751eb-7276-4950-a4e7-f71882226606_1510x972.png 424w, https://substackcdn.com/image/fetch/$s_!scvw!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a751eb-7276-4950-a4e7-f71882226606_1510x972.png 848w, https://substackcdn.com/image/fetch/$s_!scvw!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a751eb-7276-4950-a4e7-f71882226606_1510x972.png 1272w, https://substackcdn.com/image/fetch/$s_!scvw!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F07a751eb-7276-4950-a4e7-f71882226606_1510x972.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>There are alternative sequencer designs (which we&#8217;ll discuss later), but most zkEVMs currently plan to run a <em>separate blockchain</em> as the L2 sequencer, with its own <a href="https://ethereum.org/en/developers/docs/nodes-and-clients/">execution client</a> (receives and executions transactions) and consensus client (reaches consensus on the order of transactions across all the L2 nodes). </p><p>Importantly, modifying the standard Ethereum clients to create your custom chain comes at a cost. Every Ethereum client change (and particularly every hard fork) will be a governance decision point for all zKEVM teams. The more you customise, the more difficult it will be for you to adopt upstream changes. Over time, this can easily lead to drift - zkEVMs that matched Ethereum at some point in time will become rapidly desynced.</p><div><hr></div><h2>The State of zkEVM Projects</h2><p>So where are the projects we covered last year? </p><h3>Polygon zkEVM (and Polygon CDK-Based Chains)</h3><p>Polygon zkEVM launched on mainnet in March 2023 and has so far processed <a href="https://zkevm.polygonscan.com/">close to 10m</a> transactions. It is currently Type 3 (see <a href="https://wiki.polygon.technology/docs/zkevm/protocol/evm-diff/">Ethereum differences</a>), and aims to become Type 2 at some point in 2024.&nbsp;</p><p>Of course, as a Type 2/3, Polygon zkEVM requires its own custom client implementation. Polygon has chosen to build their own client from scratch (<a href="https://github.com/0xPolygonHermez/zkevm-node">zkevm-node</a>) for compatibility, but this client is new, has suffered outages, and is missing many of the features found in the standard Ethereum clients.</p><p>To offset this, Polygon has partnered with <a href="https://gateway.fm/">gateway.fm</a> to modify <a href="https://github.com/ledgerwatch/erigon">Erigon</a> (formerly turbo-geth) to support the changes needed for a Type 2/3 prover. This will give Polygon zkEVM a more stable base layer and improved performance, though maintaining compatibility with upstream Erigon will still pose an ongoing challenge.</p><p>A number of teams have also announced that they will be building zkEVMs using <a href="https://polygon.technology/blog/polygon-cdk-your-guide-to-sovereign-l2-scaling-from-a-to-zk">Polygon Chain Development Kit</a> (CDK), including <a href="https://astar.network/blog/astar-zkevm-testnet-is-now-live-39560">Astar</a>, <a href="https://www.okx.com/learn/okx-launches-x1-layer-two-polygon-cdk">OKX</a> and <a href="https://www.infura.io/blog/post/palm-network-scales-up-for-enhanced-operations-and-broader-use-cases">Palm Network</a>. Polygon CDK&#8217;s vision is to allow developers to build their own custom chains by composing different clients, provers and data availability solutions according to your needs (i.e. a built-your-own-zkevm toolkit). Today, CDK supports one client implementation (zkevm-node) and one prover (Polygon zkEVM). In future, the Polygon team plans to add additional client implementations (e.g. Type-2-Erigon) and provers (e.g. Polygon Zero) to CDK.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Jzx8!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79d1b5e3-de69-4df4-b593-de810eef37e5_1600x799.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Jzx8!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79d1b5e3-de69-4df4-b593-de810eef37e5_1600x799.png 424w, https://substackcdn.com/image/fetch/$s_!Jzx8!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79d1b5e3-de69-4df4-b593-de810eef37e5_1600x799.png 848w, https://substackcdn.com/image/fetch/$s_!Jzx8!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79d1b5e3-de69-4df4-b593-de810eef37e5_1600x799.png 1272w, https://substackcdn.com/image/fetch/$s_!Jzx8!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79d1b5e3-de69-4df4-b593-de810eef37e5_1600x799.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Jzx8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79d1b5e3-de69-4df4-b593-de810eef37e5_1600x799.png" width="592" height="295.5934065934066" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79d1b5e3-de69-4df4-b593-de810eef37e5_1600x799.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:727,&quot;width&quot;:1456,&quot;resizeWidth&quot;:592,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Jzx8!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79d1b5e3-de69-4df4-b593-de810eef37e5_1600x799.png 424w, https://substackcdn.com/image/fetch/$s_!Jzx8!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79d1b5e3-de69-4df4-b593-de810eef37e5_1600x799.png 848w, https://substackcdn.com/image/fetch/$s_!Jzx8!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79d1b5e3-de69-4df4-b593-de810eef37e5_1600x799.png 1272w, https://substackcdn.com/image/fetch/$s_!Jzx8!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79d1b5e3-de69-4df4-b593-de810eef37e5_1600x799.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>This means that you can deploy your own version of Polygon zkEVM today! However, any team that deploys using zkevm-node is likely to need to migrate to another client in future, so you may want to hold off until this is ready.&nbsp;</p><p>We should also note that Polygon is planning to upgrade Polygon PoS (one of the largest and most successful blockchains in the world) to a <a href="https://cointelegraph.com/news/polygon-co-founder-proposes-zkevm-validium-upgrade-to-improve-security">zkEVM with off-chain data</a>, though the timeline is not yet locked in.&nbsp;</p><h3>Scroll</h3><p>2023 has seen the launch of two Scroll testnets and a <a href="https://twitter.com/Scroll_ZKP/status/1714286874020528554">mainnet</a> (in October) - a massive year of building! Scroll is currently a Type 3 zkEVM, and have previously stated their intention to move to a Type 1/2 in future, though the timeline is not yet clear. They maintain a <a href="https://docs.scroll.io/en/developers/ethereum-and-scroll-differences/">list of differences with Ethereum</a>, including several unimplemented precompiles and some minor state modifications. Scroll&#8217;s client is a <a href="https://github.com/scroll-tech/go-ethereum">fork of Geth v1.10.13</a>, and they are currently operating in single sequencer mode. It&#8217;s worth noting that some parts of Scroll&#8217;s execution client are already <a href="https://github.com/ethereum/go-ethereum/releases/tag/v1.10.3">two years behind</a> upstream Ethereum (though they have cherry-picked the Shanghai execution client EIPs to reduce application-layer deviation). This will not cause any immediate disruption to the chain, but is indicative of the governance challenges many projects will face in determining how close to remain to upstream Ethereum long term, and how much engineering effort will be required to continually close this gap. </p><h3>Immutable zkEVM</h3><p><em>Disclaimer: I&#8217;m the co-founder/CTO of Immutable. <br></em>Immutable zkEVM has had a public testnet since July, and is planning to launch mainnet in January. Immutable zkEVM uses a version of the standard go-ethereum client which has been <a href="https://www.immutable.com/blog/under-the-hood-immutable-zkevm">customised for our core domain</a> (gaming). Interestingly, Immutable zkEVM is the only domain-specific zkEVM currently on this list, even though the ability for L2s to be tailored to the requirements of a particular area while retaining Ethereum security is one of their main attractions. For example, Immutable zkEVM is content to use validium data availability to reduce costs and has chosen a single-block finality PoSBFT design to provide near-instant confirmations, decisions which might not suit a general purpose chain. Additionally, there may be network effects if a substantial number of games and gaming users flock to this chain - we expect to see more domain-specific L2s in future.&nbsp;</p><p>However, the chain will launch without prover support. This is because Immutable zkEVM plans to adopt the <a href="https://github.com/0xPolygonZero">Type 1 Polygon Zero prover</a> when it becomes available and cost efficient. The only way for Immutable to launch with a Type 3 would be with substantial client modification, which we are reluctant to do given the implications for client drift away from Ethereum. Today, Polygon Zero is based on <a href="https://polygon.technology/blog/introducing-plonky2">Plonky-2</a>, with <a href="https://github.com/Plonky3/Plonky3">Plonky-3</a> in active development and estimated to provide a performance improvement of around an order of magnitude when it is production grade in mid-late 2024. This will give Polygon two independent provers (Polygon Zero and Polygon zkEVM) which developers will be able to choose between for use in their CDK-based chains.&nbsp;</p><h3>Linea</h3><p>Linea <a href="https://consensys.io/blog/consensys-launches-linea-mainnet-unlocking-a-new-level-of-user-experience">launched their mainnet back in August</a>, and are on a similar path to Polygon/Scroll: begin with a Type 3 rollup and move to a Type 1 or 2 over time. Linea currently contains only a few differences from Ethereum London, described in <a href="https://docs.linea.build/build-on-linea/ethereum-differences">this table</a>.&nbsp;</p><p>Linea is using their own modified version of Geth which they have named &#8220;zkGeth&#8221;. Concerningly, the source code for this client is not publicly available, and neither is the prover - there is no way for users to verify that either are performing as expected. They are planning to open source all these components as part of their well-documented <a href="https://docs.linea.build/decentralization-roadmap">decentralisation roadmap</a>. Linea&#8217;s <a href="https://docs.linea.build/architecture/sequencer">documentation</a> indicates that they plan to switch from &#8220;zkGeth&#8221; to <a href="https://github.com/Consensys/linea-besu">linea-besu</a>, a modification of the Consensys-developed <a href="https://github.com/hyperledger/besu">Besu client</a>.&nbsp;Over the medium term, the Linea team plans to merge linea-besu and regular besu and rely on Besu&#8217;s plugin system (e.g. https://github.com/Consensys/besu-shomei-plugin) to make the state modifications necessary to be a Type 2 zkEVM. </p><h3>Taiko</h3><p>Taiko is up to their <a href="https://taiko.mirror.xyz/0jc5XA5RVjOUNVdRdGmw9prlsC4deA1XgZJppmXh8rs">fifth testnet</a>, with plans to be live on mainnet by next year. Taiko is developing <a href="https://github.com/taikoxyz/zkevm-circuits">their own zk prover</a> closely based on the <a href="https://pse.dev/">PSE</a> implementation (similar to Scroll). Interestingly, Taiko is the only team in this article which is currently contemplating a design other than a single sequencer progressively decentralizing into a L2 blockchain. Taiko&#8217;s design is based on the concept of a <a href="https://ethresear.ch/t/based-rollups-superpowers-from-l1-sequencing/15016">Based Rollup as described by Justin Drake</a> - rather than having a permissioned validator set, anyone will be capable of submitting batches and proofs to Ethereum L1. This implementation means that the rollup effectively fully delegates sequencing to Ethereum L1, allowing it to automatically inherit the liveness and decentralization of Ethereum L1. However, it comes with an important disadvantage: there will be no &#8220;fast finality&#8221; confirmations offered by an L2 sequencer, meaning users can expect longer confirmation times for each transaction.&nbsp;Justin Drake has <a href="https://ethresear.ch/t/based-preconfirmations/17353/4">proposed &#8220;Based preconfirmations&#8221;</a> to provide probabilistic confirmations with a latency of only 100ms, though it is not close to production and the introduction of a separate system of &#8220;preconf promises&#8221; and &#8220;preconf tips&#8221; is likely to have implications for existing Ethereum tooling. This is an active area of research!</p><p>Taiko has stated their intention to be a <a href="https://taiko.mirror.xyz/w7NSKDeKfJoEy0p89I9feixKfdK-20JgWF9HZzxfeBo">Type 1 zkEVM from the outset</a>. They argue the compatibility differences introduced by other zkEVMs will be much worse than higher proof generation costs, which will come down anyway as the technology improves. Taiko&#8217;s client implementation is interesting - the core &#8220;execution client&#8221; is a modified Geth v1.13 (<a href="https://github.com/taikoxyz/taiko-geth">taiko-geth</a>). However, they are also maintaining their own &#8220;consensus client&#8221; (<a href="https://github.com/taikoxyz/taiko-client">taiko-client</a>), which handles communication with L1 and monitors the based sequencing process. By separating the L1 communication logic into the consensus client, they can stay close to upstream Ethereum execution clients.&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_!1gaC!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2403e015-c02f-4040-8371-1c004945b116_640x514.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!1gaC!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2403e015-c02f-4040-8371-1c004945b116_640x514.png 424w, https://substackcdn.com/image/fetch/$s_!1gaC!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2403e015-c02f-4040-8371-1c004945b116_640x514.png 848w, https://substackcdn.com/image/fetch/$s_!1gaC!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2403e015-c02f-4040-8371-1c004945b116_640x514.png 1272w, https://substackcdn.com/image/fetch/$s_!1gaC!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2403e015-c02f-4040-8371-1c004945b116_640x514.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!1gaC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2403e015-c02f-4040-8371-1c004945b116_640x514.png" width="390" height="313.21875" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2403e015-c02f-4040-8371-1c004945b116_640x514.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:514,&quot;width&quot;:640,&quot;resizeWidth&quot;:390,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!1gaC!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2403e015-c02f-4040-8371-1c004945b116_640x514.png 424w, https://substackcdn.com/image/fetch/$s_!1gaC!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2403e015-c02f-4040-8371-1c004945b116_640x514.png 848w, https://substackcdn.com/image/fetch/$s_!1gaC!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2403e015-c02f-4040-8371-1c004945b116_640x514.png 1272w, https://substackcdn.com/image/fetch/$s_!1gaC!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2403e015-c02f-4040-8371-1c004945b116_640x514.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>zkSync Era</h3><p>zkSync Era was launched in March 2023, and has been successful so far, with rumours around a forthcoming airdrop propelling its TVL to more than $500m. zkSync is a Type 4 zkEVM, as they are proving their own custom VM (eraVM) rather than attempting to a modified EVM directly. They are aiming to be &#8220;language level compatible&#8221; with Ethereum, and have provided a <a href="https://github.com/matter-labs/era-solidity">direct compiler from Solidity code to their custom VM</a>. They have made <a href="https://era.zksync.io/docs/reference/architecture/differences-with-ethereum.html">substantial changes</a> to the implementation of many critical EVM opcodes, as well as several changes to the compilation process, meaning developers often need to <a href="https://era.zksync.io/docs/reference/architecture/contract-deployment.html">modify their contracts or deployment scripts for deployment on zkSync Era</a>.</p><p>zkSync Era has its <a href="https://github.com/matter-labs/zksync-era">own custom client</a>, allowing them to implement non-EVM features like native account abstraction. In July 2023, they <a href="https://zksync.mirror.xyz/HJ2Pj45EJkRdt5Pau-ZXwkV2ctPx8qFL19STM5jdYhc">upgraded their prover to &#8220;Boojum&#8221;</a>, a STARK proof system which is then wrapped with a SNARK for on-chain verification, similar to Polygon zkEVM. zkSync Era requires fully on-chain data, but they plan to introduce &#8220;<a href="https://blog.matter-labs.io/zkporter-a-breakthrough-in-l2-scaling-ed5e48842fbf">zkPorter</a>&#8221; in future, which will allow users to choose between different data availability modes at different price points, similar to the <a href="https://starkware.co/resource/volition-on-starknet-your-data-your-choice/">Volition model proposed by StarkWare</a>.&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_!Wlbg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52d770eb-d67d-482f-a6fc-a169e6e5d045_720x590.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Wlbg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52d770eb-d67d-482f-a6fc-a169e6e5d045_720x590.png 424w, https://substackcdn.com/image/fetch/$s_!Wlbg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52d770eb-d67d-482f-a6fc-a169e6e5d045_720x590.png 848w, https://substackcdn.com/image/fetch/$s_!Wlbg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52d770eb-d67d-482f-a6fc-a169e6e5d045_720x590.png 1272w, https://substackcdn.com/image/fetch/$s_!Wlbg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52d770eb-d67d-482f-a6fc-a169e6e5d045_720x590.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Wlbg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52d770eb-d67d-482f-a6fc-a169e6e5d045_720x590.png" width="584" height="478.55555555555554" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/52d770eb-d67d-482f-a6fc-a169e6e5d045_720x590.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:590,&quot;width&quot;:720,&quot;resizeWidth&quot;:584,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Wlbg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52d770eb-d67d-482f-a6fc-a169e6e5d045_720x590.png 424w, https://substackcdn.com/image/fetch/$s_!Wlbg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52d770eb-d67d-482f-a6fc-a169e6e5d045_720x590.png 848w, https://substackcdn.com/image/fetch/$s_!Wlbg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52d770eb-d67d-482f-a6fc-a169e6e5d045_720x590.png 1272w, https://substackcdn.com/image/fetch/$s_!Wlbg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F52d770eb-d67d-482f-a6fc-a169e6e5d045_720x590.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h3>StarkNet</h3><p>StarkNet is one of the most ambitious projects in the Ethereum ecosystem: they are building a Type 4 rollup and ecosystem from scratch, including a new VM (<a href="https://github.com/starkware-libs/cairo-lang">CairoVM</a>), a new programming language (<a href="https://www.cairo-lang.org/">Cairo</a>), a new prover (<a href="https://starkware.co/resource/open-sourcing-the-battle-tested-stone-prover/">Stone</a>) and new clients (<a href="https://github.com/eqlabs/pathfinder">Pathfinder</a>, <a href="https://medium.com/starkware/papyrus-an-open-source-starknet-full-node-396f7cd90202">Papyrus</a>, <a href="https://github.com/NethermindEth/juno">Juno</a>). StarkNet progressively opened up over 2021 and 2022, and now has more than $150m in TVL, processing 10m+ transactions each month.&nbsp;</p><p>Building this new ecosystem from scratch is extremely challenging, but provides the opportunity for fundamental innovations in areas where the EVM has struggled (e.g. native account abstraction) and substantial performance improvements. Large parts of this toolchain have been tested extensively through StarkEx-based projects like Immutable X, dydx v3 and Sorare, which have been live since 2020 and have been widely adopted. </p><p>Initially, the StarkNet ecosystem explored language-level compatibility through projects like the <a href="https://github.com/NethermindEth/warp">Warp</a> Solidity &#8594; Cairo transpiler that I mentioned last year. However, <a href="https://medium.com/nethermind-eth/sunsetting-warp-a-farewell-to-the-solidity-to-cairo-transpiler-79e9fdab5f5a">Warp has now been sunset</a>, and the StarkNet ecosystem has instead resolved to fully commit to the new CAIRO toolset rather than aiming for any type of Solidity backwards compatibility. Now, they face the same challenge as non-EVM ecosystems like Solana or Sui - can you get a critical mass of developers to adopt your new tooling, or will the ubiquity of the EVM win out?&nbsp;</p><p>The exception to this is the work being done by the team at <a href="https://github.com/kkrt-labs/kakarot">Kakarot</a>, who are building a Type 2.5 EVM in CAIRO which will exist as a set of contracts on StarkNet. Via Kakarot, users will be able to deploy and interact with EVM contracts which have their code/state on StarkNet, allowing users to benefit from StarkNet&#8217;s performance while retaining EVM compatibility. As the underlying execution environment will still be StarkNet, this will sacrifice Ethereum tooling compatibility - but this may be an acceptable tradeoff for some projects. Kakarot is not yet production-grade, and the performance and tooling compatibility implications of this layered approach are not yet clear, but it&#8217;s an exciting attempt to bridge the gap between the various zkEVM types and indicates just how early we are in exploring the design space. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_ofL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a110500-48b7-42f2-8b80-fc1c1a237293_1178x780.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_ofL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a110500-48b7-42f2-8b80-fc1c1a237293_1178x780.png 424w, https://substackcdn.com/image/fetch/$s_!_ofL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a110500-48b7-42f2-8b80-fc1c1a237293_1178x780.png 848w, https://substackcdn.com/image/fetch/$s_!_ofL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a110500-48b7-42f2-8b80-fc1c1a237293_1178x780.png 1272w, https://substackcdn.com/image/fetch/$s_!_ofL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a110500-48b7-42f2-8b80-fc1c1a237293_1178x780.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_ofL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a110500-48b7-42f2-8b80-fc1c1a237293_1178x780.png" width="1178" height="780" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/4a110500-48b7-42f2-8b80-fc1c1a237293_1178x780.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:780,&quot;width&quot;:1178,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:73264,&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_!_ofL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a110500-48b7-42f2-8b80-fc1c1a237293_1178x780.png 424w, https://substackcdn.com/image/fetch/$s_!_ofL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a110500-48b7-42f2-8b80-fc1c1a237293_1178x780.png 848w, https://substackcdn.com/image/fetch/$s_!_ofL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a110500-48b7-42f2-8b80-fc1c1a237293_1178x780.png 1272w, https://substackcdn.com/image/fetch/$s_!_ofL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4a110500-48b7-42f2-8b80-fc1c1a237293_1178x780.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><h3>Bonus: Optimism</h3><p>For obvious reasons, Optimism is generally regarded as an exclusively optimistic-rollup-focused team. However, they have repeatedly stated their intention to support zk-proving as an option in future, and have been in <a href="https://www.theblock.co/post/240929/optimism-zk-proof-proposals">active discussions with several teams</a> who have offered contributions. Exciting zk-ecosystem projects like <a href="https://github.com/risc0/zeth">zeth</a> are now supporting Optimism blocks. However, we haven&#8217;t seen any formal timeline or design - perhaps there will be an exciting update in next year&#8217;s zkEVM review!</p><div><hr></div><p>As you can see, there is a huge diversity of approach between the various zkEVM teams. Even rollups that share a type are often adopting fundamentally different designs with their prover, client and sequencing mechanisms.&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_!lU05!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f71ee6b-d528-499e-9b77-e9a43439581e_634x430.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!lU05!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f71ee6b-d528-499e-9b77-e9a43439581e_634x430.png 424w, https://substackcdn.com/image/fetch/$s_!lU05!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f71ee6b-d528-499e-9b77-e9a43439581e_634x430.png 848w, https://substackcdn.com/image/fetch/$s_!lU05!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f71ee6b-d528-499e-9b77-e9a43439581e_634x430.png 1272w, https://substackcdn.com/image/fetch/$s_!lU05!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f71ee6b-d528-499e-9b77-e9a43439581e_634x430.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!lU05!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f71ee6b-d528-499e-9b77-e9a43439581e_634x430.png" width="634" height="430" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3f71ee6b-d528-499e-9b77-e9a43439581e_634x430.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:430,&quot;width&quot;:634,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:52707,&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_!lU05!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f71ee6b-d528-499e-9b77-e9a43439581e_634x430.png 424w, https://substackcdn.com/image/fetch/$s_!lU05!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f71ee6b-d528-499e-9b77-e9a43439581e_634x430.png 848w, https://substackcdn.com/image/fetch/$s_!lU05!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f71ee6b-d528-499e-9b77-e9a43439581e_634x430.png 1272w, https://substackcdn.com/image/fetch/$s_!lU05!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f71ee6b-d528-499e-9b77-e9a43439581e_634x430.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>There&#8217;s another very important way to compare these nascent zkEVMs - their actual configuration! Generally speaking, the architecture of each chain&#8217;s client and prover is more interesting to analyse, because it speaks to fundamental design decisions rather than application-level configuration which can easily be changed. However, if you&#8217;re an application developer, configuration details absolutely matter, so make sure you research each zkEVM&#8217;s block time, block gas limit, proof publication frequency, sequencer consensus mechanism and anything else which might impact your application&#8217;s UX!</p><p>The sum total of the above: a huge amount of development has taken place in 2023, across a wide variety of teams. So, if development is progressing, do we just need to wait? What do we still need to solve to see zkEVMs have substantial traction?</p><h2>What are the unsolved problems in zkEVM development?</h2><p>First, there is <strong>no standardised interface between clients and provers</strong>. Currently, every prover is only compatible with the client they were initially built with. You won&#8217;t be able to use Polygon zkEVM&#8217;s prover with any other Type 2/3 client. Ideally, any new prover or client should be compatible with as many existing provers/clients as possible. An EIP (e.g. the <a href="https://github.com/drinkcoffee/EIPs/blob/prover-client-api/EIPS/eip-75XXa.md">draft proposed here</a>) which encourages the various zkEVM teams to conform to a single interface is an important future step.&nbsp;</p><p>Understandably, most teams are currently prioritizing improving their own implementations rather than seeking compatibility with others. This is probably acceptable for now, but eventually we will want L2-sequenced zkEVMs in particular to use multi-client/prover setups to reduce the risk of major bugs. Additionally, standardizing the implementation of the &#8220;classic&#8221; type 2 features (e.g. Sparse Merkle Tree, Poseidon hash function instead of keccak) may help multiple provers use the same or similar clients. Reducing the number of &#8220;almost geth&#8221; clients will be a huge win for the ecosystem! A <a href="https://github.com/ethereum/pm/issues/885">standardisation initiative named &#8220;RollCall&#8221;</a> has been proposed, alongside a series of <a href="https://github.com/ethereum/RIPs">Rollup Improvement Proposals</a> (RIPs &#128128;), though it is unclear how much traction this has currently. </p><p>Second, these zkEVMs <strong>are almost exclusively single sequencer</strong>, which poses challenges for the decentralisation and security of these rollups. It is important to note that the prover acts only to ensure that the L1 &lt;&gt; L2 bridge is secure. Any external systems (such as CEXs) which rely on the L2 pre-confirmations are putting significant funds at risk by relying exclusively on the single sequencer - for many L2s today, a damaging hack is only one compromised sequencer key away. However, once you decentralise the sequencer, another set of challenges emerge (as you see from the Taiko description above!). Should you need to provide a zk-proof to L1 that L2 consensus was reached? What about liveness issues? What about MEV? Most single sequencer rollups are currently not exploiting MEV for brand/reputation/chain confidence reasons, but this may change in future.&nbsp;&nbsp;</p><p>Third, there is <strong>no standard framework for measuring zkEVM performance and cost</strong>. A lot of this article is focused on comparing the <em>potential</em> performance implications of various zkEVM designs, but currently very few zkEVM teams have published any <em>actual</em> performance specifications or tests. There are several separate components to &#8220;zkEVM cost&#8221;:&nbsp;</p><ul><li><p>the cloud compute cost of generating proofs (impacted by circuit efficiency)</p></li><li><p>the L1 cost of proof verification</p></li><li><p>the cost of data availability</p></li><li><p>the cost of sending messages from Lx &lt;&gt; Ly</p></li></ul><p>I should be able to create standardised tests for these areas and tabulate the results to help builders make more informed decisions - currently this is impossible. There&#8217;s nuance here: some prover implementations will be better than others at some types of transactions, some cost will depend on usage due to being able to amortise transaction costs over a batch. How these costs should be surfaced to users is also a big area of uncertainty (e.g. Immutable zkEVM is planning to cover publication costs for users in most cases, while Scroll has a <a href="https://docs.scroll.io/en/developers/transaction-fees-on-scroll/">complex L1 + L2 fee setup</a> to ensure each transaction is unit profitable). Additionally, many zkEVMs are likely to grapple with performance issues related to state growth - expanding Ethereum blockspace is not free! All of the above needs to be much more measurable/comparable than it is today.</p><p>Fourth, <strong>exit games remain poorly understood and ill-defined</strong> for most smart contract rollups. Self-custody is well defined on application-specific rollups like Immutable X - any asset you deposit into the L1 bridge should be retrievable even if the sequencer is fully offline or fully malicious. This is often referred to as an <a href="https://docs.starkware.co/starkex/spot/withdrawing_and_escaping_without_app_approval.html">&#8220;escape hatch&#8221;</a>.&nbsp; But what does this mean in the context of a smart contract rollup? What if your ETH is staked in a contract and shouldn&#8217;t be available anyway? Is it all about censorship resistance - do we need to guarantee the ability to force transactions? What level of data availability is acceptable for zkEVMs used for different purposes (e.g. gaming assets vs. DeFi)? We need consistent frameworks to communicate the actual failure conditions for users - <a href="https://l2beat.com/scaling/risk">L2 Beat has made a good start on this</a>!&nbsp;</p><p>Fifth, <strong>the relationship between zkEVMs and Ethereum L1 is still unclear. </strong>Between the first draft of this post and its final release, I was once again ninja&#8217;d by Vitalik releasing a <a href="https://notes.ethereum.org/@vbuterin/enshrined_zk_evm">blog post reflecting on &#8220;enshrined zkEVMs&#8221;</a>. The TL;DR is that the Ethereum client layer could have &#8220;enshrined&#8221; zk prover implementations which could be used to verify the execution of EVM blocks submitted from other sources (e.g. L2s). This could avoid each L2 zkEVM having to keep their zkEVM <em>provers</em> up to date (big win!) - they could piggy back off the work of other teams, including the core Ethereum client teams as a fully SNARKed Ethereum becomes a reality. So, should I read proposals for &#8220;enshrined zkEVMs&#8221; as a deviation from Ethereum&#8217;s L2-focused scaling roadmap, bringing L2-captured value back into the mothership?&nbsp;&nbsp;</p><p>Well, not really. L2s would still need their own sequencers to provide fast confirmations (critical in domains like gaming), and Vitalik&#8217;s proposed design would only support zkEVMs with fully on-chain data. Most L2s would almost certainly wish to preserve independence for monetization reasons, pointing to an important tradeoff for the Ethereum ecosystem. L2s are critical for scaling Ethereum block space - but their incentives (and BD teams) may not always be aligned with Ethereum. </p><p>Lastly, <strong>multiple zkEVMs will continue the fragmentation of users and liquidity</strong>, producing a poor user experience. Today, each additional Ethereum L2 continues to fragment state and liquidity - if you have 2 ETH on Arbitrum, that ETH is challenging to access on any other L2. In my view, this is by far the best argument for monolithic blockchains, where composability is vastly improved and users don&#8217;t have to juggle balances across multiple chains. With the current proliferation of &#8220;L2 toolkits&#8221; (e.g. Polygon CDK, Arbitrum Orbit, OP Stack), it has never been easier to spin up a chain, but this comes at the cost of even more fragmentation.&nbsp;</p><p>For this model of multiple L2s to be successful long term, we will need to abstract individual chains and balances away from users in most cases. This is one of the strongest arguments for validity proofs over fraud proofs - instant proof verification for rapid bridging between chains. However, even with a strong bridging/interoperability framework, there are still a huge number of user experience challenges to solve. At Immutable, our plan is to tackle this head on through our vertical integration and Immutable Passport at the wallet layer. More to come on this soon!</p><h2>Summary</h2><p>2023 has been simultaneously a banner year for zkEVMs in terms of development progress and a year of preparation when it comes to actual adoption. 2024 will be the first year where Type 1 and 2 zkEVMs are actually ready for production usage, but we realistically won&#8217;t have them until Q3/Q4 at the earliest - and we still need to solve many performance problems to get there!</p><p>I do want to make it very clear that the main problem for zkEVMs to solve in 2024 is <em>not</em> a technology problem (though we clearly still have some), but a value problem - can we create exciting applications for users on this next generation of L2s? We need both amazing protocol developers and amazing application developers!</p><p>Shameless plug: if you&#8217;d like to work at the intersection between crafting the future of zkEVM tech and actually driving application adoption by helping developers build mainstream-ready web3 games, we&#8217;re <a href="https://www.immutable.com/jobs">hiring at Immutable</a>!</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.alexconnolly.xyz/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! Subscribe if you are interested in more content like this.</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>]]></content:encoded></item></channel></rss>