<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Tim Beiko</title>
        <link>https://paragraph.com/@timbeiko</link>
        <description>undefined</description>
        <lastBuildDate>Fri, 15 May 2026 10:43:43 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Tim Beiko</title>
            <url>https://storage.googleapis.com/papyrus_images/8c427049a204ae7c482a6005681348edac2caad489971cc1d0c48a79613d442a.png</url>
            <link>https://paragraph.com/@timbeiko</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[AllCoreDevs 2024 Recap & 2025 Outlook]]></title>
            <link>https://paragraph.com/@timbeiko/allcoredevs-2024-recap-2025-outlook</link>
            <guid>qfG8GsfYhPkyyd3TzU90</guid>
            <pubDate>Sat, 28 Dec 2024 18:19:27 GMT</pubDate>
            <description><![CDATA[As promised in my recent Pectra update, here’s a follow-up post covering this year’s changes to AllCoreDevs and what’s on the horizon for 2025 and beyond!ACD Process ImprovementsThe first small but important process change of 2024 came with Reth publishing their team’s preferences for the Pectra hard fork. Other execution and consensus layer client teams quickly adopted this written approach. While we had previously attempted to gather async input on upgrade scoping, Pectra marked the first t...]]></description>
            <content:encoded><![CDATA[<p>As promised in my <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://tim.mirror.xyz/emiQJfRCb5sdnY018t-CeFDIye_Ehn4mieXI6kn5aXA">recent Pectra update</a>, here’s a follow-up post covering this year’s changes to AllCoreDevs and what’s on the horizon for 2025 and beyond!</p><h1 id="h-acd-process-improvements" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>ACD Process Improvements</strong></h1><p>The first small but important process change of 2024 came with Reth <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.paradigm.xyz/2024/01/ethereum-2024">publishing</a> their team’s preferences for the Pectra hard fork. Other <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/997#issuecomment-2045893316">execution</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.chainsafe.io/lodestar-pectra-roadmap-vision/">consensus</a> layer client teams quickly adopted this written approach. While we had previously attempted to gather async input on upgrade scoping, Pectra marked the first time nearly everyone shared their preferences in writing.</p><p>These individualized statements struck a nice balance between efficiency and nuance. By moving parts of the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Rough_consensus">“rough consensus”</a> formation outside of calls, we could focus synchronous time on EIPs that either had the most buy-in or were most contentious.</p><p>During both the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/allcoredevs-network-upgrade-ethmagicians-process-improvements/20157">core dev interop</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/blob/master/Breakout-Room-Meetings/DevconSEA/R%26D-workshop/AllCoreDevs-Improvements.md">pre-Devcon R&amp;D workshop</a>, contributors discussed potential improvements to network upgrade coordination. These conversations led, among other things, to better defining the various stages of the process and their requirements.</p><h2 id="h-eip-7723-network-upgrade-inclusion-stages" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-7723: Network Upgrade Inclusion Stages</strong></h2><p>Anyone can propose an EIP for inclusion in a network upgrade. Historically, though, the process was fairly informal. Proposals either came as AllCoreDevs agenda items or, more recently, in the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/pectra-network-upgrade-meta-thread/16809">Ethereum Magicians “Upgrade Meta” threads</a>.</p><p>Once an EIP gained enough support, it would generally be marked as <code>Considered for Inclusion (CFI)</code>, a term inspired by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/bitcoin/bitcoin/blob/master/CONTRIBUTING.md#conceptual-review">Bitcoin’s “Concept ACK”</a>. This signals to EIP authors that their proposal is under serious consideration by client teams, even if technical details may still need to be figured out.</p><p>Since The Merge, devnets have played a critical role in testing client interoperability, yet their scope wasn’t tightly coupled with EIP inclusion stages. While <code>Included</code> EIPs in a network upgrade were tested on devnets, there was no formal criteria for adding <code>CFI</code>’d proposals to them.</p><p>This is largely why Pectra ended up split in two forks: we <code>CFI</code>’d more EIPs than we could concurrently implement and test.</p><p>Relatedly, EIP rejections were always awkward, as there was no formal way to signal them. They typically only happened implicitly, as a hard fork was finalized: EIPs that were not <code>Included</code> got dropped from the final specs. In rare cases, some <code>Included</code> EIPs were removed before mainnet deployment, typically due to security considerations.</p><p>To improve on this, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7723">EIP-7723</a> formally defines five network upgrade inclusion stages for EIPs, and how they relate to devnets:</p><ul><li><p><strong>Proposed for Inclusion (PFI):</strong> Anyone can open a PR to add their EIP to a given fork’s Meta EIP, creating a clear record of all proposals up for consideration. Here’s a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/EIPs/pull/9163">recent example</a>.</p></li><li><p><strong>Considered for Inclusion (CFI):</strong> EIPs that client teams feel should belong in the network upgrade and feel confident they can implement in <em>one of the upgrades’ devnets</em> are moved to <code>CFI</code>.</p></li><li><p><strong>Scheduled for Inclusion (SFI):</strong> EIPs that client teams want to include in a network upgrade and implement in <strong><em>the next devnet</em></strong> are moved to <code>SFI</code>. Engineering bandwidth thus constrains how many EIPs can be moved to <code>SFI</code>.</p></li><li><p><strong>Declined for Inclusion (DFI):</strong> EIPs that client teams want to reject from <em>a specific network upgrade</em> are moved to <code>DFI</code>. This does <strong>not</strong> imply the EIP is rejected from all future upgrades. An EIP champion can propose a previously <code>DFI</code>’d EIP for a future upgrade.</p></li><li><p><strong>Included:</strong> Once a network upgrade has been activated on the Ethereum mainnet, all EIPs that were part of the upgrade are marked as <code>Included</code>. By default, this should be the list of <code>SFI</code>’d EIPs, but in rare cases of last-minute removals, the final <code>Included</code> list may differ.</p></li></ul><p>Reading through EIP-7723 in full, you’ll notice the language is fairly permissive. There are many <code>MAY</code>s and few <code>MUST</code>s. This is by design: the intention is for these norms to help facilitate the process, without slowing it down bureaucratically. It feels like the right level of formality for <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/TimBeiko/status/1868040189588963389">“mature experimental” tech</a>!</p><h2 id="h-non-core-eips-inclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Non-Core EIPs “Inclusion”</strong></h2><p>Another small but consequential change to network upgrade planning (which I still need to formally define <em>somewhere</em> 😅) that came out of our pre-devcon workshop is to include non-Core EIPs as part of network upgrade Meta EIPs.</p><p>Core EIPs require all nodes on the network to activate them at the same time. For example, if an EIP updates the gas price for an opcode from X to Y, all nodes need to activate the EIP on the same block to stay in consensus.</p><p>However, several EIPs, such as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/networking">Networking ones</a>, don’t require simultaneous activation by all nodes. While there’s value in allowing clients to roll things out at their own pace, we’ve historically struggled to prioritize non-Core EIPs that require broader support, as our development process centers around network upgrades composed of Core EIPs.</p><p>To better surface these EIPs in our prioritization, we will include non-Core EIPs in network upgrade Meta EIPs. We’d already done this <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7607#eips-scheduled-for-inclusion">with PeerDAS</a> due to its importance and agreed we should generalize the practice.</p><p>This will ensure that they explicitly focus on the most impactful protocol changes, whether or not they require a hard fork. The expectation for “including” non-Core EIPs in network upgrade specs is that, by the time of the network upgrade, all clients have the EIP deployed, even though teams may activate it at different times leading up to the deadline.</p><h1 id="h-fusaka-and-gamsterdam" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Fusaka &amp; G*/Amsterdam</strong></h1><p>With process updates out of the way, let’s look at what is being planned for after the Pectra upgrade. For a deeper dive into Pectra, see my <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://tim.mirror.xyz/emiQJfRCb5sdnY018t-CeFDIye_Ehn4mieXI6kn5aXA#pectra">previous post</a>.</p><h2 id="h-fusaka" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Fusaka</strong></h2><p>The <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7607">Fulu/Osaka network upgrade, Fusaka</a>, follows Pectra. It includes the two major features that were removed from Pectra: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7594">PeerDAS</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7692">EOF</a>.</p><p>PeerDAS introduces data availability sampling, extending EIP-4844’s ephemeral data and laying groundwork for full sharding. Instead of downloading every blob, nodes store only a subset and periodically verify samples from others. This approach lets the network increase blob throughput while maintaining similar bandwidth requirements for nodes. For a deeper dive into PeerDAS, see <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=toR2UKzE_zA&amp;t=2s">Francesco’s Devcon SEA talk</a>.</p><p>EOF (EVM Object Format) overhauls the EVM to provide a clearer bytecode structure, improve efficiency, and enable deploy-time code validation. By removing features like dynamic JUMPs and code/gas observability, it becomes easier to statically analyze and verify EOF contracts. There’s a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://evmobjectformat.org/">full website</a> outlining the technical details and Danno Ferrin gave a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=X2mlptWzphc">Devcon SEA talk</a> outlining the EIP’s history and motivations.</p><p>Both of these EIPs are currently being tested on independent devnets. Once Pectra is shipped, these will be combined into a first Fusaka devnet. As mentioned earlier, we’ll want to see EOF + PeerDAS running smoothly before <code>SFI</code>ing more EIPs for Fusaka!</p><h2 id="h-gamsterdam" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>G*/Amsterdam</strong></h2><p>When planning the Pectra upgrade, core developers decided to preemptively <code>CFI</code> the Ethereum’s transition from Merkle to Verkle trees in the following fork. A set of Verkle-related EIPs were therefore formally marked as <code>Considered for Inclusion</code> in the Fusaka upgrade.</p><p>So, when Pectra was split in two upgrades, PeerDAS and EOF were moved to Fusaka and Verkle was pushed to the fork after that, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7773">Amsterdam</a>. Because Verkle only affects the execution layer, specs for the consensus layer part of the fork were not drafted.</p><p>Following consensus layer convention, we should expect the CL part of the fork to be named after a star beginning with “G”. If we choose “Gl”, then we’ll have an elegant portmanteau: Glamsterdam 🪩</p><p>To better understand both the rationale for the Verkle transition and its current development status, see <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://verkle.info/">verkle.info</a> or <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=f0e3ulrO9Ik">Guillaume Ballet’s Devcon talk</a>.</p><h1 id="h-the-social-layer" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>The Social Layer</strong></h1><p>Last but not least, 2024 has been a big year for Ethereum’s social layer. While no one can singlehandedly fill the shoes of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/peter_szilagyi/status/1857703746236788974">legends</a> saying <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/djrtwo/writing/blob/main/docs/2024-09-13_goodbye-for-now.md">“goodbye for now”</a>, Ethereum’s L1 R&amp;D community has grown resilient enough to not depend on any specific individual.</p><p>Better still, thanks to multiple client teams and R&amp;D champions spread across the community, a myriad of initiatives can advance in parallel. Many of these are captured by breakout rooms, such as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/1222">EPBS</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/1210">Inclusion Lists</a>,  <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/1205">EOF</a>,  <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/1204">EVMMAX</a>,  <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/1203">Stateless</a>,  <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/1201">RollCall</a>,  <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/1202">PeerDAS</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/1181">Preconfirmations</a> or <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/1118">Account Abstraction</a>. Beyond these, we’ve seen progress on topics ranging from <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://stabilitynow.box/">SSZ</a> to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://notes.ethereum.org/M41Oj3WyRVSC36Rr0c-Tjg">History Expiry</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=bOTdFBjo0OE">Issuance</a>, as well as significant <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=RhlKmJqk0go">new</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=sMPe1Ae99aA">client-specific</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=GhEhzE9SFqY">features</a>, and, of course, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=lRqnFrqpq4k">Beam Chain</a>.</p><p>There are also <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/playlist?list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F">many</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.galaxy.com/insights/podcasts/infinite-jungle/">excellent</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://dba.xyz/ethereums-north-star/">resources</a> helping the community make sense of this constellation of possibilities. And, last but not least, a growing number of people and projects who have <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://dune.com/protocolguild/protocol-guild#donations">pledged their support</a> to core contributors ❤️‍🔥</p><p>In many respects, we’ve reached <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vitalik.eth.limo/general/2019/12/26/mvb.html">functional escape velocity</a>. At this point, no one can single-handedly direct it, but all of us can nudge Ethereum towards a better endgame.</p><p>If you’ve read all of this, <em>you</em> are the social layer.</p><p>Thank you for your contributions and see you in 2025!</p>]]></content:encoded>
            <author>timbeiko@newsletter.paragraph.com (Tim Beiko)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/8d29e06140d37f5f852e341d93120bbd3c35fd1c4831e0d9dda2aae201a030b2.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[AllCoreDevs Update 017: Pectra 🌌]]></title>
            <link>https://paragraph.com/@timbeiko/allcoredevs-update-017-pectra</link>
            <guid>tQv18KJMUscEq06gEjvO</guid>
            <pubDate>Mon, 23 Dec 2024 00:56:52 GMT</pubDate>
            <description><![CDATA[As we close out the year, and with 12 months since the last one (!), I’m overdue for another AllCoreDevs update. This post details the evolution and scope of the Pectra network upgrade. Expect a follow-up 🔜 covering what’s after Pectra, as well as ACD’s evolution over the past year!PectraThis time last year, we began seriously discussing the scope for the Prague/Electra network upgrade, eventually portmanteaued into “Pectra”. Through the first few months of the year, as Dencun went live with...]]></description>
            <content:encoded><![CDATA[<p>As we close out the year, and with 12 months since the last one (!), I’m overdue for another AllCoreDevs update. This post details the evolution and scope of the Pectra network upgrade. Expect a follow-up 🔜 covering what’s after Pectra, as well as ACD’s evolution over the past year!</p><h1 id="h-pectra" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Pectra</strong></h1><p>This time last year, we began <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/pectra-network-upgrade-meta-thread/16809#dec-19th-update-8">seriously discussing</a> the scope for the Prague/Electra network upgrade, eventually portmanteaued into “Pectra”.</p><p>Through the first few months of the year, as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2024/02/27/dencun-mainnet-announcement">Dencun went live</a> without issues, client teams came to consensus on an initial set of EIPs for the upgrade, including <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-2537">BLS precompiles</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3074">EIP-3074</a>, an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7251">increase to validators’ </a><code>MAX_EFFECTIVE_BALANCE</code> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-2935">several</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-6110">other</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7002">protocol</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7549">improvements</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7685">.</a></p><p>These EIPs served as the target for our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2024/05/22/nyota-interop-recap">Nyota interop event</a>. Over 5 days, ~120 attendees from client and research teams came together in Kenya to launch over 100 devnets to test Pectra, PeerDAS, Verkle, SSZ, EOF and more. 80% of the attendees said the week was one of their most, if not <em>the</em> most, productive of the past year! After interop, teams felt emboldened to think bigger… perhaps too big 😅</p><p>Even prior to the event, it was clear that parts of Pectra had to be rethought, most notably EIP-3074, which eventually got replaced by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7702">EIP-7702</a>. After making more progress than expected on PeerDAS and EOF in Africa, teams felt confident they could bundle both changes alongside the already ambitious Pectra. By mid-June, Pectra had grown to include <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/EIPs/commit/b530fb418ee58043323afa898c2f0466da7b7515">20 EIPs</a>, with more still under consideration.</p><p>As we spent the summer working on implementations, it became clear that bundling all of this in a single fork would be unworkable. In September, we decided to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@ralexstokes/rJVuKtlpR">split the fork</a>, even though there were concerns that moving EOF and PeerDAS out of Pectra would lead these important features to also be delayed.</p><p>PeerDAS’s removal from Pectra <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.google.com/document/d/19jZcm5CgWM12Eqg1HRwG_ppd1EL9tduheckBmoFBCNM/edit?pli=1&amp;tab=t.0">created urgency</a> around considering a blob count increase for the fork. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/on-solo-staking-local-block-building-and-blobs/20540">Several</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/blob-eips-and-minimum-validator-requirements/20679">research</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/block-arrivals-home-stakers-bumping-the-blob-count/21096">posts</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/bandwidth-availability-in-ethereum-regional-differences-and-network-impacts/21138">analyzed</a> the issue.</p><p>After months of back and forth, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/EIPs/pull/9094/files">teams eventually agreed</a> to double the blob target from 3 to 6 per block, and raise the maximum from 6 to 9. To prevent potential networking issues caused by large blocks, EIP-7623 was also included in Pectra. On the last AllCoreDevs of 2024, with <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/EIPs/pull/9164/files?short_path=ecfd0b2#diff-ecfd0b2a30ff0aa53b70f57df1b431bade81bf17b36998de841c61faefa1f7c7">the inclusion of EIP-7840</a>, the final adjustments to Pectra’s scope were completed!</p><p>Now, let’s unpack exactly <em>what</em> is in this network upgrade.</p><h2 id="h-eip-7600" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-7600</strong></h2><p>First, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7600">EIP-7600</a> defines the feature set for Pectra. While there have been <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7568">exceptions</a>, most network upgrades have a Meta EIP to track the individual EIPs they include. For Pectra, these are:</p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-2537">EIP-2537: Precompile for BLS12-381 curve operations</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-2935">EIP-2935: Save historical block hashes in state</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-6110">EIP-6110: Supply validator deposits on chain</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7002">EIP-7002: Execution layer triggerable exits</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7251">EIP-7251: Increase the MAX_EFFECTIVE_BALANCE</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7549">EIP-7549: Move committee index outside Attestation</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7623">EIP-7623: Increase calldata cost</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7685">EIP-7685: General purpose execution layer requests</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7691">EIP-7691: Blob throughput increase</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7702">EIP-7702: Set EOA account code</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7840">EIP-7840: Add blob schedule to EL config files</a></p><ul><li><p><em>Note:</em> still <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/EIPs/pull/9164">not merged</a> in the Meta EIP.</p></li></ul></li></ul><p>While I encourage you to read all of the actual EIPs (many of them are mostly words and not code!), here is a layman’s summary for each one.</p><h2 id="h-eip-2537" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-2537</strong></h2><p>This EIP, first proposed for <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2021/03/08/ethereum-berlin-upgrade-announcement">Berlin</a> in 2020, holds the record of being considered for the most upgrades before its eventual inclusion. It introduces BLS12-381 cryptographic operations as precompiles on Ethereum’s execution layer. This curve is notably used by validators on the consensus layer, meaning that its inclusion allows smart contracts to validate proofs of validator signatures.</p><p>This is especially useful for use cases such as liquid staking or preconfirmations. Even beyond that, BLS provides higher security and cheaper verification than existing cryptographic primitives on Ethereum’s execution layer.</p><h2 id="h-eip-2935" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-2935</strong></h2><p>This EIP sets the stage for Ethereum’s eventual transition to statelessness by storing the last 8192 block hashes in a contract. This will allow block hashes to be included in witnesses provided to stateless clients. Additionally, the EIP extends the range of block hashes available to applications from 256 (via the <code>BLOCKHASH</code> opcode) to 8192 in the 2935 system contract at <code>0x0aae40965e6800cd9b1f4b05ff21581047e3f91e</code>.</p><h2 id="h-eip-6110" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-6110</strong></h2><p>To account for potential proof-of-work reorgs, validator deposits are subject to a 2048 block wait prior to entering the Beacon Chain activation queue. Since The Merge, this has been unnecessary, as the execution layer stays in sync with the consensus layer each block. EIP-6110 updates the deposit mechanism to remove the delay between deposits being executed on the EL and added to the CL’s activation queue.</p><h2 id="h-eip-7002" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-7002</strong></h2><p>Validators have two keys: an “active” BLS key, which is regularly used to sign attestations and other messages, and a withdrawal key, which is either a placeholder BLS key or the destination Ethereum address for the funds. Historically, only the active BLS key could initiate exits. EIP-7002 allows validators with Ethereum addresses as withdrawal credentials to initiate withdrawals.</p><p>This enables more trustless delegated staking arrangements, either via onchain pools or other custody setups. Today, delegators need to rely on the validator operator to initiate a withdrawal. With 7002, the controller of the withdrawal credentials can trustlessly exit their validators.</p><h2 id="h-eip-7251" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-7251</strong></h2><p>This EIP raises the <code>MAXIMUM_EFFECTIVE_BALANCE</code> for validators from 32 ETH to 2048 ETH. This allows smaller validators to compound their rewards. Today, if a validator’s balance has increased beyond 32 ETH, the additional ETH is ignored when calculating rewards. With EIP-7251, rewards will compound up to 2048 ETH. The EIP also allows existing validators sharing a withdrawal address to consolidate their validators, hopefully reducing bandwidth usage on the network. For a deeper dive into the EIP, see <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=EwW6dNi9VCY">Paul Harris’s Devcon Talk</a>.</p><h2 id="h-eip-7549" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-7549</strong></h2><p>When validators vote on blocks, they currently sign three pieces of information: their vote on finality (FFG vote), their vote on the current chain head (LMD-GHOST vote), and their committee assignment. By removing committee assignments from what gets signed, validators making the same votes can combine their signatures. This reduces the work needed to cryptographically verify consensus by about 60x!</p><p>This change has no impact on security - it just makes the same security guarantees more efficient to verify. This is especially important for light clients and future zero-knowledge proofs of consensus.</p><h2 id="h-eip-7623" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-7623</strong></h2><p>The biggest factor in the size of an Ethereum block is how much <code>CALLDATA</code> it uses. While the vast majority of Ethereum transaction senders use a relatively small amount of data relative to the computation they execute, a small subset of transactions are extremely <code>CALLDATA</code>-heavy. In the worst cases, data-heavy blocks can severely disrupt the peer-to-peer network.</p><p>This EIP introduces a two-tiered gas price scheme for <code>CALLDATA</code>, based on how much gas a transaction spends on computation vs. data. By doing so, it effectively applies higher costs to extremely data-heavy transactions while leaving the vast majority of end user ones unaffected. An <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/analyzing-eip-7623-increase-calldata-cost/19002">ethresear.ch post</a> by the author goes into more detail here.</p><h2 id="h-eip-7685" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-7685</strong></h2><p>This EIP extends execution layer block headers with a new <code>requests_hash</code> field to communicate information from execution layer system contracts, used in EIPs 2935, 4788, 6110 and 7002, with the consensus layer. In essence, this sets up a universal “request bus” for the execution layer to pass data to the consensus layer. The EIP is intentionally minimal, specifying only the base mechanism for storing and verifying requests, so that it can hopefully be used in all future similar cases.</p><h1 id="h-eip-7691" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">EIP-7691</h1><p>The blob increase! This EIP raises the per-block blob target from 3 to 6 and its maximum from 6 to 9, increasing Ethereum’s blob capacity by 2x! As previously mentioned, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/on-solo-staking-local-block-building-and-blobs/20540">several</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/blob-eips-and-minimum-validator-requirements/20679">research</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/block-arrivals-home-stakers-bumping-the-blob-count/21096">posts</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/bandwidth-availability-in-ethereum-regional-differences-and-network-impacts/21138">analyzed</a> whether this could be done while maintaining reasonable node requirements. Including EIP-7623 was critical in bounding the worst case block sizes to allow for an increase in their average sizes with this EIP.</p><h2 id="h-eip-7702" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-7702</strong></h2><p>As mentioned earlier, this EIP is the successor to EIP-3074. Its design was the result of extensive discussions between client teams, account abstraction researchers, wallet maintainers and application developers. In short, the EIP allows EOAs (Externally Owned Accounts) to execute code stored at a delegated address, effectively turning it into a smart-wallet for the duration of a transaction.</p><p>Much has been written about 7702. To better understand the design and its implication, see a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=_k5fKlKBWV4">deep dive</a> by one of the authors, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=D48J5y_Zqww">this panel</a> on how the EIP affects wallets, or one of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://safe.global/blog/eip-7702-smart-accounts-ethereum-pectra-upgrade">the</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=FYanFF-yU6w">many</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://viem.sh/experimental/eip7702">explainers</a> for it. You can even try a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.ithaca.xyz/writings/exp-0002">live demo</a>!</p><h2 id="h-eip-7840" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-7840</strong></h2><p>EIP-7840 replaces a previous proposal, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7742">EIP-7742</a>, that tried to decouple blob counts entirely from the execution layer. This would have allowed consensus layer-only forks to increase the blob count. After getting deeper in their implementations, teams realized that the blob count could not easily be abstracted from the execution layer.</p><p>Instead, EIP-7840 formalizes how EL clients will track the evolving blob target/maximum across forks in their config files, replacing EIP-7742’s approach of decoupling. This ensures the execution layer reliably references each fork’s blob constraints. In a scenario where the consensus layer was ready to raise the blob count and the execution layer needed to follow, all clients would need is a “one line change” in their genesis configurations.</p><h1 id="h-next-steps" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Next Steps</strong></h1><p>Even with its reduced scope, Pectra is still shaping up to be one of the largest upgrades to Ethereum in history. It’s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://x.com/TimBeiko/status/1870977653475532862">hard to believe</a> that only 8 months ago we didn’t even have blobs live! With the feature set for the upgrade now finalized, teams have a more stable implementation target to kick off the year.</p><p>It’s hard to predict timelines, but hopefully after <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://notes.ethereum.org/@ethpandaops/pectra-devnet-5">devnet-5</a>, we only have another devnet or two before moving to testnet forks. As always, security remains the top priority. If the devnets or other testing reveals issues, teams will of course address them before moving forward.</p><p>Until then, expect another ACD update covering post-Pectra updates, AllCoreDevs process changes and more 🔜</p>]]></content:encoded>
            <author>timbeiko@newsletter.paragraph.com (Tim Beiko)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/af7b0d4b31ed0529ff44a23f308e79d4db0ca92551550d0efa69842a5293f865.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Protocol Guild Pledge]]></title>
            <link>https://paragraph.com/@timbeiko/protocol-guild-pledge</link>
            <guid>yw9QA7UcCmSoDIM1meje</guid>
            <pubDate>Tue, 30 Jan 2024 22:10:38 GMT</pubDate>
            <description><![CDATA[Important caveats: This piece assumes context about Protocol Guild and narrowly focuses on its economic implications. For an introduction to PG, see Cheeky Gorilla’s EDCON talk. For a more philosophical read on its role, see Trent Van Epps’s article on Capital and Enclosure in Software Commons.A rough, quantitative framing of Protocol Guild’s mission is to make contributing to Ethereum L1 R&D economically rational on a risk-adjusted basis, while avoiding capture. With our pilot concluded and ...]]></description>
            <content:encoded><![CDATA[<p><strong><em>Important caveats:</em></strong> <em>This piece assumes context about Protocol Guild and narrowly focuses on its economic implications. For an introduction to PG, see </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=ZhopXK6haL8"><em>Cheeky Gorilla’s EDCON talk</em></a><em>. For a more philosophical read on its role, see Trent Van Epps’s article on </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://trent.mirror.xyz/GDDRqetgglGR5IYK1uTXxLalwIH6pBF9nulmY9zarUw"><em>Capital and Enclosure in Software Commons.</em></a></p><hr><p>A rough, quantitative framing of Protocol Guild’s mission is <strong>to make contributing to Ethereum L1 R&amp;D economically rational on a risk-adjusted basis, while avoiding capture</strong>. With our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://protocol-guild.readthedocs.io/en/latest/5-initial-pilot.html#">pilot concluded</a> and<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/HausDAO/protocol-guild-contracts?tab=readme-ov-file#protocol-guilds-v2-architecture-wip"> PGv2 launching soon</a>, now feels like a good time to articulate how and why we can and should get there. Let’s call this the <strong>Protocol Guild Pledge</strong>!</p><p>In the first part of this post, I’ll unpack what I mean by “Ethereum L1 R&amp;D”, “economically rational”, “risk adjusted basis” and “avoiding capture”. Then, I’ll expand on the Protocol Guild Pledge (PGP, for short), arguing that a norm of <strong>projects with native tokens donating 1% of them to Protocol Guild is sufficient to provide sustainable funding for Ethereum L1 R&amp;D long-term</strong>.</p><hr><h3 id="h-ethereum-l1-randd" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Ethereum L1 R&amp;D</strong></h3><p>Ethereum is developed and maintained by a large set of core contributors, with expertise ranging from distributed systems, to cryptography, devops, cat herding and more. They collaborate in the open to define &amp; deliver Ethereum’s complex technical roadmap, while ensuring the security of the network is never compromised. Participation is permissionless — anyone can just show up and start contributing! — which has many benefits, but makes defining the set of “core contributors” a notoriously hard problem.</p><p>Organizations are at best proxies with (often worthwhile!) overhead, and individuals “doing the work” often have the least bandwidth for and interest in self-promotion. <strong>Protocol Guild (PG) thus aims to make the set of Ethereum L1 R&amp;D contributors directly legible onchain.</strong> Using a time-weighted list and clear membership criteria, PG provides an continually up-to-date view of who is currently contributing to the protocol, and for how long they have been doing it.</p><h3 id="h-economically-rational" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Economically Rational</strong></h3><p>Working on Ethereum is incredibly exciting and, in my experience, a deep sense of mission permeates the core development community. Funding for protocol R&amp;D work is also in a much healthier place than it was a few years ago. That said, Ethereum core devs and researchers are in high demand: everyone working on Ethereum L1 could likely earn significantly more by doing something else. Even with a reasonable salary, as the opportunity cost of continuing to work on L1 grows, maintainers rationally start considering other options. Relying exclusively on passion, or <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/josephdelong/status/1235979765879844864">status</a>, as a long term strategy to attract and retain core contributors puts Ethereum at risk of ending up in a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.explainxkcd.com/wiki/index.php/2347:_Dependency">“guy from Nebraska”</a> situation, where only a small set of (relatively) underpaid maintainers are responsible for infrastructure securing billions in value.</p><h3 id="h-risk-adjusted-basis" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Risk-Adjusted Basis</strong></h3><p>While there are a number of more lucrative opportunities for Ethereum core contributors out there, an important caveat is that many of them involve higher risk! This is an important distinction: rewards for contributing to Ethereum L1 should be calibrated to the relative risk of doing so. Starting a successful company as a founding engineer will always be more profitable than being one of X00 Ethereum L1 contributors, but the odds of that company failing are much higher.</p><p>Protocol Guild should <strong><em>not</em></strong> aim to match the expected rewards of riskier endeavors, but instead close the “gap” that currently exists between working on Ethereum L1 and projects slightly farther out on the risk curve, which can offer disproportionately higher rewards. Visually, PG can be thought of as the yellow arrow below, “lifting” the Ethereum L1 R&amp;D cloud on the Reward axis, to bring it back in line with everything else:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/cfa48efcc1ca0eb78f5e0a8fe23dd5433ec5db10e41b71cb6e91f9bda5a96dcb.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h3 id="h-avoiding-capture" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Avoiding Capture</strong></h3><p>Aligning the risk/reward of L1 R&amp;D work with the rest of the ecosystem is necessary to attract and retain high quality contributors. However, it’s critical to consider the impact of additional funding on incentive alignment. We want to prevent scenarios where a deep-pocketed actor can single handedly exert influence over a large portion of maintainers.</p><p>While this risk can never be fully eliminated and Protocol Guild isn’t necessary for external actors to try and influence protocol maintainers, PG being fully onchain at least provides transparency. Anyone can audit who sent what to its contracts to assess whether a single donor or asset is overrepresented. In such a scenario, other donors can then step in to equalize things :-)</p><p>By sharing funding expectations across the ecosystem, we reduce both potential influence from, and excessive reliance on, a small number of donors. As Trent explained in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://trent.mirror.xyz/GDDRqetgglGR5IYK1uTXxLalwIH6pBF9nulmY9zarUw">a recent article</a>, with a diverse donor set, Protocol Guild may even be able to shield protocol development from the pressures of commercial entities who currently employ most maintainers.</p><p>Lastly, while this should go without saying, let me be explicit: <strong>donors should never expect anything beyond the continued support and development of the Ethereum protocol as a result of their contribution</strong>. In other words, donating to Protocol Guild is not a way to shift core contributors’ focus to a specific initiative.</p><p>With definitions out of the way, let’s now dive into the Protocol Guild Pledge!</p><hr><h1 id="h-protocol-guild-pledge-1percent-of-native-tokens-to-fund-core-development" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Protocol Guild Pledge: 1% of Native Tokens to Fund Core Development</strong></h1><h3 id="h-why-tokens" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Why Tokens?</strong></h3><p>In the earlier diagram, most of the gap in rewards between the white “Ethereum L1 R&amp;D” cloud and others is due to the expected value of tokens in compensation packages, not differences in base salary.</p><p>While no token is guaranteed to appreciate in value (that’s the “risk” part!) Ethereum contributors generally do not get exposure to the assets secured by the network as part of their job. By switching to a role with an only slightly larger risk profile that offers token compensation, they can often materially increase their expected rewards, even if their base salary remains constant.</p><p>Protocol Guild being an onchain registry is perfectly positioned to close that gap. <strong>Token donations are often suboptimal due to recipients’ need to cover fiat-denominated expenses. But, in this case, given the risk/reward gap is primarily composed of such assets, their volatility is a feature, not a bug!</strong></p><p>In a way, these tokens represent the surplus value of the Ethereum ecosystem. If a broad enough subset of projects contribute their tokens to PG, core contributors end up with a basket providing diversified exposure to the value created by the ecosystem they support. In many cases, these tokens also confer rights, such as participation in governance, to holders. Projects donating their tokens then ensure these end up in the hands of valuable contributors, both today and in the future.</p><h3 id="h-why-1percent" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Why 1%?</strong></h3><p>First, why a percentage at all? Denominating the Protocol Guild Pledge in “percentage of supply” rather than “fiat equivalent value” has a few advantages:</p><ul><li><p><strong>It puts all projects on an equal footing.</strong> A small project donating 1% of their tokens should be celebrated to a similar degree as a large one, as they are making the same proportional commitment.</p></li><li><p><strong>It abstracts volatility from donations</strong>. Funds sent to PG are vested for years. By the time they are fully received by members, the price of tokens could have shifted dramatically. A large fiat-denominated bull-market donation may end up less valuable when fully vested than a smaller fiat-denominated bear market one.</p></li><li><p><strong>It enables pre-token commitments.</strong> Projects may not want to signal specific timelines for the introduction of a token, but may want to commit to supporting PG early on. A public commitment to reserve 1% of a future (hypothetical) token is then an easy thing for the community to hold a project accountable to.</p></li></ul><p>Now, why 1%? Why not 10%? 0.1%? Something else? Well, for one thing, it’s less than <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/dannyryan/status/1454065104819916803">1.5%</a>!  More seriously, though, here are some metrics to provide context for the amount:</p><ul><li><p>Protocol Guild currently has 163 members. Members’ share of total donations is proportional to the (square root of) the amount of time they have been contributing to Ethereum. Members’ shares <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://app.splits.org/accounts/0x84af3D5824F0390b9510440B6ABB5CC02BB68ea1/">currently vary between 1.16% and 0.27%</a>.</p></li><li><p>Ethereum currently secures roughly <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ultrasound.money/#tvs">200b$ of non-ETH assets on L1</a>. Removing LSTs &amp; stablecoins/RWAs, leaves slightly less than 100b$. Including <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://l2beat.com/scaling/tvl">L2-native assets</a> to this brings the total back to roughly 100b$ of native tokens whose security depends on L1.</p></li><li><p>Protocol Guild’s v2 contracts will have a multi-year vesting period. The exact duration is TBD, but will likely be between 3-5 years, with a minimum contribution period required before maintainers can join PG. For simplicity, let’s use 4 years.</p></li></ul><p>Now, let’s imagine a hypothetical world where all Ethereum projects with a native token that exist today have contributed to Protocol Guild. 1% of their 100b$ native token market cap would represent 1B$ in total contributions, or 250m$ vesting per year. Across 163 members, this currently averages to ~1.5m$/yr, ranging between 675k$ and 2.9m$/yr.</p><p>At first glance, these numbers seem within the right order of magnitude. High-six / low-seven figure yearly compensation isn’t unheard of in the tech industry, especially in roles that are critical to the handling of hundreds of billions in value.</p><p>However, this hypothetical makes many simplifying and optimistic assumptions. First, it only looks at a fixed point in time. Projects come and go, and maintaining a 250m$ distribution year over year assumes the total value of native assets secured by Ethereum grows by 25b$/yr.</p><p>Second, it holds the number of contributors constant. At a certain reward level, Protocol Guild reward may attract a larger number of contributors, diluting rewards for existing members.</p><p>Third, and most importantly, it assumes 100% of projects donate a full 1% of their native token. Going down by an order of magnitude, if 10% of projects contribute to PG, or 100% donate 0.1% of their tokens, we end up at 150k$/yr for the average PG member. This is unlikely to shift incentives enough to retain them.</p><p>All of this considered, 1% feels like the right number for the Protocol Guild Pledge. A strong norm of projects donating 1% of their token supply, adopted by 33-66% of projects would have this hypothetical at a 500k-1m/yr per member on average. At these levels, the risk/reward gap that exists today would almost certainly be closed.</p><h3 id="h-why-now" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Why now?</strong></h3><p>Protocol Guild is roughly two orders of magnitude away from the numbers hypothesized above. The pilot has been an amazing spark of initial validation and has allowed the guild to lay the technical, legal, and governance groundwork for a longer lasting collective. In other words, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://protocol-guild.readthedocs.io/en/latest/5-initial-pilot.html#mid-pilot-update-dec-7-2022">it works</a>, but it’s now time to scale up!</p><p>To get through the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/VitalikButerin/status/1741190491578810445/photo/1">Surge, Scourge, Verge, Purge, and Splurge</a>, it’s paramount that Ethereum retains its best contributors and continues attracting new talented ones. To broaden both the number and the kinds of people who are able to participate as core developers, we need to rely on economic incentives over passion or status.</p><p>Additionally, as we scale the reach and impact of the Ethereum ecosystem, we should also strive to scale its values. Values are hard to scale because labels get co-opted and diluted to near-meaninglessness as they gain popularity (see “decentralization”, “alignment”, and, I fear, “public goods”). Luckily, the Ethereum ecosystem can still coordinate on new ones!</p><p>Projects who adopt the Protocol Guild Pledge will help seed a meme whose quantitative component (“<strong>1%</strong> of native tokens”) makes it harder to dilute. If you’re reading this, you likely have an overall sense of what, and who, it means for Ethereum L1 R&amp;D to be sustainably supported. It’s not guaranteed that this remains the case as the space grows. A future where most notable projects have a “Protocol Guild Pledge” badge on their Github or Etherscan token page is one where it’s more likely we’ll see organic, continuing support for both core development as well as a public goods more generally from new projects entering the space.</p><h2 id="h-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h2><p>Protocol Guild is currently Ethereum’s most promising tool to sustainably incentivise Ethereum L1 R&amp;D. It complements existing funding infrastructure by aggregating the set of core contributors, keeping it updated over time, and funding these people directly.</p><p>In order to provide strong enough incentives for talented contributors to work on mainnet long term, Protocol Guild needs to scale roughly 100x. If as a community we instill a norm for projects to contribute to the Protocol Guild Pledge, I believe we’ll get there!</p><hr><p><em>Many thanks to everyone who provided direct feedback on this piece, or with whom I’ve had conversations about this topic. I’ve tried to distill all of it into a coherent whole, but what remains are my personal views, and shouldn’t be attributed to Protocol Guild, AllCoreDevs, or the Ethereum Foundation. Full disclosure, I am a member of Protocol Guild. Last but not least, a special shout out to ether.fi, who </em><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/ether_fi/status/1752376059394408458"><em>committed 1% of their token supply</em></a><em> to Protocol Guild ahead of this post even being published!</em></p>]]></content:encoded>
            <author>timbeiko@newsletter.paragraph.com (Tim Beiko)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/a03d9f9c530f870ff4116c1a9bb5bb8d0c5587fe817b67ef1efd8e978393fcd5.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[AllCoreDevs Update 016 ⛓]]></title>
            <link>https://paragraph.com/@timbeiko/allcoredevs-update-016</link>
            <guid>SUlLIJBtXVRNg2J7eW2P</guid>
            <pubDate>Tue, 12 Dec 2023 20:45:58 GMT</pubDate>
            <description><![CDATA[Welcome to another AllCoreDevs update 👋 Over the past six months or so, teams have been focused on Dencun, the next Ethereum upgrade, as well as some EIP process tweaks. This post covers both these topics, and briefly touches on planning for the upgrade.TL;DR 👀Dencun testnets 🔜The upgrade is in its final testing stages, with testnet upgrades expected to begin early next year.There’s more than danksharding in Dencun: EIP-7569 has the full list, and this post summarizes every included EIP ✅M...]]></description>
            <content:encoded><![CDATA[<p>Welcome to another AllCoreDevs update 👋 <br><br>Over the past six months or so, teams have been focused on Dencun, the next Ethereum upgrade, as well as some EIP process tweaks. This post covers both these topics, and briefly touches on planning for the upgrade.</p><h2 id="h-tldr" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>TL;DR 👀</strong></h2><ul><li><p>Dencun testnets 🔜</p><ul><li><p>The upgrade is in its final testing stages, with testnet upgrades expected to begin early next year.</p></li></ul></li><li><p>There’s more than danksharding in Dencun: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7569">EIP-7569</a> has the full list, and this post summarizes every included EIP ✅</p></li><li><p>Many EIP process changes: CL EIPs, Meta EIPs, and the separation of EIPs, ERCs and RIPs 🪦</p></li><li><p>Prague/Electra proposals are slowly rolling in, planning will kick off in January 📆</p></li></ul><h2 id="h-dencun" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Dencun 🏝️</strong></h2><p>The blobs are coming!</p><p>What was hopefully the last <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/consensus-specs/pull/3531">big spec change</a> for Dencun is now being tested on multi-client devnets. Shadow forks are up next, and testnets upgrades are expected to begin in January!</p><p>Dencun ended up being, in true Ethereum fashion, more complicated than expected. Introducing a whole new data layer to the network and testing its robustness in conditions we can’t easily replicate outside of mainnet has been quite the challenge. 14 months after the first 4844 interop call, and with a huge ramp up in the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/marioevz/blobber">quantity</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://notes.ethereum.org/@ethpandaops/dencun-devnet-10-latency-analysis">quality</a> of our testing apparatus, we now see light at the end of the tunnel 🌞</p><p>Also, although they haven’t had as much of a spotlight on them, the Dencun upgrade introduces many other changes along with proto-danksharding. You can find the full list in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7569">EIP-7659</a>:</p><blockquote><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-1153">EIP-1153</a>: Transient storage opcodes</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4788">EIP-4788</a>: Beacon block root in the EVM</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4844">EIP-4844</a>: Shard Blob Transactions</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-5656">EIP-5656</a>: MCOPY - Memory copying instruction</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-6780">EIP-6780</a>: SELFDESTRUCT only in same transaction</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7044">EIP-7044</a>: Perpetually Valid Signed Voluntary Exits</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7045">EIP-7045</a>: Increase Max Attestation Inclusion Slot</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7514">EIP-7514</a>: Add Max Epoch Churn Limit</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7516">EIP-7516</a>: BLOBBASEFEE opcode</p></li></ul></blockquote><p>I’ll briefly summarize each one below. For a deep dive into them, I recommend Ethereum Cat Herders’ <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/playlist?list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F">PEEPanEIP series</a>, which has in-depth conversations with EIP authors about their proposals.</p><h3 id="h-eip-1153" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-1153</strong></h3><p>This EIP introduces two EVM opcodes, <code>TLOAD</code> and <code>TSTORE</code>. They load/store data similarly to <code>SLOAD</code> and <code>SSTORE</code>, but clear it at the end of each transaction, rather than store in Ethereum’s global state. Because the data never needs to be written to disk, these new opcodes have same gas cost as using <code>SLOAD</code> or <code>SSTORE</code> with “warm” data. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=9YMEYTzzKtI&amp;list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F&amp;index=34&amp;pp=iAQB">PEEPanEIP #91</a> covers EIP-1153.</p><h3 id="h-eip-4788" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-4788</strong></h3><p>4788 exposes the Beacon Chain’s block roots to the EVM by storing them in a smart contract on the execution layer. The roots are included in blocks passed from the CL to the EL, and written to a contract prior to executing the block’s transactions. Applications can use the block roots to validate proofs about Beacon Chain data directly onchain. Alex Stokes appeared on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=GriLSj37RdI&amp;list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F&amp;index=9">PEEPanEIP#117</a> to explain all of this more thoroughly.</p><h3 id="h-eip-4844" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-4844</strong></h3><p>Also known as “proto-danksharding”, this one has <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.eip4844.com/">a whole website</a> about it :-)</p><h3 id="h-eip-5656" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-5656</strong></h3><p>Another new EVM opcode, <code>MCOPY</code>, provides a simpler and cheaper way to copy memory in the EVM. This will be especially useful to higher level languages and EVM tooling, which both have to consider multiple edge cases around memory copying today. More on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=m_YzKuL2VxM&amp;list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F&amp;index=7&amp;pp=iAQB">PEEPanEIP#118</a>.</p><h3 id="h-eip-6780" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-6780</strong></h3><p><code>SELFDESTRUCT</code> removal (!!), with caveats*</p><p>After years of debate around if and how to remove <code>SELFDESTRUCT</code>, it’s finally happening! Following Ethereum’s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-6049">first deprecation notice</a> in Shanghai, <strong><em>EIP-6780 updates the</em></strong> <code>SELFDESTRUCT</code> <strong><em>opcode semantics to</em></strong> <strong><em>only delete a contract</em></strong> <strong><em>if the opcode is called within the same transaction as the contract creation</em></strong>. In all other cases, <code>SELFDESTRUCT</code> will simply transfer the funds in the contract to the target address and leave the contract intact. For a deep dive on this, see <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=s7fm6Zz_G0I&amp;list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F&amp;index=10&amp;pp=iAQB">PEEPanEIP#115</a>.</p><h3 id="h-eip-7044" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-7044</strong></h3><p>This EIP removes restrictions on how long a validator exit message is valid for. Previously, after two network upgrades, an exit message would become invalid. Removing this constraint reduces the parameters that staking tools need to consider, and also allows for more permanent arrangement in staking operations where the signing and withdrawal key holders are different. This EIP was covered in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=g47MOV8ETB8&amp;list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F&amp;index=12&amp;pp=iAQB">PEEPanEIP#113</a>.</p><h3 id="h-eip-7045" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-7045</strong></h3><p>EIP-7045 increases the period during which an attestation can be included in a Beacon Chain block from a rolling 32 slots window until the last slot of the epoch after the one in which the slot occurred. In other words, it increases the inclusion window for attestations to a slot by the number of slots remaining in its epoch. For the last slot in an epoch, the change is minimal, but for the first, it effectively doubles the valid inclusion period. Danny Ryan discusses the change on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=Z4tMgrreCN8&amp;list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F&amp;index=12">PEEPanEIP#114</a>.</p><h3 id="h-eip-7514" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-7514</strong></h3><p>A somewhat contentious change, EIP-7514 adds a hard cap to how many validators can be activated each epoch. Previously, the amount varied as a function of the total number of active validators. Concerns about the rapid growth of the validator set, and the stress this puts on the network’s gossip layer, have led client teams to propose capping this value at 8 validators/epoch. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=URQZVqgKZI4&amp;list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F&amp;index=7">PEEPanEIP#119</a> goes into more detail on this.</p><h3 id="h-eip-7516" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP-7516</strong></h3><p>Last but not least, EIP-7516 introduces one final new opcode: <code>BLOBBASEFEE</code>. Similarly to <code>BASEFEE</code>, the opcode returns the current 4844 data-gas base fee. This allows contracts to access this value directly onchain, providing a trustless oracle for L1 data gas costs, and can be the basis for more complex use cases, such as (blob) base fee futures. PEEPanEIP completes their full coverage of Dencun with <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=VUita9Yl9gY&amp;list=PL4cwHXAawZxqu0PKKyMzG_3BJV_xZTi1F&amp;index=3">episode 122</a> dedicated to this EIP.</p><h2 id="h-eip-process-changes" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP Process Changes 📋</strong></h2><p>In parallel to Dencun development, the EIP processes has recently seen many changes. Here is an overview of the most important ones:</p><h3 id="h-cl-eips" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>CL EIPs</strong></h3><p>One thing you may have noticed in the section above is that all changes, including those to the consensus layer, are tied to an EIP! Indeed, while the bulk of specifications for CL changes are still in the <code>consensus-specs</code> repository, EIPs are now used to identify, describe, and motivate them. The CL spec can then be <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-1#consensus-layer-specifications">directly linked</a> within an EIP. With this, and the introduction of an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.github.io/execution-specs/">EL python spec</a>, we’re getting close to a harmonized specification process :-)</p><h3 id="h-meta-eips" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>Meta EIPs</strong></h3><p>Another thing you may have noticed: we’ve gone back to listing out all the changes included in a specific hard fork in (Meta) EIPs. Post-merge, network upgrades didn’t have a comprehensive list of changes across both the EL &amp; CL, as both layers used separate processes to track them.</p><p>Not only did this lead to fragmentation, but the location of each list was also hard to find, and separate from the EIPs which contained the actual changes. Hopefully, bringing back Meta EIPs simplifies things a bit!</p><p>Dencun’s Meta EIP is <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7569">EIP-7569</a>, and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-7568">EIP-7568</a> links out to the various specifications used for network upgrades that did not have a Meta EIP.</p><h3 id="h-eipercrip-working-groups" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"><strong>EIP/ERC/RIP Working Groups</strong></h3><p>The last, and most significant, change to happen to the EIP process over the past few months is its separation into Working Groups.</p><p>Historically, EIPs and ERCs used the same repository and processes. This made it hard to streamline and adapt things to the needs of either side. EIPs mostly describe protocol layer changes, a large chunk of which can only be activated if there is consensus amongst all stakeholders to do so. ERCs tend to describe opt-in application layer standards, which can be used without global agreement, and can be gradually adopted over time.</p><p>In addition to this, a standardization effort focused on Layer 2 — <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/885">RollCall</a> – has recently emerged. Rollup Improvement Proposals (RIPs) could allow L2s to coordinate on protocol changes they want to adopt independently of L1. Ideally, this reduces the risks of multiple L2s implementing the same feature in different ways, or different features in the same opcode or precompile space.</p><p>Both the ERC and RIP process could benefit from editors with domain knowledge. If you’d like to help shape how these things evolve, now is the time to reach out: head over to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum-cat-herders/EIPIP/issues">EIPIP</a>!</p><h2 id="h-pragueelectra" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Prague/Electra ⚡️</strong></h2><p>With Dencun wrapping up, attention has begun shifting towards the next upgrade: Prague/Electra. A <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/prague-electra-network-upgrade-meta-thread/16809">discussion thread on EthMagicians</a> has been started to aggregate suggestions for the upgrade.</p><p>Client teams will gradually begin reviewing proposals, and upgrade planning discussions will kick off in January. If you have an EIP you’d like to propose, now is the time to make it known !</p><h2 id="h-next-steps" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Next Steps ✅</strong></h2><p>Dencun testnets 🔜, Prague/Electra planning will start in parallel, and, assuming things go smoothly, rollups will soon be moving their data to blobs and we’ll be debating whether the blob-gas limit on mainnet is high enough 😅 </p><p>Happy holidays 🎄</p>]]></content:encoded>
            <author>timbeiko@newsletter.paragraph.com (Tim Beiko)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/3f97913ade3a71dc7c109dbf5ddad7006862c10498e70213141b5cdefc53cfa2.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[AllCoreDevs Update 015 ]]></title>
            <link>https://paragraph.com/@timbeiko/allcoredevs-update-015</link>
            <guid>alGM5Qtoe9FioyEBYEM8</guid>
            <pubDate>Wed, 03 May 2023 20:51:42 GMT</pubDate>
            <description><![CDATA[Long time coming, here&apos;s another AllCoreDevs update 😄 !TL;DR 👀Shapella went live 🎉!We&apos;re in the final stages of planning the next upgrade: Dencun 🏝️Included EIPs are 4844, 6780, 1153 and 6475, but specs aren’t frozen yet ⛄️EIPs 2537, 4788 and 6493 have been shortlisted as potential additionsMany others are still being discussed on EthMagicians 🧙‍♀️I drafted EIP-6953, summarizing network upgrades activation triggers over time 📜Catch me talking about Ethereum governance at a few...]]></description>
            <content:encoded><![CDATA[<p>Long time coming, here&apos;s another AllCoreDevs update 😄 !</p><h2 id="h-tldr" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">TL;DR 👀</h2><ul><li><p>Shapella went live 🎉!</p></li><li><p>We&apos;re in the final stages of planning the next upgrade: Dencun 🏝️</p><ul><li><p>Included EIPs are 4844, 6780, 1153 and 6475, but specs aren’t frozen yet ⛄️</p></li><li><p>EIPs 2537, 4788 and 6493 have been shortlisted as potential additions</p></li><li><p>Many others are still being discussed on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/cancun-network-upgrade-meta-thread/12060">EthMagicians</a> 🧙‍♀️</p></li></ul></li><li><p>I drafted <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-6953">EIP-6953</a>, summarizing network upgrades activation triggers over time 📜</p></li><li><p>Catch me talking about Ethereum governance at a few places this summer — full list below 👇</p></li></ul><h2 id="h-shapella" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Shapella 🌃</h2><p>It&apos;s live! It works! Despite a few minor issues around the upgrade activation, less than a month later, we now take for granted that withdrawals get processed smoothly on Ethereum 😙</p><p>Onto the next thing ✔️</p><h2 id="h-dencun" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Dencun 🏝️</h2><p>The last AllCoreDevs update came out when Shapella was mostly spec&apos;ed out, but still had many moving parts. After I published it, and specs were finalized, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2023/02/21/sepolia-shapella-announcement">Shapella</a> - <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2023/03/08/goerli-shapella-announcement">progress</a> - <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2023/03/28/shapella-mainnet-announcement">updates</a> moved to the EF blog, which now has <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/#subscribe">email subscriptions for protocol announcements</a>!</p><p>This update is of a similar nature: we currently have a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/cancun.md#included-eips">tentative set of EIPs</a> included in the next network upgrade, Dencun (Deneb + Cancun). I&apos;ll give an overview of what they are, why they matter, as well as the candidate EIPs still being considered for the upgrade.</p><p>Note that this will mostly focus on Ethereum&apos;s execution layer --- there are likely more things being considered on the CL that I&apos;ve missed. Optimistically, I&apos;d like to publish another update once we&apos;ve finalized Dencun&apos;s scope. Realistically, that will probably be the first testnet fork announcement 😅 Let&apos;s dive into it!</p><h3 id="h-included-eips" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Included EIPs</h3><h4 id="h-eip-4844-aka-proto-danksharding" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-4844, a.k.a. Proto-Danksharding</h4><p>This one needs no introduction: 4844 is the core feature of the Dencun network upgrade. In short, this EIP introduces temporary &quot;data blobs&quot; to the Ethereum network, which L2s can use to post the transaction/proof data they currently store in <code>CALLDATA</code>.</p><p>Due to blobs being stored ephemerally, their gas cost is expected to be significantly lower than <code>CALLDATA</code>, which is stored by the network forever. This will result in significantly cheaper L2 transactions for users, as &gt;90% of the current cost for L2 transactions is L1 data storage. If you&apos;d like to dig deeper in 4844, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://eip4844.com">eip4844.com</a> has various levels of explainers/FAQs/etc.</p><p>While not quite as big as The Merge, EIP-4844 is a significant change to Ethereum: it introduces an whole new data layer to the network, which both the current consensus and execution layers must interact with. The size of the EIP means that bandwidth for other changes in Dencun is limited.</p><p>That said, a few more EIPs have also been included alongside 4844.</p><h4 id="h-eip-6780-selfdestruct-deactivation-except-if-coupled-with-contract-creation" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-6780, <code>SELFDESTRUCT</code> deactivation, except if coupled with contract creation</h4><p>The second major change being introduced in Dencun is the deactivation of the <code>SELFDESTRUCT</code> opcode with <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-6780">EIP-6780</a>. This comes after <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@vbuterin/selfdestruct">years of discussions</a>, as well as a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-6049">formal deprecation notice</a> in Shapella.</p><p>During some <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/jwasinger/eth-selfdestruct-analysis">recent analyses</a>, a common usage pattern for <code>SELFDESTRUCT</code> was identified: contracts being created and destroyed within a single transaction. EIP-6780 allows this functionality to be maintained. If <code>SELFDESTRUCT</code> is called in the same transaction as a contract&apos;s creation, then its behaviour remains the same as today.</p><p>In all other cases, though, the opcode will <strong>not</strong> delete the contract&apos;s storage or code. ETH in the contract will still be transferred to the target address, though.</p><p>While client teams currently think this is the best approach to deal with <code>SELFDESTRUCT</code>, a more thorough impact analysis is still underway. Once that is done, the specification may be modified to deal with other edge cases. A different approach altogether may also be taken. For example, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-6046">EIP-6046</a> was also considered.</p><p>In other words, <code>SELFDESTRUCT</code> removal is now a question of <strong>&quot;how&quot;</strong>, not <strong>&quot;if&quot;</strong>, for Deneb.</p><h4 id="h-eip-1153-transient-storage" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-1153, transient storage</h4><p>The third change included in Dencun is <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-1153">EIP-1153</a>. Proposed nearly five years ago, and revived last year by the Uniswap team, the EIP has gathered <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/shanghai-cancun-candidate-eip-1153-transient-storage/10784?u=timbeiko">significant support</a> amongst Ethereum&apos;s developer community. It introduces two new opcodes, <code>TSTORE</code> and <code>TLOAD</code>, which provide <strong>t</strong>ransient storage that gets cleared at the end of the transaction. The EIP enables several use cases, from re-entry locks to single-transaction ERC20 approvals.</p><p>EIP-1153 was also considered for the Shapella upgrade, but ultimately deprioritized. This time around, client teams agreed to move forward with it. It&apos;s worth emphasizing that beyond the general soundness + usefulness of the EIP, one contributing factor to 1153&apos;s inclusion was the excellent technical championing work done: Uniswap and others provided full 1153 reference implementations and comprehensive test cases for all execution layer clients.</p><h4 id="h-eip-6475-ssz-optionals" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-6475: SSZ Optionals</h4><p>This last included change can be thought of as a companion to EIP-4844. Proto-danksharding introduces a new transaction type that uses SSZ encoding, rather than RLP encoding, which is used by the rest of the transaction types.</p><p>There have long been discussions of moving Ethereum&apos;s execution layer over to SSZ completely, as it is a richer encoding structure and is used by the consensus layer, but this is currently out of scope for Deneb. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-6475">EIP-6475</a> defines one of the SSZ elements that&apos;s part of the 4844 transaction format (<code>Optionals</code>) to ensure it is forward-compatible with future SSZ objects we&apos;d want to introduce to Ethereum.</p><p>As discussions about both the best long term SSZ formats for transaction generally and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/nz-IqXLPQ-yahFPFlPl62A">4844 blob transactions specifically</a> continue, expect modifications to happen to both of these EIPs.</p><h3 id="h-eips-considered-for-inclusion" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">EIPs Considered for Inclusion</h3><p>Aside from the EIPs formally included in the upgrade, client teams have a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/cancun.md#eips-considered-for-inclusion">shortlist of EIPs</a> that may still make it in.</p><h4 id="h-eip-2537-precompile-for-bls12-381-curve-operations" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-2537: Precompile for BLS12-381 curve operations</h4><p>This EIP has been considered in one form or <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-1962">another</a> since 2019. Historically, there was reluctance to add a new cryptographic curve to Ethereum&apos;s execution layer. That said, the Beacon Chain relies heavily on BLS12-381, and with The Merge behind us, it&apos;s fair to say that BLS has become a &quot;core&quot; dependency of Ethereum, with secure and optimized libraries.</p><p>Introducing this precompile would be allow for both Beacon Chain signatures to be validated on the EL as well as the development of new use cases leveraging this curve.</p><h4 id="h-eip-4788-beacon-block-root-in-the-evm" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-4788: Beacon block root in the EVM</h4><p>Similarly to 2537, this EIP exposes information from the Beacon Chain to the execution layer. In this case, the root of Beacon Chain blocks is added to execution payloads and then stored in a contract on the EL. The stored Beacon block roots can then be accessed via a new <code>BEACON_ROOT</code> opcode, which takes a slot number as input and returns the associated Beacon block root.</p><p>This EIP would allow for more trustless designs of staking pools, bridges, and restaking protocols.</p><h4 id="h-eip-6493-ssz-transaction-signature-scheme" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-6493: SSZ Transaction Signature Scheme</h4><p>This EIP is a complement to EIP-6475: it defines a signature scheme for SSZ transactions. While it wouldn&apos;t apply to existing RLP transactions, it could be used to ensure the current 4844 SSZ transaction signature scheme is forward-compatible with a future SSZ overhaul of the execution layer.</p><h4 id="h-notable-exclusion-eof" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">Notable exclusion: EOF</h4><p>After being CFI&apos;d for both the Shapella and Dencun upgrades, the suite of EOF EIPs was formally pushed out of this upgrade as well, due to limited bandwidth. There is currently some discussion of prioritizing these as the &quot;main feature&quot; for a future upgrade, but this has not been formally agreed to by client teams.</p><h3 id="h-other-proposed-eips" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Other Proposed EIPs</h3><p>Aside from these, the full list of proposed EIPs for the upgrade can be found <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/cancun-network-upgrade-meta-thread/12060?u=timbeiko">on Ethereum Magicians</a>. While it&apos;s likely that most things that end up in Dencun have already been discussed, surprises are possible! Notably, teams reacted positively when first learning of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-5656">EIP-5656</a>, proposing an <code>MCOPY</code> opcode, on the last ACDE call.</p><h2 id="h-network-upgrade-activations-eip" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Network Upgrade Activations EIP 📜</h2><p>PSA: I&apos;ve drafted <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-6953">an Informational EIP</a> to list the various mechanisms used to trigger network upgrades over time, from proof-of-work blocks, to epochs, TTDs, and now timestamps.</p><p>Hopefully, we don&apos;t have to change from the current epoch+timestamp combo ever again 😄</p><h2 id="h-summer-remote-talks" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Summer (Remote) Talks 📣</h2><p>Over the next few months, I&apos;ll be giving a few talks sharing my view of how Ethereum&apos;s governance process works. Some will be IRL, some remote, some TBD! Chronologically, I&apos;ll be speaking at <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.edcon.io/">EDCON</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethprague.com/">ETHPrague</a>, ETHShanghai, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.ethcc.io/">EthCC</a>, and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethmontreal.xyz/">ETHMontreal</a>.</p><p>See you there 👋!</p>]]></content:encoded>
            <author>timbeiko@newsletter.paragraph.com (Tim Beiko)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/02393e6c413f8782eb88948a71498c894f2e956621692025959114142aa1942f.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[AllCoreDevs Update 014⛓ ]]></title>
            <link>https://paragraph.com/@timbeiko/allcoredevs-update-014</link>
            <guid>W8CtqYldlLiNbg2Holfh</guid>
            <pubDate>Tue, 13 Dec 2022 19:14:25 GMT</pubDate>
            <description><![CDATA[Welcome to another AllCoreDevs update - the last one of 2022 🫡 While these started out as a monthly series, the cadence is slowly trending towards quarterly. Think of these updates as a digest of everything big that’s going on around AllCoreDevs. If you want a higher resolution, I recommend the more frequent ones by Christine Kim, the CL call notes by Ben Edgington or my ACD tweetstorms. With that said, let’s get into it!TL;DR 👀The contents of the Shanghai/Capella upgrade has been finalized...]]></description>
            <content:encoded><![CDATA[<p>Welcome to another AllCoreDevs update - the last one of 2022 🫡</p><p>While these started out as a monthly series, the cadence is slowly trending towards quarterly. Think of these updates as a digest of everything big that’s going on around AllCoreDevs. If you want a higher resolution, I recommend the more frequent ones by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.galaxy.com/authors/christine-kim/">Christine Kim</a>, the CL call notes by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@benjaminion/Sk2SWNLPs">Ben Edgington</a> or my <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/TimBeiko/status/1600506054059913216">ACD tweetstorms</a>.</p><p>With that said, let’s get into it!</p><h1 id="h-tldr" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">TL;DR 👀</h1><ul><li><p>The contents of the Shanghai/Capella upgrade has been finalized: withdrawals, EOF, and a handful of minor changes… so long as they don’t delay withdrawals ❌</p></li><li><p>Blobspace is coming: EIP-4844 will be at the centre of Ethereum’s next upgrade, with its summoning ceremony starting soon 🕯️</p></li><li><p>An effort is underway to harmonize the technical side of the EL &amp; CL upgrade processes. We’re also seeing active discussion about better incorporating the community’s input in the process 📣</p></li><li><p>Protocol Guild published a mid-pilot report, and a rough plan to scale and better support L1 maintainers in 2023 ⛓️🛡️</p></li></ul><h2 id="h-shanghai-capella" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Shanghai / Capella 🌃</h2><p>On the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/675">last AllCoreDevs</a>, client teams agreed to a finalized scope for the Shanghai / Capella upgrade. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/rfc-post-merge-network-upgrade-naming-schemes/11977/14">While the name of the upgrade might still be up for debate</a>, teams are clear about its scope. The main feature of the upgrade is the introduction of Beacon Chain withdrawals for stakers. Getting this out ASAP is something client teams don’t want to compromise on, so other features in the upgrade need to be ready at the same time, or may be dropped.</p><p>The <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md">Shanghai EL spec</a> lists all included EIPs:</p><blockquote><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3540">EIP-3540: EVM Object Format (EOF) v1</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3651">EIP-3651: Warm COINBASE</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3670">EIP-3670: EOF - Code Validation</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3855">EIP-3855: PUSH0 instruction</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3860">EIP-3860: Limit and meter initcode</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4200">EIP-4200: EOF - Static relative jumps</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4750">EIP-4750: EOF - Functions</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4895">EIP-4895: Beacon chain push withdrawals as operations</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-5450">EIP-5450: EOF - Stack Validation</a></p></li></ul></blockquote><p>While the list is long, it can be broken into three distinct buckets: minor improvements, EVM Object Format and Withdrawals. Let’s go through each of these:</p><h3 id="h-minor-improvements" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Minor Improvements ⚙️</h3><h4 id="h-eip-3651-warm-coinbase" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-3651: Warm COINBASE</h4><p>This EIP fixes an oversight in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-2929">EIP-2929</a>, which changed the gas costs of accessing certain data fields based on whether clients already have them in memory (<code>WARM</code>) or need to retrieve them from disk (<code>COLD</code>).</p><p>EIP-2929 sets two pieces of data which clients have in memory to <code>WARM</code> at the start of each transaction: the sending and receiving addresses. EIP-3651 adds a third address to this list, the <code>COINBASE</code> address (a.k.a. <code>feeRecipient</code>), given it’s also an address clients have in memory when processing a block’s transactions.</p><h4 id="h-eip-3855-push0-instruction" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-3855: PUSH0 instruction</h4><p>As the name implies, EIP-3855 introduces an opcode to push the value 0 to the stack. Pushing 0 is frequently used to pad values in the EVM, and this opcode will offer a more efficient, and cheaper, way to do this.</p><h4 id="h-eip-3860-limit-and-meter-initcode" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-3860: Limit and meter initcode</h4><p>This EIP adds a maximum size for <code>initcode</code> and introduces gas metering based on its length. The size limit adds an invariant to the EVM which will make it easier to reason about and propose changes to.</p><p>A 2 gas/32 byte cost for <code>initcode</code> is introduced to account for the jumpdest-analysis clients must do prior to execution, which previously was not accounted for in the gas schedule.</p><h3 id="h-evm-object-format" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">EVM Object Format 🧰</h3><p>The majority of EIPs included in Shanghai are all part of a single feature: EVM Object Format (EOF). The work was broken down into 5 distinct EIPs to help client developers reason about each change in isolation, but to give a higher level overview, a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://notes.ethereum.org/@ipsilon/eof1-unified-specification">unified spec</a> was released this week. The 5 EOF EIPs are:</p><blockquote><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3540">EIP-3540: EVM Object Format (EOF) v1</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3670">EIP-3670: EOF - Code Validation</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4200">EIP-4200: EOF - Static relative jumps</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4750">EIP-4750: EOF - Functions</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-5450">EIP-5450: EOF - Stack Validation</a></p></li></ul></blockquote><p>It’s worth noting that the first step for EOF was taken in the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/london.md">London upgrade</a>, with EIP-3541, which reserved the <code>0xEF00</code> prefix for EOF contracts. Over the past few months, the scope of EOF for Shanghai also evolved.</p><p>In February, client teams agreed to consider two minimal EOF EIPs for Shanghai: EIPs 3540 &amp; 3670. These would act as building blocks but wouldn’t provide the full functionality without the introduction of EIPs 4200, 4750 and 5450. While it is possible to extend EOF, backwards incompatible extensions may require a version bump. Because pre-EOF or EOF contracts with a specific version must always be executable, each new EOF version means client developers must maintain a new set of EVM execution rules in parallel to legacy ones.</p><p>Before EOF, clients only maintained one set of EVM rules at a time. The codebases also support historical EVM rules which can change every network upgrade, but once they get to the tip of the chain, only the most recent rules must be applied. With EOF, clients will maintain two parallel set of EVM rules, so they can execute code in both EOF and non-EOF contracts. In other words, EOF version bumps increase the number of <strong>parallel</strong>, rather than sequential, EVM rulesets that must be maintained.</p><p>For this reason, over the past few months, clients teams began preferring a “big EOF” approach. This way, while they must implement a larger change set, the EOF version will stay fixed longer, reducing the number of “parallel EVMs” to maintain. Hence, “Big EOF” is what was considered, and eventually included, in the Shanghai upgrade.</p><p>That said, bigger features are obviously trickier to implement and test and teams don’t want to see EOF significantly delaying Beacon Chain withdrawals. Therefore, clients agreed to remove EOF from Shanghai if, come January, implementations are not complete and quickly interoperating with each other.</p><p>With that context, let’s now briefly go over the various EOF EIPs:</p><h4 id="h-eip-3540-evm-object-format-eof-v1" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-3540: EVM Object Format (EOF) v1</h4><p>This EIP introduces the “container” for EOF contracts. It adds markers which discriminate code and data sections in contracts, and prevents EOF contracts who don’t comply with the format to be deployed. This provides the assurance that any on-chain EOF contract would follow a valid layout, which simplifies both interactions with these contracts as well as static analysis of them.</p><h4 id="h-eip-3670-eof-code-validation" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-3670: EOF - Code Validation</h4><p>Building on the container introduced by 3540, EIP-3670 ensures that the code in EOF an contract is valid, or prevents it from being deployed.</p><p>This means undefined opcodes cannot be deployed in EOF contracts, which has the added benefit of reducing the number of EOF version bumps required. If a new opcode is added, validation rules can simply be changed to enable it, and there is a guarantee that no EOF deployed contract references it in its code section.</p><h4 id="h-eip-4200-eof-static-relative-jumps" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-4200: EOF - Static relative jumps</h4><p>EIP-4200 introduces the first EOF-exclusive opcodes: <code>RJUMP</code>, <code>RJUMPI</code> and <code>RJUMPV</code>, which encode destinations as signed immediate values. These new JUMP opcodes can be used by compilers to optimize gas costs, as they remove the need for runtime jumpdest-analysis that is required with the existing <code>JUMP</code> &amp; <code>JUMPI</code> opcodes.</p><h4 id="h-eip-4750-eof-functions" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-4750: EOF - Functions</h4><p>EIP-4750 takes features from 4200 one step further: it disallows the <code>JUMP</code> &amp; <code>JUMPI</code> opcodes, and adds an alternative for functionality that can’t be replicated with <code>RJUMP</code>, <code>RJUMPI</code> and <code>RJUMPV</code>. It does this by introducing specific function sections in EOF bytecode, which can be jumped to, called and returned from with new <code>JUMPF</code>, <code>CALLF</code> and <code>RETF</code> opcodes respectively.</p><h4 id="h-eip-5450-eof-stack-validation" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">EIP-5450: EOF - Stack Validation</h4><p>Finally, EIP-5450 adds yet another validation check to EOF contracts, this time around the stack. The EIP prevents EOF contracts from deploying code which can result in a stack underflows, as well as some cases of overflows. With this, clients can reduce the number of validation checks they make during execution of EOF contracts because they have better assurances around stack-related exceptions with them.</p><p>As a non EVM expert, leaning heavily on the EIPs themselves, that’s as far as I can take you! If you want to dig into EOF more, I recommend <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/lightclients/status/1593270266909450241">Geth’s lightclients</a> or <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/leonardoalt/status/1600845724618326016">Solidity’s Leo’s</a> threads.</p><h3 id="h-beacon-chain-withdrawals" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Beacon Chain Withdrawals 💸</h3><p>Last but not least, the main component of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/rfc-post-merge-network-upgrade-naming-schemes/11977/9?u=timbeiko">“Shapella”</a> is Beacon Chain withdrawals. The change is specified across both the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/consensus-specs/tree/dev/specs/capella">consensus layer specs</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4895">EIP-4895</a>. A now-slightly-out-of-date <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://notes.ethereum.org/@ralexstokes/validator-withdrawals-meta-spec">meta-spec</a> ties these together.</p><p>At a high level, here is how withdrawals will work:</p><ul><li><p>When proposing a block, validators scan linearly through validator indices to find the first 16 validators with <code>0x01</code> credentials who either:</p><ul><li><p>Have a balance above 32 ETH (i.e. have accrued validator rewards)</p></li><li><p>Are <code>withdrawable</code> (i.e. have fully exited the validator set)</p></li></ul></li><li><p>From these, the validator will create a list of withdrawals to be included in their <code>ExecutionPayload</code>. Each item in that list contains the following:</p><ul><li><p><code>WithdrawalIndex</code>: index among all withdrawals ever made — this helps differentiate between withdrawals for the same amount from the same validator to the same address</p></li><li><p><code>ValidatorIndex</code>: the index of the validator whose balance is being withdrawn</p></li><li><p><code>ExecutionAddress</code>: the ETH address on the execution layer where the withdrawal should be sent</p></li><li><p><code>Amount</code>: the amount, in <strong>g</strong>wei (not wei), to be sent to <code>ExecutionAddress</code></p></li></ul></li><li><p>When building or processing a block, EL clients will apply these withdrawals <strong>after</strong> transaction execution. In other words, processing withdrawals is similar to how proof-of-work rewards were credited, and does not compete with user transactions for block space.</p></li></ul><p>A few more details worth noting:</p><ul><li><p>When processing withdrawals, there is no difference between a “full” vs. “partial” withdrawal in terms of priority/ordering. Full withdrawals happen once a validator has left the exit queue, and partial withdrawals happen periodically when the linear scan over the validator set reaches a validator’s index.</p></li><li><p>For withdrawals to be processsed, validators must use <code>0x01</code> credentials, which represent an ETH address. At the launch of the beacon chain, only <code>0x00</code> credentials, which used BLS keypairs, were allowed. In order to enable withdrawals, validators with <code>0x00</code> credentials will need to sign a <code>BLSToExecutionChange</code> message. These will be enabled as part of the Capella upgrade. Validators can expect support and tutorials for multiple tools to sign this message.</p></li><li><p>The scan over the validator set is bounded each block. If, after scanning a subset of the validator set, there aren’t 16 withdrawals to process, the validator will stop scanning and the next one will pick up from the last validator index scanned.</p></li></ul><p>As always, there will be several devnets and testnets (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://notes.ethereum.org/@MarioHavel/testnet-specs">potentially even some new ones!</a>) for validators to run through the process and iron out any issues before things go live on mainnet.</p><p>Shanghai/Capella isn’t the only upgrade on which progress was made, though! Teams have also been looking ahead to the next one.</p><h2 id="h-cancun" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Cancun 🏝️</h2><p>With Shanghai full, but many CFI’d EIPs not making it in, client teams began discussing what should be considered for the next upgrade: Cancun (CL name TBD) 🏝️</p><p>On the CL side, EIP-4844 had already moved towards being <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/consensus-specs/pull/3052">spec’ed as the first post-Capella upgrade</a>. The EL doesn’t (yet!) have a spec which enables such a layout, but EL teams agreed to follow a similar path and center the next upgrade around EIP-4844.</p><p>Following the convention of using devcon city names for upgrades, <code>cancun.md</code> was created, with EIP-4844 being formally included in the upgrade.</p><p>This decision happened in the final minutes of the last 2022 AllCoreDevs call, so there wasn’t time to address other proposals. EIPs that were CFI’d for Shanghai but didn’t make it in were moved over to Cancun’s CFI list, and an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/cancun-eip-consideration/12060">Ethereum Magicians thread</a> was opened to discuss Cancun candidate EIPs. Early next year, deliberations around Cancun’s scope should start in earnest.</p><h3 id="h-kzg-ceremony" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">KZG Ceremony 🕯️</h3><p>One other Cancun-related thing to expect then is the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/kzg-ceremony">KZG Ceremony 🕯️</a>, which is a requirement for EIP-4844.</p><p>The Ceremony will generate the randomness needed to verify the validity of blob data. For it to be considered secure, only a single participant must have participated honestly. In other words, if all but one participant collude, then the entire process is cryptographically secure.</p><p>Starting in January, the ceremony will be open to everyone for several months. With a goal of getting 10,000 contributors, this is planned to be the largest such ceremony to date! If you want to be sure not to miss it, give <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/trent_vanepps">Trent Van Epps</a> a follow!</p><h2 id="h-post-merge-upgrade-process" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Post-Merge Upgrade Process 📜</h2><p>As mentioned in previous updates, one big TODO with The Merge behind us is harmonizing the upgrade process for Ethereum across the EL &amp; CL. At a high level the EL uses the Yellow Paper &amp; EIPs to specify changes, while the CL uses an executable Python specification.</p><p>The EL process has the upside of EIPs being well known by the community and formatted in a way which clearly presents the reasoning behind a proposal. The mix of the math-heavy Yellow Paper overlaid with EIPs, and need to put specifications in context within EIPs make the execution layer specifications both hard to understand and extend.</p><p>The CL side has the inverse problem: it has a clear and approachable spec, living within a single repository, but changes aren’t specifically identifiable, and proposals get burried among the other open PRs on the repo.</p><p>With the introduction of the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.github.io/execution-specs/">Ethereum Execution Layer Specification</a>, we can hopefully bridge the gap from the EL side. And, with some process wrangling, we might be able to get EIPs introduced as part of the CL process…!</p><p>That said, as the Shanghai upgrade scope was being debated and finalized, it became clear that another “piece” may be missing from this process: somewhere for the community to voice their relative preferences about changes, engage in discussions about the overall scope of an upgrade (rather than individual EIPs), and have that be incorporated as part of decision making in the AllCoreDevs &amp; CL calls.</p><p>It’s not quite clear what this looks like yet - <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/TimBeiko/status/1600970139767570432">and I’d love suggestions!</a> - but with the number of stakeholders being actively involved in protocol changes and the number of domains L1 changes affect both growing, it’s apparent that <em>something</em> is needed.</p><p>Luckily, we’re not starting from scratch: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/">Ethereum Magicians</a> has been around for years now, and its IRL gatherings, as well as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues?q=is%3Aissue+breakout">ad-hoc breakout rooms</a> or <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues?q=is%3Aissue+community+in%3Atitle+">community calls</a> may be good starting points to extend.</p><p>Expect more updates on this front early 2023!</p><h2 id="h-protocol-guild-update" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Protocol Guild Update ⛓️🛡️</h2><p>With the Protocol Guild pilot halfway done, the collective published <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://protocol-guild.readthedocs.io/en/latest/5-initial-pilot.html#mid-pilot-update-dec-7-2022">a report</a> examining how things are going and what the planned next steps for the project are.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0eb1e35835bd76c5fba7f5a8d3a44fdf17fd402009640409c41233a45223d061.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>As a reminder, PG is a permisionless funding mechanism for Ethereum L1 client developers, protocol researchers, and supporting contributors, such as yours truly.</p><p>The mechanism is centered around individuals, not organizations. In short, every member is eligible for a share of tokens vesting in the guild, weighted by the duration of their contributions to Ethereum. Member additions and removals are done, in true Ethereum fashion, by reaching rough consensus within PG, based on a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://protocol-guild.readthedocs.io/en/latest/4-roles-expectations.html#qualifications">set of criteria</a>. This list is then put on chain using <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://0xsplits.xyz/">0xSplit</a>’s split contract. Donors can then send funds either directly to the split, or to a vesting contract that feed to it.</p><p>The mid-pilot report was summarized on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/ProtocolGuild/status/1600912258694930432">Twitter</a>. Here are some highlights ✨</p><ul><li><p>The pilot raised 9.7m$, from many orgs such as Lido, Uniswap, ENS, NounsDAO and MolochDAO, as well as some recurring individual donors (s/o Tetranode 🦈!) — <strong>thank you all for making this possible❤️‍🔥!</strong></p></li><li><p>PG now has 128 members, up from 90 at launch, and 5m$ has been distributed among them already 💸</p></li><li><p>On average, each member received 39,000$, with a min of 13k$ and max of 79k$ 🧧</p></li><li><p>PG’s architecture is evolving to support L2s and remove the need for a multisig to update weights 🙅</p></li></ul><p>These early results show PG working as intended: a mechanism which distributes a basket of tokens to a self-curating, growing, set of protocol contributors. Proving this wouldn’t have been possible without the generous support from pilot donors.</p><p>Looking forward, it’s now time to scale PG to its full potential: providing competitive risk-adjusted compensation for maintainers of Ethereum. The lowest hanging fruit here is for projects to contribute to PG from Day 1, as described in Danny Ryan’s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/dannyryan/status/1454065104819916803">PG inception tweet</a>.</p><p>Donations for the pilot mostly came from large projects with significant treasuries. If Protocol Guild can convince projects to contribute from Day 1, when their token is still effectively worth “nothing”, then Ethereum maintainers can benefit from the entire upside trajectory of successful projects.</p><p>With enough projects participating, incentives can shift towards keeping the best people <em>towards</em> maintaining the protocol, rather than pulling them away from it.</p><p>To support this, as well as many other contribution types, PG will need a technical overhaul. The next version should work across both L1 and L2s, and reduce its on-chain governance footprint even more.</p><p>If you’re a project looking to contribute to Protocol Guild, please reach out — my DMs are open 📭!</p><h2 id="h-next-steps" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Next Steps ✅</h2><p>And that’s a wrap for 2022… what a year! Three months ago, we hadn’t even merged! Now, Ethereum is silently running proof-of-stake in the background and focus has shifted to what’s on the horizon.</p><p>As everyone gets back from the holidays in January, you can expect:</p><ul><li><p>Shanghai/Capella devnets and shadow forks 👻</p></li><li><p>The KZG Ceremony going live 🕯️</p></li><li><p>Discussions around Cancun, and how the network upgrade process should evolve to better capture the preferences of the community 🏝️</p></li><li><p>Protocol Guild’s pilot to wrap up and post-pilot architecture to be announced ⛓️🛡️</p></li></ul><p>Thanks for reading! And thank you to everyone who spent time trying to improve Ethereum over the past year - we got a <strong>lot</strong> done. Hope you all take some well-deserved holidays 🎄.</p><p>See you in 2023 👋!</p><hr><p><em>Thank you to lightclients, Alex Stokes and Joe Schweitzer for reviewing drafts of this update and making sure I get the technical details right!</em></p>]]></content:encoded>
            <author>timbeiko@newsletter.paragraph.com (Tim Beiko)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/c7310470faa1f740aaf2288a7195902ac3e29c20b796f2893ddcd05656b0b1f5.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[AllCoreDevs Update 013 ⛓]]></title>
            <link>https://paragraph.com/@timbeiko/allcoredevs-update-013</link>
            <guid>wYyy6l193YSXzbkMRr0e</guid>
            <pubDate>Sat, 08 Oct 2022 18:04:00 GMT</pubDate>
            <description><![CDATA[Welcome to another AllCoreDevs update 👋 A whole quarter has gone by since the last one of these --- time flies! In the meantime, hopefully you noticed that Sepolia, Goerli/Prater and, of course, mainnet merged 🐼! A third cohort of the Ethereum Protocol Fellowship was also kicked off, and old testnets were sunset. More on that last bit below 👇TL;DR 🐼We did it, we merged 🎉! It was quasi-flawless 🍾!AllCoreDevs and CL calls are on pause for a few more weeks. Conversations about Shanghai can...]]></description>
            <content:encoded><![CDATA[<p>Welcome to another AllCoreDevs update 👋</p><p>A whole quarter has gone by since the last one of these --- time flies! In the meantime, hopefully you noticed that <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/06/30/sepolia-merge-announcement">Sepolia</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/07/27/goerli-prater-merge-announcement">Goerli/Prater</a> and, of course, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/08/24/mainnet-merge-announcement">mainnet</a> merged 🐼!</p><p>A third cohort of the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/09/01/ethereum-protocol-fellowship-third">Ethereum Protocol Fellowship</a> was also kicked off, and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/09/09/kiln-shutdown">old testnets were sunset</a>. More on that last bit below 👇</p><h2 id="h-tldr" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">TL;DR 🐼</h2><ul><li><p>We did it, we merged 🎉! It was quasi-flawless 🍾!</p></li><li><p>AllCoreDevs and CL calls are on pause for a few more weeks. Conversations about Shanghai candidate EIPs are happening on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/shanghai-core-eip-consideration/10777">Ethereum Magicians</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://app.devcon.org/schedule/etjqdz">IRL</a>. Calls resume on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/624">October 27</a> 📺</p></li><li><p>Kiln has been shut down. With Rinkeby and Ropsten&apos;s sunset dates on the horizon, infrastructure providers are starting deprecations 🌅</p></li></ul><h2 id="h-post-merge-cooldown" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Post-Merge Cooldown 🏝️</h2><p>The last year was, to say the least, intense. Teams worked tirelessly to get The Merge ready. After a winter of spec changes, spring of shadow forks and summer of testnet upgrades, mainnet-ready clients were finally released and everyone spent weeks refreshing <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bordel.wtf/">bordel.wtf</a>, waiting for TTD to hit. On September 15th, at 6:42 UTC, it happened, and Ethereum transitioned to proof-of-stake 🐼!</p><pre data-type="codeBlock" text="
                 ..              .
                %@@#     .      %#@#
               -@@%%- ........ -*@@@=
               +@@%+..        ..=#@@%
               +@@-.             .*@*
               .=+.               .-.
                 ..=#%+.     *@%+. .
                . +@@@@#    .@@@@# ..
                . @@@@@#     @@@@@* ..
               . +@#-%@#     %%-%@% ..
               . %@@%@@-    =*@+@@@. .
               . #@@@%=. .   -@@@@@...
              :...+#-.. +*+  .-@@@*  .
              :.       :@@@=    -:.  ..
              ::        :%-         .-.
            .*.-.        +         .:..
           :*%*-   :    +*.        .. :*-
           =@@%+=   .:=**-+.   .  .. -###.
     .-%%  #@@@%:.    +++**#::..    -%#@@+
    +@@@%.#@@@@@%.    =*+***-:    :.@%@@@@.  +%*
   :@@@@@#@@@@@@%-.   =++*++.    :-%@%@@@@@%-#@@%-
   *@@@@@#@@@@@@@%:.  .#+-+#  .  :#@@@@@@@@@#%@@@%
   +@@@@@*@@@@@@@@#    :-:+   ...#@@@@@@@@@@*@@@@@.
   .@@@@%@@@@@@@@@@#==   .    =:@@@@@@@@@@@@#@@@@@.
    +@@@@@@@@@@@@@@@%*=.    .*%@@@@@@@@@@@@@@#@@@@.
     #@@@@@@@@@@@@@@@@@%+--+%@@@@@@%@@%@@@@@@@@@@%
      *%@@@@%+%====#%@@@@@@@@@@%%#%%%%%@@@@@@@@@@.
        .:. %=::     .-#@@@@@%-    ..-#*%@@@@@@#.
            =::..        ...        ...:-#---:.
            ....   ⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀ .....
            ...    ⠀⠀⠀⠀⠀⠀⣰⣿⣆⠀⠀⠀⠀⠀   ...
           ..      ⠀⠀⠀⠀⠀⣼⣿⣿⣿⣦⠀⠀⠀⠀   ...
           ...     ⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣷⡀⠀⠀    ..
           ...     ⠀⠀⢠⣿⣿⣿⣿⠿⣿⣿⣿⣷⡄⠀    .:.
           ...     ⠀⣰⣿⠿⢛⣩⣤⣶⣤⣉⠛⠿⣿⣆    ..
          . ..     ⢀⣡⣴⣾⣿⣿⣿⣿⣿⣿⣿⣷⣦⣌    ..
          #+:.     ⠀⢌⡙⠻⣿⣿⣿⣿⣿⣿⣿⠟⢋⡥     .:=*
        .*%#:..    ⠀⠈⠻⣷⣦⣉⠻⠿⠛⣩⣴⣾⠟⠀   ..:*@=
        -@@#.-..   ⠀⠀⠀⠙⢿⣿⣿⣶⣿⣿⡿⠋⠀⠀   ..:%@%.
        #@@%:...   ⠀⠀⠀⠀⠈⢻⣿⣿⣿⠟⠁⠀⠀⠀  ..:-@@@:
       .%@@@=:.... ⠀⠀⠀⠀⠀⠀⠹⣿⠋⠀⠀⠀⠀⠀ ....*@@@=
       =@@@@%......                 ...=@@@@+
       *@@@@@=:...                ....:+@@@@*
       %@@@@@@+-. .              ....::#@@@@#
       %@@@@@@@+-... .           ...:=%@@@@@%
       @@@@@@@@@*:....        .....:=%@@@@@@%
       @@@@@@@@@@*-...............:*@@@@@@@@*
      .@@@@@@@@@@@*.............  :@@@@@@@@@+
       *@@@@@@@@*-  .  ......      .%@@@@@@@:
       +@@@@@@@=                    .%@@@@@@:
      .#@@@@@@+                      :@@@@@@@*
     -%@@@@@@@*                      -@@@@@@@@#.
    :%@@@@@@@@@                      .@@@%@%@@#+
    #-@#@*@@@@:                       .%@@=@+@%.
    ..-=#*@*:                           .: :.
"><code>
                 ..              .
                %@@#     .      %#@#
               <span class="hljs-operator">-</span>@@<span class="hljs-operator">%</span><span class="hljs-operator">%</span><span class="hljs-operator">-</span> ........ <span class="hljs-operator">-</span><span class="hljs-operator">*</span>@@@<span class="hljs-operator">=</span>
               <span class="hljs-operator">+</span>@@<span class="hljs-operator">%</span><span class="hljs-operator">+</span>..        ..=#@@<span class="hljs-operator">%</span>
               <span class="hljs-operator">+</span>@@<span class="hljs-operator">-</span>.             .*@<span class="hljs-operator">*</span>
               .=<span class="hljs-operator">+</span>.               .-.
                 ..=#<span class="hljs-operator">%</span><span class="hljs-operator">+</span>.     *@<span class="hljs-operator">%</span><span class="hljs-operator">+</span>. .
                . +@@@@#    .@@@@# ..
                . @@@@@#     @@@@@<span class="hljs-operator">*</span> ..
               . +@#<span class="hljs-operator">-</span><span class="hljs-operator">%</span>@#     <span class="hljs-operator">%</span><span class="hljs-operator">%</span><span class="hljs-operator">-</span><span class="hljs-operator">%</span>@<span class="hljs-operator">%</span> ..
               . %@@<span class="hljs-operator">%</span>@@<span class="hljs-operator">-</span>    <span class="hljs-operator">=</span><span class="hljs-operator">*</span>@<span class="hljs-operator">+</span>@@@. .
               . #@@@<span class="hljs-operator">%</span><span class="hljs-operator">=</span>. .   <span class="hljs-operator">-</span>@@@@@...
              :...+#<span class="hljs-operator">-</span>.. <span class="hljs-operator">+</span><span class="hljs-operator">*</span><span class="hljs-operator">+</span>  .-@@@<span class="hljs-operator">*</span>  .
              :.       :@@@<span class="hljs-operator">=</span>    <span class="hljs-operator">-</span>:.  ..
              ::        :<span class="hljs-operator">%</span><span class="hljs-operator">-</span>         .-.
            .*.-.        +         .:..
           :<span class="hljs-operator">*</span><span class="hljs-operator">%</span><span class="hljs-operator">*</span><span class="hljs-operator">-</span>   :    <span class="hljs-operator">+</span><span class="hljs-operator">*</span>.        .. :<span class="hljs-operator">*</span><span class="hljs-operator">-</span>
           <span class="hljs-operator">=</span>@@<span class="hljs-operator">%</span><span class="hljs-operator">+</span><span class="hljs-operator">=</span>   .:<span class="hljs-operator">=</span><span class="hljs-operator">*</span><span class="hljs-operator">*</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span>.   .  .. <span class="hljs-operator">-</span>###.
     .-<span class="hljs-operator">%</span><span class="hljs-operator">%</span>  #@@@<span class="hljs-operator">%</span>:.    +<span class="hljs-operator">+</span><span class="hljs-operator">+</span><span class="hljs-operator">*</span><span class="hljs-operator">*</span>#::..    <span class="hljs-operator">-</span><span class="hljs-operator">%</span>#@@<span class="hljs-operator">+</span>
    <span class="hljs-operator">+</span>@@@<span class="hljs-operator">%</span>.#@@@@@<span class="hljs-operator">%</span>.    =<span class="hljs-operator">*</span><span class="hljs-operator">+</span><span class="hljs-operator">*</span><span class="hljs-operator">*</span><span class="hljs-operator">*</span><span class="hljs-operator">-</span>:    :.@<span class="hljs-operator">%</span>@@@@.  +<span class="hljs-operator">%</span><span class="hljs-operator">*</span>
   :@@@@@#@@@@@@<span class="hljs-operator">%</span><span class="hljs-operator">-</span>.   =<span class="hljs-operator">+</span><span class="hljs-operator">+</span><span class="hljs-operator">*</span><span class="hljs-operator">+</span><span class="hljs-operator">+</span>.    :<span class="hljs-operator">-</span><span class="hljs-operator">%</span>@<span class="hljs-operator">%</span>@@@@@<span class="hljs-operator">%</span><span class="hljs-operator">-</span>#@@<span class="hljs-operator">%</span><span class="hljs-operator">-</span>
   <span class="hljs-operator">*</span>@@@@@#@@@@@@@<span class="hljs-operator">%</span>:.  .#<span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span>#  .  :#@@@@@@@@@#<span class="hljs-operator">%</span>@@@<span class="hljs-operator">%</span>
   <span class="hljs-operator">+</span>@@@@@<span class="hljs-operator">*</span>@@@@@@@@#    :<span class="hljs-operator">-</span>:<span class="hljs-operator">+</span>   ...#@@@@@@@@@@<span class="hljs-operator">*</span>@@@@@.
   .@@@@<span class="hljs-operator">%</span>@@@@@@@@@@#<span class="hljs-operator">=</span><span class="hljs-operator">=</span>   .    =:@@@@@@@@@@@@#@@@@@.
    +@@@@@@@@@@@@@@@<span class="hljs-operator">%</span><span class="hljs-operator">*</span><span class="hljs-operator">=</span>.    .*<span class="hljs-operator">%</span>@@@@@@@@@@@@@@#@@@@.
     #@@@@@@@@@@@@@@@@@<span class="hljs-operator">%</span><span class="hljs-operator">+</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">+</span><span class="hljs-operator">%</span>@@@@@@<span class="hljs-operator">%</span>@@<span class="hljs-operator">%</span>@@@@@@@@@@<span class="hljs-operator">%</span>
      <span class="hljs-operator">*</span><span class="hljs-operator">%</span>@@@@<span class="hljs-operator">%</span><span class="hljs-operator">+</span><span class="hljs-operator">%</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span><span class="hljs-operator">=</span>#<span class="hljs-operator">%</span>@@@@@@@@@@<span class="hljs-operator">%</span><span class="hljs-operator">%</span>#<span class="hljs-operator">%</span><span class="hljs-operator">%</span><span class="hljs-operator">%</span><span class="hljs-operator">%</span><span class="hljs-operator">%</span>@@@@@@@@@@.
        .:. %<span class="hljs-operator">=</span>::     .-#@@@@@<span class="hljs-operator">%</span><span class="hljs-operator">-</span>    ..-#<span class="hljs-operator">*</span><span class="hljs-operator">%</span>@@@@@@#.
            =::..        ...        ...:<span class="hljs-operator">-</span>#<span class="hljs-operator">-</span><span class="hljs-operator">-</span><span class="hljs-operator">-</span>:.
            ....   ⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠀ .....
            ...    ⠀⠀⠀⠀⠀⠀⣰⣿⣆⠀⠀⠀⠀⠀   ...
           ..      ⠀⠀⠀⠀⠀⣼⣿⣿⣿⣦⠀⠀⠀⠀   ...
           ...     ⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣷⡀⠀⠀    ..
           ...     ⠀⠀⢠⣿⣿⣿⣿⠿⣿⣿⣿⣷⡄⠀    .:.
           ...     ⠀⣰⣿⠿⢛⣩⣤⣶⣤⣉⠛⠿⣿⣆    ..
          . ..     ⢀⣡⣴⣾⣿⣿⣿⣿⣿⣿⣿⣷⣦⣌    ..
          #<span class="hljs-operator">+</span>:.     ⠀⢌⡙⠻⣿⣿⣿⣿⣿⣿⣿⠟⢋⡥     .:<span class="hljs-operator">=</span><span class="hljs-operator">*</span>
        .*<span class="hljs-operator">%</span>#:..    ⠀⠈⠻⣷⣦⣉⠻⠿⠛⣩⣴⣾⠟⠀   ..:<span class="hljs-operator">*</span>@<span class="hljs-operator">=</span>
        <span class="hljs-operator">-</span>@@#.-..   ⠀⠀⠀⠙⢿⣿⣿⣶⣿⣿⡿⠋⠀⠀   ..:<span class="hljs-operator">%</span>@<span class="hljs-operator">%</span>.
        #@@<span class="hljs-operator">%</span>:...   ⠀⠀⠀⠀⠈⢻⣿⣿⣿⠟⠁⠀⠀⠀  ..:<span class="hljs-operator">-</span>@@@:
       .%@@@<span class="hljs-operator">=</span>:.... ⠀⠀⠀⠀⠀⠀⠹⣿⠋⠀⠀⠀⠀⠀ ....*@@@<span class="hljs-operator">=</span>
       <span class="hljs-operator">=</span>@@@@<span class="hljs-operator">%</span>......                 ...=@@@@<span class="hljs-operator">+</span>
       <span class="hljs-operator">*</span>@@@@@<span class="hljs-operator">=</span>:...                ....:<span class="hljs-operator">+</span>@@@@<span class="hljs-operator">*</span>
       <span class="hljs-operator">%</span>@@@@@@<span class="hljs-operator">+</span><span class="hljs-operator">-</span>. .              ....::#@@@@#
       <span class="hljs-operator">%</span>@@@@@@@<span class="hljs-operator">+</span><span class="hljs-operator">-</span>... .           ...:<span class="hljs-operator">=</span><span class="hljs-operator">%</span>@@@@@<span class="hljs-operator">%</span>
       @@@@@@@@@<span class="hljs-operator">*</span>:....        .....:<span class="hljs-operator">=</span><span class="hljs-operator">%</span>@@@@@@<span class="hljs-operator">%</span>
       @@@@@@@@@@<span class="hljs-operator">*</span><span class="hljs-operator">-</span>...............:<span class="hljs-operator">*</span>@@@@@@@@<span class="hljs-operator">*</span>
      .@@@@@@@@@@@<span class="hljs-operator">*</span>.............  :@@@@@@@@@<span class="hljs-operator">+</span>
       <span class="hljs-operator">*</span>@@@@@@@@<span class="hljs-operator">*</span><span class="hljs-operator">-</span>  .  ......      .%@@@@@@@:
       <span class="hljs-operator">+</span>@@@@@@@<span class="hljs-operator">=</span>                    .%@@@@@@:
      .#@@@@@@<span class="hljs-operator">+</span>                      :@@@@@@@<span class="hljs-operator">*</span>
     <span class="hljs-operator">-</span><span class="hljs-operator">%</span>@@@@@@@<span class="hljs-operator">*</span>                      <span class="hljs-operator">-</span>@@@@@@@@#.
    :<span class="hljs-operator">%</span>@@@@@@@@@                      .@@@<span class="hljs-operator">%</span>@<span class="hljs-operator">%</span>@@#<span class="hljs-operator">+</span>
    #<span class="hljs-operator">-</span>@#@<span class="hljs-operator">*</span>@@@@:                       .%@@<span class="hljs-operator">=</span>@<span class="hljs-operator">+</span>@<span class="hljs-operator">%</span>.
    ..-<span class="hljs-operator">=</span>#<span class="hljs-operator">*</span>@<span class="hljs-operator">*</span>:                           .: :.
</code></pre><blockquote><p>Merge panda, courtesy of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ConsenSys/teku/pull/5877/files">Teku</a></p></blockquote><p>Hours later, only minor issues were reported on the AllCoreDevs call. One week post-merge, the assessment was the same on the consensus layer call. All things considered, things went about as smoothly as they could have🍾!</p><p>So, with that done, teams agreed to take a well-deserved break from the regular cadence of ACD &amp; CL calls. That said, work on the next upgrades is still happening in the background.</p><h2 id="h-shanghai-candidate-eips" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Shanghai Candidate EIPs 📜</h2><p>With The Merge done, eyes are starting to turn to the next network upgrade: Shanghai/Capella 🌃</p><p>On the consensus layer, Capella is expected to include Beacon Chain withdrawals, and potentially EIP-4844. On the execution layer, Shanghai already has <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md">several EIPs under consideration</a>. So much so that, earlier this year, we decided to pause adding more to the list until The Merge had passed.</p><p>While we wait for ACD calls to resume, EIP champions who want their EIP considered for Shanghai are encouraged to signal this on Ethereum Magicians using the <code>shanghai-candidate</code> tag.</p><p>This way, conversations about the merit of specific EIPs can happen asynchronously, and contributors have the opportunity to take a step back without feeling like they may miss a decision about a specific EIP being included or rejected from Shanghai.</p><h3 id="h-breakout-rooms-and-f2f-discussions" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Breakout Rooms &amp; F2F Discussions 📣</h3><p>While most conversations have been happening on Ethereum Magicians and discord, calls and in-person sessions have been organized for topics where synchronous discussion is needed.</p><p>Specifically, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.eip4844.com/">EIP-4844</a> has had series of public calls covering both the work on the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues?q=is%3Aissue+%22KZG-Ceremony+Call%22">KZG Ceremony</a> and the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues?q=is%3Aissue+%224844+breakout%22">client implementation prototypes</a>. As a reminder, the KZG Ceremony is required to provide the randomness seed to be used as part of sharding data verification. <code>@pintail</code> had a great ELI5 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/pintail_xyz/status/1541853475998416897">here</a>, and more info on the process can be found <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/kzg-ceremony">in this repo</a>.</p><p>Next week, during Devcon, an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://app.devcon.org/schedule/etjqdz">Ethereum Magicians gathering</a> is organized to serve as both a retrospective on The Merge and an opportunity for client teams, researchers, developers, EIP champions, and other attendees to discuss future changes to Ethereum. It&apos;s also expected that there will be several follow-up sessions covering specific EIPs, or sets of proposals, such as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://app.devcon.org/schedule/ADVND7">this one on EVM-related EIPs</a>.</p><p>This mix of async discussions and live breakouts will hopefully help formal conversations about Shanghai&apos;s scope be both better informed and more effective once they resume. This will be the main topic of the next AllCoreDevs, scheduled for <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/624">October 27th</a>.</p><h2 id="h-testnet-deprecations" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Testnet Deprecations 🌅</h2><p>As <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/06/21/testnet-deprecation">announced back in June</a>, Kiln, Ropsten and Rinkeby are being deprecated in favor of Goerli &amp; Sepolia.</p><p>The Kiln testnet was recently sunset and Ropsten is scheduled next, with a shut down date of December 2022. Rinkeby will stay up until mid-2023, but will not apply any post-London network upgrades, including The Merge. It therefore isn&apos;t an ideal staging environment for mainnet anymore.</p><p>In addition to this, infrastructure and tooling providers are now starting to remove support for these networks. Both <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/etherscan/status/1569311894279958531">Etherscan</a> and <code>ethers-rs</code> have made such announcements this week. Expect more of these in the months to come.</p><p>So, if you haven&apos;t done so yet, you should be moving to Goerli or Sepolia very 🔜!</p><h2 id="h-next-steps" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Next Steps 👀</h2><p>That&apos;s it, we merged, Holy shit, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=eCpj9tMIDIY">we merged !!!</a> and things didn&apos;t break! It&apos;s still a bit surreal.</p><div data-type="twitter" tweetId="1577386632210419713" tweetData="{&quot;__typename&quot;:&quot;Tweet&quot;,&quot;lang&quot;:&quot;en&quot;,&quot;favorite_count&quot;:1318,&quot;created_at&quot;:&quot;2022-10-04T19:54:14.000Z&quot;,&quot;display_text_range&quot;:[0,83],&quot;entities&quot;:{&quot;hashtags&quot;:[],&quot;urls&quot;:[],&quot;user_mentions&quot;:[],&quot;symbols&quot;:[]},&quot;id_str&quot;:&quot;1577386632210419713&quot;,&quot;text&quot;:&quot;kinda wild ethereum is now just running PoS in the background like it&apos;s no biggie ✨&quot;,&quot;user&quot;:{&quot;id_str&quot;:&quot;80722677&quot;,&quot;name&quot;:&quot;timbeiko.eth&quot;,&quot;screen_name&quot;:&quot;TimBeiko&quot;,&quot;is_blue_verified&quot;:true,&quot;profile_image_shape&quot;:&quot;Circle&quot;,&quot;verified&quot;:false,&quot;profile_image_url_https&quot;:&quot;https://storage.googleapis.com/papyrus_images/3811a0627444336ef4209cf8181f5c7b78c55436a60b5a44bff09a8c057b4358.jpg&quot;},&quot;edit_control&quot;:{&quot;edit_tweet_ids&quot;:[&quot;1577386632210419713&quot;],&quot;editable_until_msecs&quot;:&quot;1664915054000&quot;,&quot;is_edit_eligible&quot;:true,&quot;edits_remaining&quot;:&quot;5&quot;},&quot;conversation_count&quot;:61,&quot;news_action_type&quot;:&quot;conversation&quot;,&quot;isEdited&quot;:false,&quot;isStaleEdit&quot;:false}"> 
  <div class="twitter-embed embed">
    <div class="twitter-header">
        <div style="display:flex">
          <a target="_blank" href="https://twitter.com/TimBeiko">
              <img alt="User Avatar" class="twitter-avatar" src="https://storage.googleapis.com/papyrus_images/3811a0627444336ef4209cf8181f5c7b78c55436a60b5a44bff09a8c057b4358.jpg" />
            </a>
            <div style="margin-left:4px;margin-right:auto;line-height:1.2;">
              <a target="_blank" href="https://twitter.com/TimBeiko" class="twitter-displayname">timbeiko.eth</a>
              <p><a target="_blank" href="https://twitter.com/TimBeiko" class="twitter-username">@TimBeiko</a></p>
    
            </div>
            <a href="https://twitter.com/TimBeiko/status/1577386632210419713" target="_blank">
              <img alt="Twitter Logo" class="twitter-logo" src="https://paragraph.com/editor/twitter/logo.png" />
            </a>
          </div>
        </div>
      
    <div class="twitter-body">
      kinda wild ethereum is now just running PoS in the background like it's no biggie <img class="twitter-emoji" draggable="false" alt="✨" src="https://abs-0.twimg.com/emoji/v2/72x72/2728.png"/>
      
      
       
    </div>
    
     <div class="twitter-footer">
          <a target="_blank" href="https://twitter.com/TimBeiko/status/1577386632210419713" style="margin-right:16px; display:flex;">
            <img alt="Like Icon" class="twitter-heart" src="https://paragraph.com/editor/twitter/heart.png">
            1,318
          </a>
          <a target="_blank" href="https://twitter.com/TimBeiko/status/1577386632210419713"><p>2:54 PM • Oct 4, 2022</p></a>
        </div>
    
  </div> 
  </div><p>Looking ahead, planning is slowly starting for the next network upgrade, with discussions happening in both virtual and physical forums 🦄</p><p>If you want to help secure Ethereum&apos;s data layer, keep an eye out for announcements related to the KZG Ceremony. In the meantime, make sure you&apos;re moving to Goerli or Sepolia.</p><p>See you in Bogotà 👋🇨🇴!</p><hr><p>Thanks to Joe Schweitzer &amp; Trent Van Epps for feedback on the draft. Cover image by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://unsplash.com/@hnyuuu">Ningyu He</a>.</p>]]></content:encoded>
            <author>timbeiko@newsletter.paragraph.com (Tim Beiko)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/14989da8d0d135acd152e9bc27fb44dbad9e9cf7a64d07da87f8ed10d1618f97.jpg" length="0" type="image/jpg"/>
        </item>
        <item>
            <title><![CDATA[AllCoreDevs Update 012 ⛓]]></title>
            <link>https://paragraph.com/@timbeiko/allcoredevs-update-012</link>
            <guid>LEJOTXRYUH68DNmjxuzS</guid>
            <pubDate>Thu, 07 Jul 2022 17:12:08 GMT</pubDate>
            <description><![CDATA[Welcome to another AllCoreDevs update 👋🏻 This one is out a little later than I would have liked, but hopefully you&apos;ve followed the - deluge - of - blog - announcements over the past months. There&apos;s a lot to unpack, so let&apos;s get into it!TL;DR 👀Gray Glacier went live: block times are now back to ~13s 🕰After Sepolia, Goerli will be the last testnet to merge --- stakers, now is the time to triple-check your setup!If you have questions, join the next Merge Community Call 📣Kiln,...]]></description>
            <content:encoded><![CDATA[<p>Welcome to another AllCoreDevs update 👋🏻</p><p>This one is out a little later than I would have liked, but hopefully you&apos;ve followed <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/05/30/ropsten-merge-announcement/">the</a> - <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/06/03/ropsten-merge-ttd/">deluge</a> - <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/06/16/gray-glacier-announcement/">of</a> - <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/06/21/testnet-deprecation/">blog</a> - <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/06/30/sepolia-merge-announcement/">announcements</a> over the past months. There&apos;s a lot to unpack, so let&apos;s get into it!</p><h2 id="h-tldr" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">TL;DR 👀</h2><ul><li><p>Gray Glacier went live: block times are now back to ~13s 🕰</p></li><li><p>After Sepolia, Goerli will be the last testnet to merge --- <strong>stakers, now is the time to triple-check your setup!</strong></p><ul><li><p>If you have questions, join the next <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/564">Merge Community Call</a> 📣</p></li></ul></li><li><p>Kiln, Ropsten and Rinkeby are now deprecated, they will gradually be shut down after mainnet transitions to proof-of-stake 🌅</p></li><li><p>We&apos;ve had tons of community calls, mainly focused on either The Merge or <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.eip4844.com/">EIP-4844</a>: client implementations, specs, demos, there&apos;s a ton to dive into 🕳</p></li></ul><h2 id="h-gray-glacier" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Gray Glacier 🗻</h2><p>The <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/06/16/gray-glacier-announcement/">Gray Glacier</a> upgrade recently went live, pushing back the difficulty bomb hopefully for the last time.</p><p>Why was this necessary? When previously delaying the bomb in the Arrow Glacier upgrade, the prediction script used to assess its impact on block times was off, and block times started rising faster than expected. Client teams therefore agreed to this pushback so they could focus on shipping The Merge in normal network conditions and avoid a degraded experience for users over the next few months.</p><p>The Nethermind team authored the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-5133">EIP suggesting a new delay</a>. They also wrote <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://nethermind.notion.site/EIP-5133-Difficulty-Bomb-Delay-02bba2398b8b4e95a221338b259b2574">an excellent post</a> explaining how they verified it would happen as expected, and why previous scripts were wrong. It&apos;s a shame we probably won&apos;t get to re-use the insights from it 🙃.</p><p>As per <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/chart/blocktime">Etherscan</a>, block times are back down to normal:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ffc610a9c89ad74c42baffbc2011f6eb0afc70f33212633424173af60644a9b2.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>With this out of the way, back to The Merge!</p><h2 id="h-merge-updates" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Merge Updates 🐼</h2><p>We&apos;re getting closer and closer to moving away from proof-of-work on Ethereum. With <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/06/30/sepolia-merge-announcement/">Sepolia now merged</a>, only a single testnet merge remains: Goerli/Prater.</p><p>While the validator set on Sepolia is permissioned, anyone can run a validator on Prater, and run through The Merge with Goerli. If you run a validator on mainnet, <strong>this will be your last chance to run through the entire process on a testnet</strong>.</p><p>That said, <em>you don&apos;t need to wait</em> until Goerli/Prater to test things out! Ropsten is already post-merge, and its <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ropsten.launchpad.ethereum.org/en/">staking launchpad instance</a> now features a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ropsten.launchpad.ethereum.org/en/merge-readiness">merge readiness checklist</a> ✅.</p><p>In short, there are three things to remember for stakers:</p><ol><li><p><strong>EL &amp; CL Required:</strong> post-merge, to run a validator, you need to have both a full execution layer (EL) client (e.g. besu, erigon, geth, nethermind) and consensus layer (CL) client (e.g. lighthouse, lodestar, nimbus, prysm, teku) running in parallel. A few notes:</p><ul><li><p>This is also true for non-staking nodes: to follow the chain, you will need to run an EL/CL combo.</p></li><li><p>Like today, stakers can run multiple validator clients on a single node. In other words, the <code>many validators &lt;&gt; single EL &lt;&gt; single CL</code> setup works.</p></li></ul></li><li><p><strong>JWT Token:</strong> to ensure that the EL &lt;&gt; CL client communication channel is secure, the clients need to authenticate each other. This is done using a JWT token. Some clients will generate one automatically if not passed on startup, but be sure to check your client&apos;s documentation to configure this!</p></li><li><p><strong>Fee Recipient:</strong> last but not least, post-merge, validators receive priority fees from transactions when creating a block. To receive the funds, rather than burning them, a <code>Fee Recipient</code> address must be set. The good news is that these fees are paid on the EL, and therefore are immediately transferable by the address where they are received.</p></li></ol><p>Again, if you haven&apos;t tested all of this, now is the time to stand up a node on a testnet and make sure things work as expected.</p><p>⚡️ If you&apos;d like to go even further, and have your validators accept MEV-extracting blocks post-merge, you can run <code>mev-boost</code>. The Flashbots team published a piece about its design and how it fits within the broader Ethereum roadmap <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://writings.flashbots.net/writings/why-run-mevboost/">here</a> ⚡️</p><p>The vast majority of merge-related changes have to do with how to run a node on the network. For end-users, no action is required. Smart contract and infrastructure providers can refer to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2021/11/29/how-the-merge-impacts-app-layer/">this post</a> for a deep dive into changes which may affect them. At a high level, they are:</p><ol><li><p>The zeroing out of several PoW-related values in the EL block headers (difficulty, ommers, block reward, etc.)</p></li><li><p>The <code>DIFFICULTY</code> opcode being renamed to <code>PREVRANDAO</code> and serving as an indicator of whether The Merge happened on the network (see <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4399">EIP-4399</a>)</p></li><li><p>Block production going from a ~13s average time with high variance to exact multiples of 12s</p></li><li><p>The introduction of a <code>finalized</code> tag in the JSON RPC API, which returns the last finalized block on the network</p></li></ol><p>All these changes can currently be tested on Ropsten, Sepolia &amp; Kiln, and will be live on Goerli once it transitions to proof-of-stake. A <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/564">Merge Community Call</a> has been scheduled for July 15th to provide an opportunity for users and developers to ask questions about all things merge-related 😁!</p><h2 id="h-testnet-deprecation" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Testnet Deprecation 🌅</h2><p>While there was <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/06/21/testnet-deprecation/">a full announcement</a> about this, it&apos;s worth repeating that, post-merge, the two testnets maintained by client teams will be Goerli (using Prater for its Beacon Chain) and Sepolia. Kiln, Rinkeby and Ropsten will be deprecated. Kovan has already been.</p><p>Goerli, which post-merge will refer to today&apos;s Goerli/Prater network combo, will continue having an open validator set where stakers can test things before they go live on mainnet.</p><p>Sepolia, on the other hand, has a permissioned validator set. This provides application developers with a more stable network. The chain, being relatively new, also makes it easy for users to quickly sync its state and history.</p><p>The deprecated testnets will be shut down gradually over the next year. First, Kiln will be shut down shortly after The Merge happens on mainnet. Then, Ropsten is expected to be sunset before 2023. Finally, users of Rinkeby will have ~1 year to migrate before the network stops being supported.</p><p>It is worth noting that while Ropsten and Rinkeby will not be shut down right away, they may not have the same protocol rules as the Ethereum mainnet. Rinkeby will <strong>not</strong> run through The Merge so will be one upgrade behind as soon as mainnet transitions to proof-of-stake. Similarly, while Ropsten is already post-merge, no further network upgrades will be deployed on the network. If one were to happen before 2023, Ropsten would also fall behind mainnet.</p><p>If you haven&apos;t done so, now is the time to plan your testnet migration!</p><h2 id="h-community-calls" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Community Calls 📣</h2><p>In the past two months, we&apos;ve had several community calls, here&apos;s an overview!</p><h3 id="h-merge-community-call" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Merge Community Call 🐼</h3><p>In June, a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/532">Merge Community Call</a> provided an overview of the latest Merge progress, as well as a forum for people to ask questions about the upgrade. If you plan on attending the next one, I highly recommend watching <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://youtu.be/qG-A5i6x6N8">the recording</a> for this, as several great questions were asked. Again, the next call is scheduled for <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/564">July 15, 14:00 UTC</a>.</p><h3 id="h-eip-4844" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">EIP-4844 🏗</h3><p>Also known as &quot;proto-danksharding&quot;, EIP-4844 proposes an intermediate sharding specification for Ethereum which sets the foundation for full sharding, while also immediately enabling lower transaction fees on L2s. A <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.eip4844.com/">full website</a> details the proposal and its benefits. There are currently two parallel 4844 development &quot;tracks&quot;: the preparation of a KZG Ceremony and prototype implementations of the changes in clients.</p><p>The KZG Ceremony is necessary to provide a random input for the proving scheme used to verify shard data. If that last sentence didn&apos;t make sense to you, I recommend reading <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/pintail_xyz/status/1541853475998416897">pintail&apos;s excellent tweetstorm</a> explaining the purpose of the ceremony in more detail.</p><p>At a high level, the ceremony requires specifications to be written, clients who run the specification to be implemented, a coordinating server which aggregates participants&apos; inputs to the ceremony and extensive audits of all these things. Researchers and implementers are having <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/546">regular calls</a> to coordinate and share progress updates.</p><p>A summary of the current status of the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/kzg-ceremony-specs/">ceremony specifications</a> was given on a recent <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/543">4844 Breakout Call</a>. Beyond the specs themselves, a ceremony client and coordinator were prototyped during the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/vdWijden/status/1535938358400122883">EthPrague hackathon</a>! Work on the production client and coordinator implementations has also begun. A rough timeline of the implementation work, audits and public ceremony is available <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://notes.ethereum.org/@CarlBeek/kzg_ceremony_timelines">here</a>.</p><p>On the 4844 Breakout, the Optimism and Coinbase teams demoed a Geth/Prysm prototype which implemented the core EIP-4844 functionality. As <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://youtu.be/flx1hDUV8O0?t=647">seen in the recording</a>, a node pair is stood up and a file is submitted as a blob on the network. The file is then retrieved from the network, and its contents are verified to match the original. The code for the prototype is available <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Inphi/eip4844-interop">here</a>. This was the first time 4844 was seen working in the wild!</p><p>The rest of the call focused on various design &amp; implementation issues related to the EIP. The <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.google.com/document/d/1KgKZnb5P07rdLBb_nRCaXhzG_4PBoZXtFQNzKO2mrvc/edit#">notes</a> contain an overview, and an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://notes.ethereum.org/@timbeiko/4844-open-issues">Open Issues List</a> will be used as a central place to track the various concerns, potential solutions and next steps in addressing them. Since the call, fixes related to blob verification times have been merged into the specs 💪.</p><h3 id="h-merge-clients-peepaneip" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Merge Clients PEEPanEIP 😸</h3><p>The Ethereum Cat Herders&apos; PEEPanEIP series usually has EIP authors go over their proposed changes and answer hosts&apos; questions. For The Merge, the Cat Herders have recently produced both a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://youtu.be/kTcJqThCdns">general overview of the changes</a> with Mikhail Kalinin, who wrote most of the merge specs, as well as a series of deep dives with client teams.</p><p>The series is still in progress, but so far we&apos;ve had appearances by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://youtu.be/A3VhaV39OB8">Erigon</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://youtu.be/pRAIiefswCY">Geth</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://youtu.be/50xRX5OcWgo">Nimbus</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://youtu.be/-1ynTsBO9tY">Besu</a>. Prysm, Nethermind and others are scheduled in the coming weeks. If you want to contribute to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://dankradfeist.de/ethereum/2022/03/24/run-the-majority-client-at-your-own-peril.html">client diversity</a> but aren&apos;t sure what client to use, this series provides a great overview of the various EL and CL implementations. Stay tuned for the full set of deep dives!</p><h2 id="h-next-steps" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Next Steps ✅</h2><p>With <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/06/16/gray-glacier-announcement/">Gray Glacier</a> out of the way, client teams are now squarely focused on The Merge. Goerli being both the last testnet and the one with the largest community, we&apos;d like its merge to resemble what we expect to happen on mainnet as much as possible. This way, stakers, node operators and developers can have one proper dress rehearsal before <em>The Real Thing</em>.</p><p>Keep an eye out on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://blog.ethereum.org">blog.ethereum.org</a> and other community news sources for information about this final testnet transition! Once Goerli has successfully transitioned, there&apos;s only one more network left: mainnet 🚢</p>]]></content:encoded>
            <author>timbeiko@newsletter.paragraph.com (Tim Beiko)</author>
        </item>
        <item>
            <title><![CDATA[AllCoreDevs Update 011 ⛓ ]]></title>
            <link>https://paragraph.com/@timbeiko/allcoredevs-update-011</link>
            <guid>Cc5wSouup57XxCCBovNn</guid>
            <pubDate>Wed, 04 May 2022 20:25:27 GMT</pubDate>
            <description><![CDATA[From Shadow Forks to Mainnet 🗺One year after the first Rayonism prototypes, we now have robust merge implementations across all Ethereum clients. The path from where we are today to fully transitioning Ethereum to proof-of-stake is now clearly in sight. We need:[ ] A few mainnet Shadow Forks without issues[ ] Clients passing the various merge test suites[ ] Smooth deployments across existing public testnets... and that&apos;s it! Once these things happen, and we&apos;ve observed them be stab...]]></description>
            <content:encoded><![CDATA[<h1 id="h-from-shadow-forks-to-mainnet" class="text-4xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">From Shadow Forks to Mainnet 🗺</h1><p>One year after the first <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://rayonism.io/">Rayonism</a> prototypes, we now have robust merge implementations across all Ethereum clients.</p><p>The path from where we are today to fully transitioning Ethereum to proof-of-stake is now clearly in sight. We need:</p><ul><li><p>[ ] A few mainnet Shadow Forks without issues</p></li><li><p>[ ] Clients passing the various merge test suites</p></li><li><p>[ ] Smooth deployments across existing public testnets</p></li></ul><p>... and that&apos;s it! Once these things happen, and we&apos;ve observed them be stable for a few weeks, we&apos;ll be ready to move to mainnet!</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0ae1b1cfaf427248ecb6f1dae09d0409bc3d2d5054d3a3632cce4d58c4112373.png" alt="The journey from the Beacon Chain deposit contract launch to Ethereum&apos;s full transition to proof-of-stake, by Trent Van Epps. Note that TTD refers to the Terminal Total Difficulty at which The Merge would occur." blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">The journey from the Beacon Chain deposit contract launch to Ethereum&apos;s full transition to proof-of-stake, by Trent Van Epps. Note that TTD refers to the Terminal Total Difficulty at which The Merge would occur.</figcaption></figure><p>Let&apos;s expand on each of them.</p><h2 id="h-shadow-forks" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Shadow Forks 👻</h2><p>Over the past year, we&apos;ve added a new step to our network upgrade process: Shadow Forks.</p><p>There have been <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherworld.co/2022/04/20/ethereum-mainnet-shadow-forking-an-overview/">a</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/timbeiko/eth-roadmap-faq#shadow-forking">few</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/parithosh_j/status/1513129881927884801">explainers</a> written about shadow forks already. In short, a shadow fork is a new devnet created by forking a live network with a small number of nodes. The shadow fork keeps the same state, history &amp; chain ID as the main chain.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/464e4dadf951b8649510ab9020e4d0a16fd1f3bab76299a14a599705e215597f.png" alt="Shadow Fork network overview, via @parithosh_j" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Shadow Fork network overview, via @parithosh_j</figcaption></figure><p>Running these allows us to observe how clients perform in conditions as close to public networks as possible. For the nodes on the shadow fork, The Merge effectively happens. After that, transactions from the main chain can be replayed on the fork, allowing us to see how nodes behave under mainnet conditions. We can also sync new nodes to the shadow fork to ensure that they still join the network as expected.</p><p>During these shadow forks, every execution layer (EL) and consensus layer (CL) client combination is tested, and the goal is for each pair to transition and keep running smoothly afterwards. With 4 EL and 5 CL clients, there are 20 pairs to test!</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/22d1eb54cf883b8658ed50f2535cd274f54f2ed41808cff70ca772d916b75b75.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>So far, we&apos;ve had multiple Goerli shadow forks along with two mainnet ones. The second mainnet shadow fork (MSF2) went <em>almost</em> perfectly. Another one, MSF3, is planned for this week. <strong>If</strong> MSF3 happens without issues and remains stable afterwards, we could move towards upgrading existing testnets. To play it safe, we will continue to launch shadow forks regularly until (and perhaps even during!) testnet deployments.</p><p>In parallel to this, we are also doubling down on several other testing efforts.</p><h2 id="h-merge-testing" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Merge Testing 🗜</h2><p>The Merge has been a unique upgrade to test because it spans both the execution and consensus layers of Ethereum. While we have extensive testing tools for each of these layers in isolation, a lot of new infrastructure to test cross-layer interactions has been necessary.</p><h3 id="h-hive-tests" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Hive Tests</h3><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/hive">Hive</a> is the integration testing platform we historically used for the EL. Over the past few months, we&apos;ve added the ability for it to mock CL behaviour and test various ELs against that. This has helped us test the new <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-apis/tree/main/src/engine">Engine APIs</a> which EL and CL clients use to communicate. To test the PoW -&gt; PoS transition, a simulator which mocks the EL behaviour will need to be added as well.</p><p>Client teams are currently prioritizing supporting Hive and ensuring they pass all test suites, while the testing teams are focused on adding EL mocking to it.</p><h3 id="h-kurtosis" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Kurtosis</h3><p>In addition to our existing testing infrastructure, we have partnered with [Kurtosis] (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.kurtosistech.com/">https://www.kurtosistech.com/</a>) to automatically spin up staging networks which we run through The Merge on a daily basis.</p><p>These help us find implementation issues across clients and monitor various network health metrics. As things stabilize on that front, the next step is to create harsher network conditions to see how clients recover. For example, pausing EL or CL clients right before the transition and unpausing them after, or removing their database post-merge and checking how they handle syncing.</p><h3 id="h-everything-else" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">... Everything Else!</h3><p>In addition to improving Hive and working with Kurtosis, a long tail of testing tools were built by the client, research and testing teams to help us catch every possible edge case. They include <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/MariusVanDerWijden/merge-fuzz">fuzzers</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/MariusVanDerWijden/go-ethereum/tree/merge-bad-block-creator">bad block generators</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/protolambda/mergemock">EL/CL mockers</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/go-ethereum/issues/24720">debugging APIs</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://antithesis.com/">more fuzzers</a>. A wishlist of other tools is available <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/520">here</a>.</p><p>Our priority is getting clients to pass unit/spec tests as well as integration tests in Hive and Kurtosis. However, these other tools mentioned above can help us identify and debug edge cases we missed and then subsequently incorporate in routine test suites.</p><p>On a more human front, The Merge has massively increased the amount of cross-team coordination &amp; collaboration on testing. CL and EL teams have had to work each other closely for the first time, ensuring that their software works with each client on the other layer. This had lead to more, and deeper, collaboration across our entire testing infrastructure 😁</p><h2 id="h-public-testnets" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Public Testnets 🏗</h2><p>Once shadow forks are going smoothly and test suites are passing across all clients, we will be ready to deploy The Merge to the existing public testnets, namely Ropsten, Goerli and Sepolia.</p><p>While public testnets do not stress test clients as much as mainnet shadow forks, they require broader coordination within the Ethereum ecosystem.</p><p>The Merge requires more from node operators than previous Ethereum upgrades. In past upgrades, node operators and miners on the EL only needed to update a single piece of software: their EL client. For The Merge, they will need to download, configure and run a CL client in parallel.</p><p>On the CL side, it was always strongly recommended to run an EL node when operating a validator. Pre-merge, though, this could be outsourced to third party service providers. For The Merge, stakers will need to run an EL to verify the validity of blocks and receive transaction fees when proposing a block (or <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.symphonious.net/2022/04/09/exploring-eth2-stealing-inclusion-fees-from-public-beacon-nodes/">risk losing them</a> if outsourcing their EL!).</p><p>Node operators, stakers, and infrastructure providers should make sure they test their configurations on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/03/14/kiln-merge-testnet/">Kiln</a> to be ready for deployments on testnets. EthStaker has also published <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=6GXQdhhP_Ag">various</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=caaV4oMmWe8">tutorials</a> on how to do this.</p><p>Once Ropsten, Goerli and Sepolia have forked and stabilized (assuming no further issues are found) we will then be ready to set a merge date for mainnet!</p><h2 id="h-mainnet" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Mainnet 🍾</h2><p>The process for transitioning the Ethereum mainnet to proof-of-stake will be identical to the process followed for testnets. That said, it is worth re-emphasizing that the transition happens in three steps:</p><ol><li><p>Clients release software which supports The Merge and starts &quot;listening&quot; for a specific Total Difficulty, called <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/consensus-specs/pull/2462/">Terminal Total Difficulty (TTD)</a>, value to be hit on the proof-of-work chain</p></li><li><p>Once the TTD is hit, the next block gets produced by the validator who is assigned to the next Beacon Chain slot. This block will be the first post-merge block and contain both end user transactions and proof-of-stake consensus data (e.g. attestations, deposits, slashings, etc.).</p></li><li><p>The first post-merge block is finalized. At this point, Ethereum has no more reliance on proof-of-work as part of its fork choice rule. In other words, we&apos;ve fully moved to PoS 🎉</p></li></ol><p>The image below by Danny Ryan illustrates the process:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e7e78f2c2ae544910856d4f161e7d7b102f3faa1c6b6ce88b278f467f8d52731.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>The leftmost blocks show the EL and CL moving in parallel pre-merge, where PoW (EL) blocks contain transactions and Beacon Chain (CL) blocks contain proof-of-stake consensus data.</p><p>The second PoW block from the left is when TTD would have been hit or exceeded. The third block on the bottom is the first post-merge block, containing both the proof-of-stake consensus data and the execution layer transactions.</p><p>The fourth block, and subsequent ones, have no link back to proof-of-work. Once these are finalized, the network could only be disrupted beyond that point in circumstances comparable to a 51% attack under proof-of-work.</p><p>In other words, by that point, we&apos;ve merged 🍾!</p><hr><p>The Merge is by <strong>far</strong> the most complex upgrade we&apos;ve ever planned for Ethereum. Teams and individual contributors have been working tirelessly for over a year now, and the finish line is finally in sight.</p><p>While everyone is excited to see Ethereum transition to proof-of-stake, this is not the time to cut corners: ensuring a safe and seamless transition for Ethereum users and the rich ecosystem built on the network is our #1 priority. We&apos;re <em>almost</em> there 😁!</p><p>Wen merge? 🔜.</p><hr><p><em>Thank you to Trent Van Epps, Danny Ryan, Mario Vega, and others for reviews &amp; additions to this update.</em></p>]]></content:encoded>
            <author>timbeiko@newsletter.paragraph.com (Tim Beiko)</author>
        </item>
        <item>
            <title><![CDATA[AllCoreDevs Update 010 ⛓]]></title>
            <link>https://paragraph.com/@timbeiko/allcoredevs-update-010</link>
            <guid>bz0vMYkNwtN94w0J22Ca</guid>
            <pubDate>Fri, 25 Mar 2022 17:40:29 GMT</pubDate>
            <description><![CDATA[Welcome to another AllCoreDevs update... better late than never 🙈!TL;DR 👀So much has happened since January that I&apos;ve struggled to find the time to write it down! Here are the highlights:Kiln, the latest merge testnet, has launched. The PoS transition on it revealed some implementation issues, and now it&apos;s all hands on deck for merge testing 🛠Shanghai, the next Ethereum upgrade, is being sketched out. EVM upgrades, Beacon Chain Withdrawals, L2 Fee Reductions and more are planned ...]]></description>
            <content:encoded><![CDATA[<p>Welcome to another AllCoreDevs update... better late than never 🙈!</p><h2 id="h-tldr" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">TL;DR 👀</h2><p>So much has happened since January that I&apos;ve struggled to find the time to write it down! Here are the highlights:</p><ul><li><p>Kiln, the latest merge testnet, has launched. The PoS transition on it revealed some implementation issues, and now it&apos;s all hands on deck for merge testing 🛠</p></li><li><p>Shanghai, the next Ethereum upgrade, is being sketched out. EVM upgrades, Beacon Chain Withdrawals, L2 Fee Reductions and more are planned 🌃</p></li><li><p>Work on an executable spec for Ethereum&apos;s execution layer is progressing nicely. Next step: harmonizing the EL + CL upgrade processes 📜</p></li><li><p>Protocol Guild, an initiative to provide client developers and researchers with token-based compensation, now has over 100 members and is launching a pilot soon 💰</p></li></ul><h2 id="h-kiln" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Kiln 🔥🧱</h2><p>Following Kintsugi, the Kiln testnet was <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/03/14/kiln-merge-testnet/">recently launched</a>. It incorporated changes to The Merge specifications based on edge cases discovered on Kintsugi, as well as some renamings. While the specs for The Merge now seem mostly final, running through the transition on Kiln surfaced implementation issues in several clients. Teams are now doubling down on testing to ensure that all implementations are safe and stable. Danny covered this in his <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2022/03/23/finalized-no-34/">latest Finalized post</a>.</p><p>Additionally, we&apos;re now asking the broader developer community to use Kiln and make sure their products work as expected. Shoutout to Kurtosis, Tenderly, Lido, Uniswap, EthStaker, Infura and Blockdaemon who&apos;ve each taken a stab at it!</p><p>Assuming no critical issues are found, Kiln is expected to be the last new public testnet to be launched. The next step, once we are comfortable with client implementations and infrastructure/tooling readiness, will be to run The Merge on existing testnets, such as Ropsten, Goerli, Sepolia, etc.</p><p>As with every upgrade, we&apos;ll monitor the testnets after the upgrade to ensure they are stable. Once we are confident testnets are running as expected, we will schedule the transition for the Ethereum mainnet!</p><p>While we are close, and this is an incredibly exciting moment for the entire community, the safety of transition, more than any target date, is the #1 priority for The Merge. This is, by <strong>far</strong>, the most complex upgrade to Ethereum ever done. We want to get it right 😁.</p><p>When decided, testnet and mainnet upgrade timelines will be communicated across community publications such as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://weekinethereumnews.com/">Week in Ethereum</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eth2.news">What&apos;s New in Eth2</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org">the EF blog</a> and many others. Anything which currently advertises a target date is wrong, as no date has been set. Be extra vigilant for potential scams/fake announcements over the coming months!</p><h3 id="h-a-note-on-the-difficulty-bomb" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">A note on the difficulty bomb 💣</h3><p>The difficulty bomb, which was pushed back in the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2021/11/10/arrow-glacier-announcement/">Arrow Glacier</a> upgrade last year, is expected to be felt on the network around June. Its progression is being tracked <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/blocks-per-week-as-an-indicator-of-the-difficulty-bomb/12120/7">here</a>. While it would be ideal to transition to PoS before we need to push back the bomb, three things are worth noting:</p><ol><li><p>The bomb&apos;s impact on block times is gradual. This means that once it starts being felt, there is still a 4-8 week range where blocks are slower, but not drastically so (think 14-17 seconds).</p></li><li><p>Historically, when the bomb was delayed, we&apos;ve opted to push it back 6+ months because we usually planned to have another network upgrade by then. That said, there is no hard rule about how far the bomb must be delayed. It is entirely possible to delay the bomb by a month or two if that is a more appropriate delay than 6+ months.</p></li><li><p>Again, a safe merge &gt;&gt;&gt; a quick merge. We want the transition to go smoothly, and Ethereum’s stability and security is our #1 concern.</p></li></ol><h2 id="h-shanghai" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Shanghai 🌃</h2><p>As mentioned in the previous update, with the specs for The Merge mostly frozen, planning efforts have started around Shanghai. A specification for the upgrade is available <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md">here</a>. Three major changes are tentatively planned for the upgrade, along with some small wins. Let&apos;s dive into them!</p><h3 id="h-evm-object-format" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">EVM Object Format ⚙️</h3><p>For years, researchers and client developers have struggled with improving the EVM without breaking existing contracts. Last year, the Ipsilon team came up with a clever solution: provide new functionality to contracts which are deployed with a specific identifier, but leave existing contracts executing as is. This is now know as EVM Object Format, or EOF for short.</p><p>In the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/">London upgrade</a>, we reserved part of this identifier by disabling the deployment of new contracts starting with the <code>0xEF</code> byte. A few contracts starting with this byte were deployed before London went live, but now that it no longer is possible to do so, we can add a second byte (called the Magic Byte 🪄) to the <code>0xEF</code> prefix and get a sequence which we can guarantee isn&apos;t used by <em>any</em> contract.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3540">EIP-3540</a> describes this in detail and highlights the first tangible benefit of the approach: the separation of code and data, which is beneficial for on-chain code validation. This could also pave the way toward introducing new contract code sections types that could help enable currently complicated features, such as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4337">Account Abstraction</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4200">control flow in the EVM</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3074">EIP-3074</a>.</p><p>A companion EIP to 3540, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3670">EIP-3670</a> will enable code validation for EOF contracts upon deployment.</p><h3 id="h-beacon-chain-withdrawals" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Beacon Chain Withdrawals 🏧</h3><p>Another major feature for Shanghai is the activation of Beacon Chain withdrawals. After several proposals, we&apos;ve arrived at a design that client teams are satisfied with: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4895">EIP-4895: Beacon chain push withdrawals as operations</a>.</p><p>A <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://notes.ethereum.org/@ralexstokes/Skp1mPSb9">meta-spec</a> outlines how the entire process works. At a high level, in each slot, the Beacon Chain can process a set number of full or partial withdrawals. These withdrawals are tracked in receipts which contain the amount, destination address and unique index of each withdrawal. As part of the block creation and validation process, these withdrawals are then credited on the execution layer, similarly to how proof-of-work issuance is credited to miners today.</p><p>A <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/consensus-specs/issues/2758">tracking issue</a> for the various changes required at the consensus layer to enable this is available in the <code>consensus-specs</code> repository. The option for partial withdrawals will allow validators to withdraw their accumulated rewards while maintaining the 32 ETH stake required to remain a validator and continue earning rewards.</p><h3 id="h-layer-2-fee-reductions" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Layer 2 Fee Reductions 📉</h3><p>The last large thing we hope to include in Shanghai is a reduction of fees on layer 2. Because L2s post their transaction data (and/or proofs) on L1, a large part of end users&apos; transaction fees come from the amortized gas costs of L1 data storage. Sharding offers a cheaper alternative for L2s to post their data, but while the specification seems to have settled, a full sharding implementation isn&apos;t ready yet.</p><p>In the meantime, two options are available to reduce these costs: either a <code>CALLDATA</code> cost reduction on mainnet, or a &quot;proto-sharding&quot; implementation, possible with the introduction of a new transaction type on Ethereum, called Shard Blob Transactions.</p><h4 id="h-calldata-cost-reduction" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0"><code>CALLDATA</code> Cost Reduction</h4><p>The simplest way to reduce transaction fees on L2s is to lower the cost of storing data on L1. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4488">EIP-4488</a> proposes to do this, reducing the cost from 16 gas per byte of <code>CALLDATA</code> to 3 gas/byte. This reduced storage cost would translate to lower L2 fees [1].</p><p>While the gas cost reduction itself is a simple change, it does have some second order effects. First, increasing the <code>CALLDATA</code> in blocks leads to larger block sizes. To balance this, the EIP proposes a cap to the maximum amount of <code>CALLDATA</code> in a block. Second, even with this cap, this EIP would increase the rate at which historical chain data grows on the execution layer. To address this, out of band historical data retrieval needs to be developed, and guarantees about historical data on the Ethereum P2P network need to be changed, as proposed in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4444">EIP-4444</a>.</p><p>While the increase in historical chain data would happen gradually, including this EIP implies we will need to deal with the issue with increased urgency after it goes live. Additionally, little from this EIP would be reused in a full sharding implementation. It would primarily be a temporary solution. That said, the EIP is a relatively simple change to implement and does provide significant fee reductions on L2s.</p><h4 id="h-shard-blob-transactions" class="text-xl font-header !mt-6 !mb-3 first:!mt-0 first:!mb-0">Shard Blob Transactions</h4><p>Another proposal, which gets us closer to a full sharding deployment, is <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4844">EIP-4844</a> [2], which introduces Shard Blob Transactions. As with Beacon Chain withdrawals, this proposal has a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@protolambda/eip4844-meta">meta spec</a> linking to consensus layer specifications and other resources.</p><p>At a high-level, this new type of transaction would include commitments to blobs of data which are gossiped on the Beacon Chain. This proposal can be thought of as a &quot;mini-sharding&quot;, where instead of relying on data availability sampling, every node on the network needs to validate all the data in blobs. Like in the full sharding context, these blobs of data are only guaranteed to be made available for some time on the network, rather than stored forever. To keep node requirements manageable, blob data is limited to 1MB/slot compared to 16mb/slot in full sharding.</p><p>EIP-4844 would lay the groundwork needed for a full sharding implementation. Notably, all future changes would be limited to the consensus layer. From the execution layer&apos;s perspective, sharding would be up and running!</p><p>The Optimism team, which has been working on the EIP, has launched a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.eip4844.com/">website</a> which provides an overview of the EIP, aggregates various spec links and highlights positive community reactions to the effort.</p><hr><p>[1] Due to other components involved in pricing L2 transactions, the reduction wouldn&apos;t be a full 5x. Optimism has a good explanation of L2 fee components <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://help.optimism.io/hc/en-us/articles/4411895794715-Transaction-fees">here</a>. Also, ZK rollups wouldn&apos;t benefit to the same extent as Optimistic rollups.</p><p>[2] EIP-4488 (<code>CALLDATA</code> cost reduction) and EIP-4844 (Shard Blob Transactions) have frustratingly similar EIP numbers for competing proposals 😅</p><hr><h3 id="h-small-improvements" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Small Improvements ✨</h3><p>In addition to these three large changes, a handful of small improvements are also being considered for Shanghai, namely:</p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3651">EIP-3651</a>, which lowers the gas cost to access the <code>COINBASE</code> address, fixing an oversight in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-2929">EIP-2929</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3860">EIP-3860</a>, which limits the size of <code>initcode</code> and introduces gas metering for the field</p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3855">EIP-3855</a>, which adds a new opcode, <code>PUSH0</code>, that, as you&apos;d expect, pushes 0 onto the EVM stack</p></li></ul><p>In addition, there are several other EIPs proposed for the upgrade (see a rough list <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues?q=is%3Aissue+is%3Aopen+shanghai">here</a>). EOF, Withdrawals and Layer 2 fee reductions would already make Shanghai one of the largest upgrades to date, so we now need to be very diligent in prioritizing what we include.</p><p>Once we start implementing and testing the various EIPs, we will have a better feel for whether we have any extra capacity. Of course, we still need to get The Merge done before that!</p><h2 id="h-ethereum-execution-layer-specification-eels" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Ethereum Execution Layer Specification (EELS) 📜</h2><p>As you may have noticed above, several proposals for Shanghai now span both the execution and consensus layers. Historically, we&apos;ve used different processes to introduce changes on each layer.</p><p>On the EL, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/core">Core EIPs</a> contain changes&apos; specifications. The Ethereum Yellow Paper is the reference specification for the network, but is often updated only after an upgrade is live, sometimes with a significant delay. This means the effective specification for the EL is often &quot;the Yellow Paper + EIPs X, Y, Z&quot;.</p><p>On the CL, an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/consensus-specs/">executable specification</a> is used as a reference, and changes are specified directly in it. The specification can then be used to generate tests for changes.</p><p>So, while the EL process is well understood by the community (and provides an easy to reference description of changes), from a technical perspective, it isn&apos;t ideal. Conversely, while the CL process is cleaner technically, it is harder for the broader community to follow. Luckily, work has begun on EELS: an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-specs/#consensus-specification-work-in-progress">executable spec</a> for Ethereum&apos;s EL!</p><p>Having an executable specification across both the EL and CL should allow us to harmonize the change process on both layers. There are still many kinks to work out, but conversations have started about how to best do the migration. An <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/core-eips-in-an-executable-spec-world/8640/8">Ethereum Magicians thread</a> is now dedicated to the topic. While EELS is still under development, we may be able to use it during the Shanghai upgrade in parallel to the current process.</p><p>Hopefully, merging the EL &amp; CL processes is simpler than merging the actual CL and EL 😅.</p><h2 id="h-protocol-guild" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Protocol Guild 💰</h2><p>Last but not least, I want to touch on Protocol Guild, which now has <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://protocol-guild.readthedocs.io/en/latest/">a full explainer website</a>. Compensation for protocol maintainers has been a hot topic lately and PG hopes to be part of the solution. <em>Full disclosure: I am a PG member and would receive funds from it.</em></p><p>You can think of compensation in three buckets: base pay, aligned incentives, and potential upside. Currently, base pay for client developers and researchers is handled through their respective employer. While some of these may provide incentives in the form of equity, the Ethereum Foundation announced its 39,000 ETH <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2021/12/13/client-incentive-program/">Client Incentive Program</a> last year to ensure all client teams have a significant stake in Ethereum.</p><p>PG differs from both base compensation and the incentive program in that it aims to provide its members with exposure to a variety of tokens from projects building on ETH, rather than ETH itself. The Guild is composed of protocol engineers, researchers and a handful of folks coordinating protocol work, like myself. It currently sits at about 100 members.</p><p>In short, the Guild allows sponsors to donate tokens, which then vest over time to recipients. The recipient set can be updated, which allows for new contributors to be added and stale contributors to be removed periodically.</p><p>The Guild is still an early experiment, but if successful, could be a base-layer-focused complement to initiatives such as Gitcoin and Retroactive Public Goods Funding.</p><p>After a successful <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gitcoin.co/grants/4832/protocol-guild">Gitcoin grant</a>, the next step for PG is testing the smart contract architecture. In parallel to this, outreach for initial donors will begin. The plan is to run PG for ~1 year with a limited amount of donations to ensure that both the technical and governance components work smoothly. Hopefully, this pilot proves that we can create new mechanisms to coordinate public goods funding on Ethereum!</p><h2 id="h-next-steps" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Next Steps ✅</h2><p>Our main priority remains The Merge, with a renewed focus on testing. Over the next month, we are hoping to finalize implementations, run multiple short-lived devnets, and gather feedback from application, infrastructure and tooling providers. Everything else (Shanghai, execution specs, Protocol Guild) should also keep moving along in the background.</p><p>Expect another update in a month or two. In the meantime, we&apos;ll also have the chance to discuss all of this face to face at <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://devconnect.org/schedule">Devconnect</a> — see you in Amsterdam 👋🏻🇳🇱!</p>]]></content:encoded>
            <author>timbeiko@newsletter.paragraph.com (Tim Beiko)</author>
        </item>
        <item>
            <title><![CDATA[AllCoreDevs Update 009 ⛓ ]]></title>
            <link>https://paragraph.com/@timbeiko/allcoredevs-update-009</link>
            <guid>h3CJeRH8kqUlU4rIAFBj</guid>
            <pubDate>Fri, 28 Jan 2022 18:55:41 GMT</pubDate>
            <description><![CDATA[TL;DR 👀This update comes a bit later than I would have liked. A lot has happened since the last one! Here are the highlights:Kintsugi was launched: you can now test post-merge Ethereum on it 🍵We found a couple issues on the network, leading to refinements in the spec 🐞Once clients have those fixes, and a new auth mechanism, another round of devnets will be launched 🚨Applications should start testing deployments on Kintsugi now. Its next version, Kiln, will be the dress rehearsal before ex...]]></description>
            <content:encoded><![CDATA[<h2 id="h-tldr" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">TL;DR 👀</h2><p>This update comes a bit later than I would have liked. A lot has happened since the last one! Here are the highlights:</p><ul><li><p>Kintsugi was launched: you can now test post-merge Ethereum on it 🍵</p></li><li><p>We found a couple issues on the network, leading to refinements in the spec 🐞</p></li><li><p>Once clients have those fixes, and a new auth mechanism, another round of devnets will be launched 🚨</p></li><li><p>Applications should start testing deployments on Kintsugi now. Its next version, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Kiln">Kiln</a>, will be the dress rehearsal before existing testnets transition 🏗</p></li><li><p>We have a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/465">community call</a> in a few weeks to discuss all this 📣</p></li><li><p>Shanghai is slowly being planned, with a focus on valuable EIPs which had been deprioritized, along with beacon chain withdrawals 🏧</p></li></ul><h2 id="h-kintsugi-and-beyond" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Kintsugi &amp; Beyond 🍵</h2><p>Right before the holidays, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2021/12/20/kintsugi-merge-testnet/">the Kintsugi testnet</a> launched. This was the first public, easily accessible, multi-client testnet running post-merge Ethereum!</p><p>We learned a lot from it, specifically when we encountered a bug that led to delays in finalization. On January 7th, the fuzzer running on the testnet caused a fork by creating <code>ExecutionPayloads</code> with hashes replaced by their parent&apos;s hash, which some clients erroneously marked as valid. Marius, who triggered the issue, had a write up on Twitter: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/vdWijden/status/1479414824794832900">https://twitter.com/vdWijden/status/1479414824794832900</a></p><p>While this bug was fairly easy to fix, it helped us discover other, more subtle, issues, which only happened when the network was in a state with multiple deep forks. Again, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/vdWijden/status/1480969541928816644">Marius has a thread</a>. In short, when consensus clients sent payloads to execution clients across several forks, these would all be executed by default, slowing down clients, triggering unnecessary sync processes and, in the worst cases, causing the node to panic and shut down.</p><p>To address this, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-apis/pull/165">a change was made to the Engine API specification</a> which loosened the requirements for execution clients when receiving payloads. Instead of processing them by default, the clients can choose to simply store payloads on a non-canonical chain (but must still process those on the main chain).</p><p>This change will be included in the next release of the specs. Alongside it, one more significant change will be introduced: an authentication mechanism for execution and consensus clients to use with the Engine API (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-apis/pull/167">PR</a>).</p><p>The authentication mechanism will prevent users from accidentally exposing their Engine API over the open Internet, which happens periodically with JSON RPC endpoints today. While the worst case for JSON RPC endpoints being exposed is mild (someone spamming your node with requests), if the Engine API is exposed, validators could lose funds. Specifically, an attacker could send <code>VALID</code> responses for invalid payloads or even propose invalid ones on the network, leading to slashings. The authentication ensures that a node&apos;s consensus and execution clients are only talking to each other.</p><p>Once these changes are implemented in clients, we will launch new short-lived devnets to test implementations and interoperability. As these stabilize, expect a new Kintsugi-style testnet, Kiln, running the latest specs.</p><p>For applications, I recommend starting to look at Kintsugi today to ensure that things work as intended. While the merge only has minor changes at the execution layer (listed <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2021/11/29/how-the-merge-impacts-app-layer/">here</a>), it is worth being sure that tooling, infrastructure, deployment flows, etc. all work smoothly.</p><p>That said, Kintsugi will be sunset in the coming weeks, so if you need &quot;weeks&quot; rather than &quot;days&quot; to stage a deployment, waiting for Kiln is recommended. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/465">A community call is planned for February 11th</a> to discuss all of this in more detail!</p><p>Assuming no major issues are found, Kiln should be the last new testnet before we start looking to fork existing ones! Of course, testing of various kinds will continue throughout the process. Ensuring the network&apos;s security along with a smooth transition remains the #1 focus. Onwards!</p><h2 id="h-shanghai" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Shanghai 🇨🇳</h2><p>With the merge work nearing &quot;the beginning of the end&quot;, discussions about what to include in the first post-merge upgrade, Shanghai, are beginning. Over the past year or two, most protocol work has centred around large initiatives such as EIP-1559 and the transition to proof of stake.</p><p>The intense focus required to ship these massive change has resulted in other, &quot;normal-sized&quot;, proposals being deprioritized. A lot of these can bring significant value to Ethereum, and are now being considered for Shanghai. Some notable ones:</p><ul><li><p><strong>EVM Object Format,</strong> which enables versioning of contracts and makes it easier to introduce new functionality into the EVM.</p></li><li><p><strong>BLS Precompiles,</strong> which provides the EVM with native execution of BLS operations.</p></li><li><p><strong>EIP-3074,</strong> which provides UX improvements and gas costs savings for end users.</p></li><li><p><strong>EIP-4488,</strong> which reduces CALLDATA costs, lowering the cost of transacting on rollups.</p></li><li><p><strong>EIP-1153,</strong> which introduces opcodes for transient storage, that applications can use to lower end user fees.</p></li></ul><p>This isn&apos;t an exhaustive list (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues?q=is%3Aissue+is%3Aopen+Shanghai">here&apos;s one!</a>), but highlights that there are several valuable things we can do in Shanghai. We now need to think hard about what to prioritize! Specifically, EVM Object Format is slated for discussion about inclusion on the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/459">next AllCoreDevs call</a>. If you have any feedback, now is a good time to share it on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/evm-object-format-eof/5727">Ethereum Magicians</a>.</p><p><strong>Aside from these proposals, another feature high on the priority list for Shanghai is withdrawals from the beacon chain.</strong> While there is no formal EIP yet, it is something that needs to be taken into account when planning he upgrade. Expect more on this as soon as the merge specifications are finalized!</p><h2 id="h-next-steps" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Next Steps ✅</h2><p>As mentioned, over the next few weeks, you can expect client releases which implement the latest version of the specification. Once these are out, ephemeral devnets will be stood up for testing. Then, the Kiln testnet will launch for an (hopefully!) final round of public testing. Assuming all goes well there, we will begin transitioning existing testnets to proof of stake. A successful transition across all existing testnets is the last step before setting the date for The Merge on mainnet!</p><p>In parallel, Shanghai is slowly being planned, with an eye towards longstanding proposals we&apos;ve wanted to implement for a while but simply didn&apos;t have the bandwidth for. Expect a beacon chain withdrawal spec 🔜.</p><p>Thanks for reading!</p>]]></content:encoded>
            <author>timbeiko@newsletter.paragraph.com (Tim Beiko)</author>
        </item>
        <item>
            <title><![CDATA[AllCoreDevs Update 008 ⛓]]></title>
            <link>https://paragraph.com/@timbeiko/allcoredevs-update-008</link>
            <guid>Gm5WDBBbhF2Waoho0R5J</guid>
            <pubDate>Thu, 02 Dec 2021 18:02:12 GMT</pubDate>
            <description><![CDATA[Welcome to another AllCoreDevs update 👋🏻TL;DR 👀Arrow Glacier is happening next week - upgrade your nodes 🏔Kintsugi Merge devnets are being stood up - expect a long-lived one for the holidays 🍵A new proposal, EIP-4488, could make rollup transactions cheaper, but there are tradeoffs. A deep dive on this below 👇🏻Arrow Glacier Arrives 🏹🧊As mentioned in the last update, the Arrow Glacier upgrade is scheduled for block 13,773,000, which is expected on December 8, 2021. If you run an Ethere...]]></description>
            <content:encoded><![CDATA[<p>Welcome to another AllCoreDevs update 👋🏻</p><h2 id="h-tldr" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">TL;DR 👀</h2><ul><li><p>Arrow Glacier is happening next week - upgrade your nodes 🏔</p></li><li><p>Kintsugi Merge devnets are being stood up - expect a long-lived one for the holidays 🍵</p></li><li><p>A new proposal, EIP-4488, could make rollup transactions cheaper, but there are tradeoffs. A deep dive on this below 👇🏻</p></li></ul><hr><h2 id="h-arrow-glacier-arrives" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Arrow Glacier Arrives 🏹🧊</h2><p>As mentioned in the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://tim.mirror.xyz/sR23jU02we6zXRgsF_oTUkttL83S3vyn05vJWnnp-Lc">last update</a>, the Arrow Glacier upgrade is scheduled for block 13,773,000, which is expected on December 8, 2021. If you run an Ethereum node, you should upgrade it <strong>now</strong>. The list of client versions which support the upgrade is as follows:</p><ul><li><p>Geth <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/go-ethereum/releases/tag/v1.10.12">1.10.12</a></p></li><li><p>Besu <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/hyperledger/besu/releases/tag/21.10.0">21.10.0</a></p></li><li><p>Nethermind <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/NethermindEth/nethermind/releases/tag/1.11.7">1.11.7</a></p></li><li><p>Erigon <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ledgerwatch/erigon/releases/tag/v2021.11.01">2021.11.01-alpha</a></p></li><li><p>EthereumJS VM <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereumjs/ethereumjs-monorepo/releases/tag/%40ethereumjs%2Fvm%405.6.0">5.6.0</a></p></li></ul><p>For a complete overview of the upgrade, see the full <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2021/11/10/arrow-glacier-announcement/">announcement</a>. Hopefully, this is the last time the difficulty bomb is delayed before Ethereum&apos;s transition to proof of stake 💣!</p><hr><h2 id="h-kintsugi-progress" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Kintsugi Progress 🍵</h2><p>After the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2021/10/15/amphora-merge-milestone/">Amphora interop event</a>, client teams have been hard at work on another sprint of merge devnets: Kintsugi 🍵</p><p>The goal of this effort is to incorporate the learnings from Amphora into the specification, test them on a devnet, find what breaks, add fixes to the spec, and do it all again the week after. This rapid pace of iteration allows us to see the latest spec in production weekly, and to gradually gain confidence in the client implementations.</p><p>A <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://notes.ethereum.org/@djrtwo/kintsugi-milestones">tracker</a> is available with the various milestones. So far, three devnets have been launched. We are expecting to launch one more ephemeral devnet next week, and then to have a longer-lived one over the holidays. This last Kintsugi devnet will allow application developers, infrastructure and tool providers, and curious users to experiment with the (nearly!) final post-merge Ethereum spec.</p><p>For those most eager to try things, basic instructions to connect to the current devnets are available <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@76u7HkGHS7-S8srG1WCWjg/B1y18LfYF">here</a>. The full specifications for The Merge are split across the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/consensus-specs/tree/dev/specs/merge">consensus specs</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/merge.md">execution specs</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-apis/tree/main/src/engine">Engine API specs</a>.</p><hr><h2 id="h-calldata-cost-reduction" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><code>CALLDATA</code> Cost Reduction 📉</h2><p>Rollups are expected to be the primary method by which computation on Ethereum is scaled. They allow users to execute their transactions on a separate sub-chain (the L2/rollup) that commits TX data to Ethereum. This removes the need for these transactions to be <em>executed</em> on mainnet but maintains the security and network effects of Ethereum, while allowing far more scalability. The main cost of rollup transactions is then the cost of storing their data on the L1 chain, which is currently done using a transaction&apos;s <code>CALLDATA</code>.</p><p>The cost of <code>CALLDATA</code> therefore dictates, to a large extent, the cost of transactions on rollups. [0] As of this writing, a simple ETH transfer costs a few dollars on optimistic rollups (ORs) and ~0.25$ on zero-knowledge rollups (ZKRs). While this might not seem particularly high, more complex transactions require higher fees and most of Ethereum&apos;s usage is still happening on L1. As users transition to L2, these costs will keep increasing.</p><p>To preempt this, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/EIPs/pull/4488">EIP-4488</a> was introduced. It proposes to reduce the <code>CALLDATA</code> cost from 16 gas/byte to 3 gas/byte, a &gt;5x reduction. Because <code>CALLDATA</code> directly increases the block size, the EIP also adds a cap on the maximum <code>CALLDATA</code> in a block. To accommodate non-rollup transactions, this cap can be extended by transactions who only use a small amount (&lt;300 bytes) of <code>CALLDATA</code>. This helps mitigate fee market issues that come up with any scheme that adds two separate limits, in this case gas and <code>CALLDATA</code>.</p><p>The benefits of this EIP are clear: posting rollup data to L1 would become 5x cheaper than today relative to other EVM operations. These cost savings would continue until L1 blocks continuously hit the <code>CALLDATA</code> cap, which would require several times Ethereum&apos;s current usage to happen on rollups. By then, sharding may be live, which will provide another reduction in rollup transaction costs. <strong>In other words, transaction fees are the biggest pain point for users using Ethereum right now, and this EIP would provide another incentive for migration towards rollups.</strong></p><p>There are drawbacks, though. First, the EIP would increase the rate at which the Ethereum blockchain&apos;s storage requirements grows. In the worst case, assuming all blocks hit the maximum amount of <code>CALLDATA</code>, the increase would be of ~3.0 TB per year. That said, while we are still far from there, Ethereum&apos;s rate of growth is already hard to manage. Ever increasing chaindata will long term be unsustainable. Proposals to cap it, such as history expiry (e.g. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4444">EIP-4444</a>) and state expiry, are already on the roadmap. Agreeing to EIP-4488 would increase the urgency with which these changes need to be deployed to mainnet.</p><p>Second, several months ago, client teams agreed to prioritize Ethereum&apos;s transition to proof of stake above everything else. If we waited until after The Merge, it is likely this would not happen before Q4 2022, one year from now. Combining it with The Merge adds too much complexity. Hence, we are left with the option of potentially doing it <em>before</em> The Merge.</p><p>While any delays would likely be minimal, due to the simplicity of the change and ability of most client teams to parallelize its implementation, it does go against &quot;The Process&quot; and the prior decisions client teams had committed to. Also, EIPs are often discussed for months prior to being accepted in network upgrades. In this case, a decision would have to be made in the next few weeks if we plan to deploy it prior to The Merge. While this is highly unusual, rollups&apos; importance within the Ethereum roadmap and the prevalence of high L1 fees may justify deviations from the usual processes.</p><p>If you have strong opinions about this, I encourage you to share them on the EIP&apos;s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/eip-4488-transaction-calldata-gas-cost-reduction-with-total-calldata-limit/7555/7">Ethereum Magicians thread</a>. Regardless of whether EIP-4488 goes live before The Merge, the process by which we make the decision will be an important precedent in Ethereum governance.</p><h2 id="h-next-steps" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Next Steps ✅</h2><ul><li><p>Arrow Glacier is happening next week: upgrade your nodes!</p></li><li><p>A <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/419">Merge community call</a> is scheduled for tomorrow to share the latest progress and answer questions from projects building on Ethereum;</p></li><li><p>A long-lived Kintsugi devnet should go live before the holidays;</p></li><li><p>Hopefully, a decision on EIP-4488 is made before the holidays as well.</p></li></ul><hr><p>Thank you to Ansgar Dietrichs, Vitalik Buterin, Danny Ryan and Dankrad Feist for reviewing drafts of this update.</p><hr><p>[0] These are other factors which determine the total cost of a rollup transaction. For an example, see Optimism&apos;s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://community.optimism.io/docs/users/fees-2.0.html#fees-in-a-nutshell">documentation</a>.</p>]]></content:encoded>
            <author>timbeiko@newsletter.paragraph.com (Tim Beiko)</author>
        </item>
        <item>
            <title><![CDATA[AllCoreDevs Update 007 ⛓ ]]></title>
            <link>https://paragraph.com/@timbeiko/allcoredevs-update-007</link>
            <guid>iyWpzCz6yKih1DhJbnKz</guid>
            <pubDate>Tue, 26 Oct 2021 20:02:51 GMT</pubDate>
            <description><![CDATA[90% Merge, 10% Bomb 💣As promised in the previous update, this one will cover the post-merge Ethereum client architecture in depth. With the progress made during the Amphora Interop event, the specification is now close to final 🎉 Before we dive into The Merge, though, a short update on the difficulty bomb!Arrow Glacier 🏹🧊On AllCoreDevs #124 (recording, tweets), we agreed to push back the difficulty bomb, set to go off in December 2021, to June 2022. To do so, we will have a network upgrad...]]></description>
            <content:encoded><![CDATA[<h2 id="h-90percent-merge-10percent-bomb" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">90% Merge, 10% Bomb 💣</h2><p>As promised in the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://tim.mirror.xyz/CHQtTJb1NDxCK41JpULL-zAJe7YOtw-m4UDw6KDju6c">previous update</a>, this one will cover the post-merge Ethereum client architecture in depth. With the progress made during the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2021/10/15/amphora-merge-milestone/">Amphora Interop event</a>, the specification is now close to final 🎉</p><p>Before we dive into The Merge, though, a short update on the difficulty bomb!</p><h2 id="h-arrow-glacier" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Arrow Glacier 🏹🧊</h2><p>On AllCoreDevs #124 (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://youtu.be/BTtwbvZZpfs">recording</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/TimBeiko/status/1449047538103767044">tweets</a>), we agreed to push back the difficulty bomb, set to go off in December 2021, to June 2022. To do so, we will have a network upgrade, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/arrow-glacier.md">Arrow Glacier</a>, which contains a single EIP, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-4345">EIP-4345</a>, that pushes back the bomb.</p><p>Arrow Glacier is scheduled for block 13,773,000, expected on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/block/countdown/13773000">December 8th, 2021</a>.</p><p>We debated various options for the Ice Age pushback on AllCoreDevs. June was chosen because we had reasonable confidence that The Merge could happen before, and we wanted to avoid having to organize another difficulty bomb pushback right before it.</p><p>Of course, The Merge is independent from the bomb: it will require a separate network upgrade and is activated based on a PoW <code>total difficulty</code> threshold. <strong>This means that we do not need to &quot;wait&quot; for the difficulty bomb to go off in order to transition Ethereum to proof of stake. Similarly, if we encountered issues with the transition, we could decide to push back the bomb once more.</strong></p><p>Hopefully, Arrow Glacier will be the last network upgrade on PoW Ethereum 🤞🏻 Onto The Merge!</p><h2 id="h-post-merge-architecture" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Post-Merge Architecture 🏗</h2><p>The architecture for The Merge leverages the fact that Ethereum already has battle-tested clients built for both its execution (Eth1) and beacon (Eth2) chains. Given that these exist, it makes sense to keep using them.</p><p>At a high-level, at The Merge, clients will switch from following PoW to following PoS to determine Ethereum&apos;s latest valid block. Aside from that, most of the clients&apos; functionality, and, more importantly, the EVM, its state, and how it executes transactions, will stay the same.</p><p><strong>Post-merge, the current Eth1 and Eth2 clients respectively become the execution and consensus layers (or engines) of Ethereum. This means that node operators of either Eth1 or the Beacon Chain clients will need to run the &quot;other half&quot; of the stack to have a fully validating node.</strong> Danny Ryan has great diagrams illustrating this. They&apos;ve been <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://opensea.io/collection/when-merge">minted as NFTs</a>, with the proceeds going towards the engineers and researchers working on The Merge.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0edfe09cace2abc56e10adc1963dab9b622b6830cbfcbdd2f69f61c60a601c05.png" alt="Post-merge client architecture. NFT. Artist: Danny Ryan" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Post-merge client architecture. NFT. Artist: Danny Ryan</figcaption></figure><p>The above shows what a full Ethereum client will look like post-merge. Let&apos;s use this as our starting point to dive into each component!</p><h2 id="h-beacon-node" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Beacon Node 🚨</h2><p>Today, Beacon Nodes are tasked with coming to consensus on empty (from end users&apos; standpoint!) blocks. These contain pieces of consensus-related information, called Operations, such as attestations, the deposit contract root and validator slashings/exits, but do not contain any &quot;transactions&quot; in the Eth1 sense (e.g. sending ETH or interacting with smart contracts). The Merge is where this changes.</p><p>As The Merge happens, Beacon Nodes will watch the current PoW chain and wait for it to hit a predefined <code>total difficulty</code> threshold, called <code>TERMINAL_TOTAL_DIFFICULTY</code>. Once a block with <code>total difficulty &gt;= TERMINAL_TOTAL_DIFFICULTY</code> is produced, it will be considered the final PoW block. Subsequent blocks will be produced and attested to by the validators on the Beacon Chain.</p><p>To do this, Beacon Nodes will communicate with their execution engine (formerly the Eth1 client) and ask it to either produce or validate <code>ExecutionPayloads</code>. These payloads are the post-merge equivalent of Eth1 blocks. They contain information such as the parent&apos;s hash, the state root, the base fee, and a list of transactions to execute. Once these have been produced or validated, the Beacon Node will share them with other nodes on the p2p network.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8c9df3affc9e7e5c3c26d446a5c50cf93c3cbfaea2e82b37c56a96e1a1c4b616.png" alt="A post-merge block: the consensus layer (a.k.a. Beacon Node) validates all the fields currently part of Beacon Chain blocks. It passes ExecutionPayloads to the execution layer for validation as it receives them on the network." blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">A post-merge block: the consensus layer (a.k.a. Beacon Node) validates all the fields currently part of Beacon Chain blocks. It passes ExecutionPayloads to the execution layer for validation as it receives them on the network.</figcaption></figure><p>To establish communication between the consensus and execution layers, a new set of JSON RPC endpoints is introduced: the Engine API.</p><h2 id="h-engine-api" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Engine API ⚙️</h2><p>The <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-apis/tree/main/src/engine">Engine API</a> is the communication interface between the consensus and execution layers. It is exposed on a separate port than the execution layer&apos;s public JSON RPC API. For simplicity, calls to the API are always initiated by the consensus layer and the API introduces only three methods: <code>engine_executePayload</code>, <code>engine_forkchoiceUpdated</code> and <code>engine_getPayload</code>. Let&apos;s go over what each of these does:</p><ul><li><p><code>engine_executePayload</code> asks the execution layer to validate that an <code>ExecutionPayload</code> conforms to all protocol rules.</p><p>After receiving a payload via this call, the execution layer will either return <code>VALID</code>/<code>INVALID</code> or, if it still has not synced to the tip of the chain, <code>SYNCING</code>. Because a block&apos;s validity is dependent on its parents&apos; validity, if the execution layer is missing historical data to assess the payload&apos;s validity, it will fetch it from the network.</p></li><li><p><code>engine_forkchoiceUpdated</code> is how the consensus layer informs the execution layer of a new head and finalized block on the network. In the case where the consensus layer needs the execution layer to produce a new <code>ExecutionPayload</code> on top of the latest head block, it will pass a <code>payloadAttributes</code> field along with this call.</p><p>The<code>payloadAttributes</code> field contains information relevant for the execution engine to produce an <code>ExecutionPayload</code>, specifically the <code>timestamp</code>, <code>random</code> and <code>feeRecipient</code> (formerly <code>coinbase</code>) values. Upon receiving this call, the execution layer will update its head, sync as needed, and, if required, begin building an <code>ExecutionPayload</code> with the values from <code>payloadAttributes</code>.</p></li><li><p><code>engine_getPayload</code> asks the execution layer to return its best <code>ExecutionPayload</code> whose build process was previously initiated in an associated call to <code>engine_forkChoiceUpdated</code>.</p><p>This is how, when a validator must produce a block, it gets a valid one from its execution engine. Other nodes will then, upon receiving that block from the p2p layer, call <code>engine_executePayload</code> to assess its validity.</p></li></ul><p>... and that&apos;s it! With these three new endpoints, the consensus and execution layers can communicate information about the state of the chain and transactional payloads. Now, let&apos;s dive into how the execution engine works some more.</p><h2 id="h-execution-engine" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Execution Engine 🛠</h2><p>As stated above, the execution engine is what becomes of Eth1 clients after The Merge. At that point, anything related to consensus is removed from their purview. Their main focus becomes state management, as well as block creation and validation, which is modified slightly. The bulk of the changes are described in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3675">EIP-3675</a>.</p><p>First, The Merge will require some change to the block format. Several fields, which are only relevant for PoW and not PoS, will be set to <code>0</code> (or their data-structure&apos;s equivalent). These are fields which either relate to mining (<code>difficulty</code>, <code>mixHash</code>, <code>nonce</code>) or to ommers (<code>ommers</code>, <code>ommersHash</code>), which are not possible in PoS. The length of <code>extraData</code> will also be capped to 32 bytes on mainnet.</p><p>Second, because issuance will only happen on the Beacon Chain post-merge, the execution layer will stop processing block and uncle rewards. That being said, the execution engine will still be in charge of handling transaction fees. Indeed, as it creates an <code>ExecutionPayload</code>, the execution engine ensures that all transaction senders can pay at least the current <code>baseFeePerGas</code> and that any extra fees are sent to <code>feeReceipient</code>. Note that <code>feeReceipient</code> refers to a &quot;legacy&quot; Ethereum address, and not a Beacon Chain validator.</p><p>Third, once PoS has taken over from PoW, execution engines will stop gossiping blocks. This means deprecating the <code>NewBlockHashes (0x01)</code> and <code>NewBlock (0x07)</code> handlers at the p2p layer. Again, the execution layer will still be in charge of syncing the network state, gossiping transactions and maintaining its transaction pool.</p><p>The following diagram, again by Danny Ryan, shows the execution layer dropping PoW and relying on the Beacon Chain as The Merge happens.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/788ba502af1d228e25449cd05429d2b89660799368843aef755b827a660a532a.png" alt="PoW blocks stop appearing and Beacon Chain blocks begin to hold ExecutionPayloads after The Merge." blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">PoW blocks stop appearing and Beacon Chain blocks begin to hold ExecutionPayloads after The Merge.</figcaption></figure><p>We&apos;ve now covered all the core components of how clients process blocks and communicate internally post-merge. Now, let us briefly touch on the various &quot;edges&quot; of the system.</p><h2 id="h-p2p-networking-user-apis-and-sync" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">P2P Networking, User APIs and Sync 📡</h2><p>As the first diagram in this post shows, post-merge, both the execution and Beacon Chain layers participate in a p2p network. Aside from block gossiping being deprecated on the execution layer side, everything else in the p2p network remains unchanged: Beacon Nodes will gossip attestations, slashings, etc. and the execution layer will share transactions, sync state, etc. each on their independent p2p network.</p><p>Similarly, the user APIs for both the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/beacon-apis">Beacon Chain</a> and the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/execution-apis/">execution layer</a> will remain independent, with the exception of the newly created Engine API.</p><p>The one component which will live across both layers is sync. Several syncing strategies are being developed for every possible edge case pre and post merge. These are still being refined and tested, and may be the subject of a future deep dive.. 👀</p><h2 id="h-next-steps" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Next Steps 👀</h2><p>Since <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.ethereum.org/2021/10/15/amphora-merge-milestone/">Amphora</a>, the focus has been on specification refinements and devnet testing. Over the coming weeks, expect the specifications to have settled to a point where we do not expect any more major modifications.</p><p>In the meantime, the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://pithos-explorer.ethdevops.io/">Pithos</a> testnet is up and running with more client combinations being tested daily, and a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/issues/402">community call is scheduled for next week</a> for infrastructure &amp; tooling providers to get up to speed on The Merge. See you then 👋🏻</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/bc4488999da6c4c2974c621e3a032cf82fc0f1285b747f563e82dc6a581e97e6.png" alt="The various client combinations running on Pithos, from https://pithos-explorer.ethdevops.io/charts" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">The various client combinations running on Pithos, from https://pithos-explorer.ethdevops.io/charts</figcaption></figure><hr>]]></content:encoded>
            <author>timbeiko@newsletter.paragraph.com (Tim Beiko)</author>
        </item>
        <item>
            <title><![CDATA[AllCoreDevs Update 006 ⛓]]></title>
            <link>https://paragraph.com/@timbeiko/allcoredevs-update-006</link>
            <guid>7iviq9JuaCr78gCufbqp</guid>
            <pubDate>Thu, 02 Sep 2021 20:33:10 GMT</pubDate>
            <description><![CDATA[Welcome to another AllCoreDevs update 👋🏻 This one is a bit different from the others. First, I’ve decided to move these to Mirror! Using the platform for the 1559 NFT project was a really positive experience, and I’ve been looking for an excuse to use it again, so here we are. I’ll keep maintaining a list of updates on HackMD so they re easy to find in one place. Second, given our current focus on The Merge, this post isn’t an “update” but a deep dive into the roadmap evolution which led to...]]></description>
            <content:encoded><![CDATA[<p>Welcome to another AllCoreDevs update 👋🏻</p><p>This one is a bit different from the others. First, I’ve decided to move these to Mirror! Using the platform for the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://stateful.mirror.xyz/rsUhYxXARr7j2iDjqJeelY7nc6CN_Y-MilVDP1S5voA">1559 NFT project</a> was a really positive experience, and I’ve been looking for an excuse to use it again, so here we are. I’ll keep maintaining a list of updates on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hackmd.io/@timbeiko/acd/">HackMD</a> so they re easy to find in one place.</p><p>Second, given our current focus on The Merge, this post isn’t an “update” but a deep dive into the roadmap evolution which led to the current architecture choice. In a few weeks, expect a similar post going over the details of how the Ethereum network will operate post-merge.</p><h2 id="h-merge-pre-history" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Merge Pre-History 📜</h2><p>The Merge will swap out Ethereum’s current proof of work consensus algorithm for the proof of stake mechanism running on the beacon chain. This design is the result of several iterations on the “Ethereum 2.0” roadmap. Let&apos;s recap how things changed over the past few years.</p><h3 id="h-phases-0-1-2" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Phases 0️⃣, 1️⃣, 2️⃣</h3><p>For several years, proof of stake and sharding R&amp;D were both pretty independent from each other. During a 2018 research workshop in Taipei, a decision was made to unify both research initiatives into a single, three phrased, &quot;Ethereum 2.0&quot; roadmap. The workshop and general philosophy at the time is well summarized by Ben Edginton <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://media.consensys.net/state-of-ethereum-protocol-1-d3211dd0f6">here</a>. It was during this event that Hsiao-Wei Wang presented this now famous diagram of what &quot;Ethereum 2.0&quot; would look like:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/26a8ca30d0b5dd80ea5493925c3037e1fa70bfa6ac662a6a9ee9e16a85aff9a6.png" alt="Source: https://docs.google.com/presentation/d/1G5UZdEL71XAkU5B2v-TC3lmGaRIu2P6QSeF8m3wg6MU/edit#slide=id.g3c326bb661_0_298" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Source: https://docs.google.com/presentation/d/1G5UZdEL71XAkU5B2v-TC3lmGaRIu2P6QSeF8m3wg6MU/edit#slide=id.g3c326bb661_0_298</figcaption></figure><p>This diagram pictures what each phase of the then new roadmap would deliver:</p><ul><li><p>Phase 0 would bring the beacon chain;</p></li><li><p>In Phase 1, data shards would be added;</p></li><li><p>In Phase 2, virtual machines would be added to each shard to enable computation in the system.</p></li></ul><p>The number of shards was initially set to 100, then raised to 1024, and most recently lowered back to 64.</p><h3 id="h-early-merge" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Early Merge 🌅</h3><p>As work on the beacon chain started in 2018, it became clear that this three-phased Ethereum 2.0 roadmap would take several years to fully deliver. This, along with the growing pains from the rapid adoption of Ethereum, led to a revival of research initiatives on the proof of work chain. The umbrella term &quot;Ethereum 1.x&quot; was coined for these initiatives at Devcon IV, in 2018. The biggest one of these was research into Stateless Ethereum, a paradigm that would remove untouched state from the network in order to bound its growth rate.</p><p>The increased focus on making the PoW chain long-term sustainable paired with the realization that the beacon chain would be ready much earlier than other components of the Ethereum 2.0 roadmap led to an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/alternative-proposal-for-early-eth1-eth2-merge/6666/2">“Early Merge” proposa</a>l. This proposal would have the existing EVM chain launch as &quot;Shard 0&quot; of the Ethereum 2.0 system. Not only would this expedite the move to proof of stake, but it would also make for a much smoother transition for applications, as the move to proof of stake could happen without any migration on their end.</p><p>Shortly after this proposal, Danny Ryan explored how we could accomplish all this by leveraging the existing Eth1 clients in his <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/eth1-eth2-client-relationship/7248">Eth1+Eth2 client relationship</a> post. This would massively reduce the development work to deliver a post-merge system and leverage clients which had been battle tested for years on mainnet. Following this path would also give researchers more time to figure out the open questions around Phases 1 &amp; 2, explored <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/a-short-history-and-a-way-forward-for-phase-2/6982">here</a>, as well as Stateless Ethereum, which is also still an active area of research.</p><h3 id="h-rollup-centric-roadmap" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Rollup Centric Roadmap 🎯</h3><p>Fast forward to late 2020: Phase 0 is now 99% done with the beacon chain launching soon. While the work on Phase 1 is progressing nicely, Phase 2, which would enable computation on the shards introduced in Phase 1, still has many unsolved questions:</p><ul><li><p>How to transition smoothly from the current EVM chain to the sharded VMs?</p></li><li><p>What alternative VMs can actually be deployed, performance-wise?</p></li><li><p>How would we ensure that various VMs are indeed safe?</p></li><li><p>How would state and balances be reconcilled across all the VMs?</p></li><li><p>… and more</p></li></ul><p>At the same time, progress on rollups (i.e. Layer 2 scaling) is rapidly happening. Several teams announce testnets, with promising early results.</p><p>Around this time, Vitalik wrote a long <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum-magicians.org/t/a-rollup-centric-ethereum-roadmap/4698">Ethereum Magicians post</a> arguing that we should focus our short and medium term scaling efforts around rollups. Not only would they be on mainnet before Phase 2 would be done, but they would also be the largest beneficiaries of Phase 1. Rollups generate a lot of data, and shards can offer cheaper storage for it than the EVM chain. From the post itself:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7154f724e2ba061536538ed9acf49f210abe056800f3313cc247d591a517da0f.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>This approach would have several impacts on the Phase 0-2 roadmap. Specifically:</p><ul><li><p>Phase 0 (the beacon chain) which was now running on testnets ahead of mainnet launch, could become Ethereum’s consensus engine as soon as the PoW chain was ready, rather than after Phase 2;</p></li><li><p>Phase 1 (data sharding), still several years away, went from being a critical blocker to scaling to an incremental improvement which would reduce the cost of already developed scaling solutions (e.g. rollups);</p></li><li><p>Phase 2 (sharded execution), the more complex feature with the most open research questions, could be pushed out several years or cancelled entirely without any impact on the scaling roadmap.</p></li></ul><p>The research community quickly rallied around this proposal and within a month had produced an ethresear.ch post detailing the current plan for The Merge!</p><h2 id="h-current-and-future-roadmap" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Current &amp; Future Roadmap 🗺</h2><h3 id="h-executable-beacon-chain" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Executable Beacon Chain ⛓</h3><p>The current architecture for the merge was first detailed in the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethresear.ch/t/executable-beacon-chain/8271">&quot;Executable Beacon Chain&quot;</a> post by Mikhail Kalinin in November 2020. In short, it combined the following insights from the various iterations to the Ethereum 2.0 roadmap:</p><ul><li><p>The beacon chain is live, and can now be used as a consensus engine;</p></li><li><p>Rollups are the best short term solution for scaling computation;</p></li><li><p>The current Eth1 clients form the best basis for the execution layer post-merge;</p></li><li><p>The move to proof of stake can be done with minimal impact on the currently running applications.</p></li></ul><p>The one big change Mikhail proposed was that instead of having the current EVM chain be &quot;Shard 0,&quot; it could be coupled to the beacon chain directly.</p><p>This is a simple but important insight: Eth1 execution clients are already built in a way where the consensus algorithm can be swapped. Mainnet uses proof of work, but testnets and private Ethereum networks use various proof of authority consensus algorithms (clique, IBFT, etc.).</p><p>In his post, Mikhail proposed to have proof of stake &quot;simply&quot; be a new consensus algorithm that clients use. In other words, to merge the current proof of work chain with the beacon chain. The following diagram by Trent Van Epps illustrates the transition:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/90bc06129c639d7337d02df0dcd0bcb88745062e5262db440dd7106730bc50fe.png" alt="Source: https://twitter.com/trent_vanepps/status/1415741658067517441/photo/1 " blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Source: https://twitter.com/trent_vanepps/status/1415741658067517441/photo/1</figcaption></figure><p>This approach would minimize the work that client teams on the PoW chain need to do, while still delivering all the benefits of the Early Merge and Rollup Centric Roadmap [1].</p><h3 id="h-rayonism" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Rayonism ☀️</h3><p>To validate that the Executable Beacon Chain architecture was viable, clients prototyped it over the course of a month-long hackathon named <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://rayonism.io/">Rayonism</a>.</p><p>Within a few weeks, all combinations of Eth1/Eth2 clients were turned into hybrid, post-merge, clients running transactions in the EVM and coming to consensus via the beacon chain.</p><p>At a high level, the current Eth2 nodes were repurposed as the consensus layer of the network, and the current Eth1 nodes as its execution layer. The consensus layer&apos;s functionality was expanded to send the latest chain head information to, and request blocks from, the execution layer. The execution layer was still in charge of processing blocks, gossiping transactions, storing and managing the state and handling JSON RPC requests.</p><p>This experiment validated that the Executable Beacon Chain architecture was sound and could be use as the basis for the transition to proof of stake, now dubbed The Merge.</p><h3 id="h-pow-greater-pos-transition" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">PoW -&gt; PoS transition ⛏</h3><p>One thing that was not tested as part of Rayonism was the transition from a live PoW network to one running under PoS. After a few iterations, a specification for this is now roughly finalized.</p><p>To transition from proof of work to proof of stake, a <code>TERMINAL TOTAL DIFFICULTY</code> will be set in clients [2]. Once a block is seen exceeding that difficulty on the proof of work chain, clients will enter a transition mode where they begin listening to the proof of stake layer for consensus. As soon as the consensus layer has finalized a block whose difficulty exceeds the <code>TERMINAL TOTAL DIFFICULTY</code>, the execution layer will stop listening for and gossiping PoW blocks entirely. And then, voilà, The Merge is done 🎉!</p><p>For applications, this won&apos;t cause any disruption to contracts or users. A few opcodes will be updated and that&apos;s about it. For beacon chain node operators, the merge will require choosing an execution engine . Similarly, if you are running a node on the proof of work network, the merge will require choosing a consensus client. You can expect multiple devnets, tutorials and calls to discuss this as the work on the merge progresses!</p><h2 id="h-next-steps" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Next Steps 🛠</h2><p>While the general approach for The Merge is now set, there is still a long list of things that client teams need to do over the next few months. The bulk of the TODOs are tracked <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/pm/blob/master/Merge/mainnet-readiness.md">here</a>, and notable ones include finalizing post-merge sync protocols, setting up integration tests for the entire process, launching devnets &amp; running them under adverse conditions, and planning for a variety of contingencies during the transition.</p><p>If you&apos;d like to dig into the actual specs, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3675">EIP-3675</a> details the changes that will be required for the execution-layer clients, and the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/consensus-specs/tree/dev/specs/merge">merge folder</a> in the consensus specs details the changes to the consensus layer.</p><p>Once things are a bit more settled, expect another post going into the details of how Ethereum clients will work post-Merge. Thanks for reading, and see you next time 👋🏻!</p><hr><p>Thanks to Danny Ryan, Trent Van Epps and Mikhail Kalinin for feedback on drafts fo this post.</p><hr><p>[1] One notable change is that &quot;Stateless Ethereum&quot; is no longer a prerequisite for the move to proof of stake.</p><p>[2] Relying on the total difficulty rather than the block or slot number allows for better management of re-orgs during the transition phase. For more on this, see &quot;Transition process&quot; section of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://eips.ethereum.org/EIPS/eip-3675#transition-process">EIP-3675</a>.</p>]]></content:encoded>
            <author>timbeiko@newsletter.paragraph.com (Tim Beiko)</author>
        </item>
    </channel>
</rss>