{"id":6910,"date":"2025-01-03T19:44:38","date_gmt":"2025-01-03T18:44:38","guid":{"rendered":"https:\/\/wsj-crypto.com\/?p=6910"},"modified":"2025-01-03T19:44:38","modified_gmt":"2025-01-03T18:44:38","slug":"navigating-the-minefield-challenges-facing-ethereums-state-mechanics","status":"publish","type":"post","link":"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/","title":{"rendered":"Navigating the Minefield: Challenges Facing Ethereum&#8217;s State Mechanics"},"content":{"rendered":"<p> &#8220;`html<br \/>\n<\/p>\n<div id=\"\">\n<p class=\"chakra-text css-gi02ar\">Through this blog entry, the aim is to formally unveil a significant risk to the Ethereum network, which posed a clear and present threat up until the Berlin hardfork.<!-- --><\/p>\n<p><!-- --><\/p>\n<h2 class=\"chakra-heading css-1w54o5f\" id=\"state\">State<!-- --><\/h2>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Let&#8217;s start with some context on Ethereum and State.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The Ethereum state is made up of a patricia-merkle trie, which is a type of prefix-tree. This post will not delve too deeply into this structure, but it is important to note that as the state expands, the branches of this tree become denser. Every additional account represents another leaf. Between the tree&#8217;s root and the actual leaf, there are several &#8220;intermediate&#8221; nodes.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">To locate a specific account, or &#8220;leaf&#8221; within this vast tree, approximately 6-9 hashes must be resolved, going from the root through the intermediate nodes to finally determine the last hash that leads to the desired data.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">In simple terms: when a trie lookup is executed to locate an account, around 8-9 resolve operations take place. Each resolving operation constitutes one database query, and each database query may involve various actual disk operations. Estimating the quantity of disk actions is challenging, but given that the trie keys are cryptographic hashes (collision-resistant), the keys appear &#8220;random&#8221;, resulting in the worst-case scenario for any database.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">As Ethereum has expanded, it has been necessary to increase the gas fees associated with operations accessing the trie. This adjustment was made in <!-- --><span class=\"chakra-text css-ons8vw\">Tangerine Whistle<\/span> at block <!-- --><span class=\"chakra-text css-ons8vw\">2,463,000<\/span> in October 2016, which included <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/eips.ethereum.org\/EIPS\/eip-150\">EIP 150<!-- --><\/a>. EIP 150 significantly raised certain gas costs and introduced a series of modifications to guard against DoS attacks, following the so-called &#8220;Shanghai attacks&#8221;.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Another such increase occurred during the <!-- --><span class=\"chakra-text css-ons8vw\">Istanbul<\/span> upgrade, at block <!-- --><span class=\"chakra-text css-ons8vw\">9,069,000<\/span> in December 2019. In this update, <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/eips.ethereum.org\/EIPS\/eip-1884\">EIP 1884<!-- --><\/a> was initiated.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">EIP-1884 introduced the following amendments:<!-- --><\/p>\n<p><!-- --><\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\"><span class=\"chakra-text css-ons8vw\">SLOAD<\/span> increased from <!-- --><span class=\"chakra-text css-ons8vw\">200<\/span> to <!-- --><span class=\"chakra-text css-ons8vw\">800<\/span> gas,<!-- --><\/li>\n<li class=\"css-cvpopp\"><span class=\"chakra-text css-ons8vw\">BALANCE<\/span> rose from <!-- --><span class=\"chakra-text css-ons8vw\">400<\/span> to <!-- --><span class=\"chakra-text css-ons8vw\">700<\/span> gas (along with a less expensive <!-- --><span class=\"chakra-text css-ons8vw\">SELFBALANCE<\/span>) being implemented,<!-- --><\/li>\n<li class=\"css-cvpopp\"><span class=\"chakra-text css-ons8vw\">EXTCODEHASH<\/span> went from <!-- --><span class=\"chakra-text css-ons8vw\">400<\/span> to <!-- --><span class=\"chakra-text css-ons8vw\">700<\/span> gas,<!-- --><\/li>\n<\/ul>\n<p><!-- --><\/p>\n<h2 class=\"chakra-heading css-1w54o5f\" id=\"the-problems\">The issue(s)<!-- --><\/h2>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">In March 2019, Martin Swende conducted some <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/github.com\/holiman\/vmstats\">measurements<!-- --><\/a> concerning EVM opcode efficiency. This investigation subsequently resulted in the formulation of EIP-1884. A few months prior to the activation of EIP-1884, the document <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/arxiv.org\/abs\/1909.07220\">Broken Metre<!-- --><\/a> was published (September 2019).<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Two security researchers from Ethereum &#8212; Hubert Ritzdorf and Matthias Egli &#8212; collaborated with one of the authors of the paper; Daniel Perez, and &#8216;weaponized&#8217; an exploit they submitted to the Ethereum bug bounty on October 4, 2019.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">We encourage you to read the <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/hackmd.io\/@iwck0wkoSzauVnsYI0h7JA\/SkyFmk4_r\">submission<!-- --><\/a> thoroughly, as it&#8217;s a well-crafted report.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">On a platform aimed at cross-client security, developers from Geth, Parity, and Aleth were notified about the submission on that same day.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The core of the exploit is to induce random trie lookups. A very straightforward version could be:<!-- --><\/p>\n<p><!-- --><\/p>\n<div class=\"chakra-stack css-1uyok63\">\n<pre><pre style=\"color:white;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none;padding:1em;margin:0.5em 0;overflow:auto;background:#011627\"><code class=\"language-bash\" style=\"color:#d6deeb;font-family:Consolas, Monaco, &quot;Andale Mono&quot;, &quot;Ubuntu Mono&quot;, monospace;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;font-size:1em;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none\"><span>\tjumpdest     <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">;<!-- --><\/span><span> jump label, start of loop\n<!-- --><\/span><span>\tgas          <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">;<!-- --><\/span><span> acquire a <!-- --><\/span><span class=\"token\" style=\"color:rgb(173, 219, 103)\">'random'<!-- --><\/span><span> value on the stack\n<!-- --><\/span><span>\textcodesize  <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">;<!-- --><\/span><span> initiate trie lookup\n<!-- --><\/span><span>\tpop          <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">;<!-- --><\/span><span> disregard the extcodesize outcome\n<!-- --><\/span><span>\tpush1 0x00   <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">;<!-- --><\/span><span> jump label dest\n<!-- --><\/span><span>\tjump         <!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">;<!-- --><\/span><span> revert to start\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">In their report, the researchers executed this exploit against nodes synced to the mainnet, via <!-- --><span class=\"chakra-text css-ons8vw\">eth_call<\/span>, and these were their findings when executed with <!-- --><span class=\"chakra-text css-ons8vw\">10M<\/span> gas:<!-- --><\/p>\n<p><!-- --><\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\"><span class=\"chakra-text css-ons8vw\">10M<\/span> gas exploit using <!-- --><span class=\"chakra-text css-ons8vw\">EXTCODEHASH<\/span> (at 400 gas)<br \/>\n<!-- --><br \/>\n<!-- --><\/li>\n<li class=\"css-cvpopp\"><span class=\"chakra-text css-ons8vw\">10M<\/span> gas exploit using <!-- --><span class=\"chakra-text css-ons8vw\">EXTCODESIZE<\/span> (at 700 gas)<br \/>\n<!-- --><br \/>\n<!-- --><\/li>\n<\/ul>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">It is evidently clear that the alterations made in EIP 1884 were significantly reducing the impact of the assault, yet they were still far from adequate.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">This transpired right before Devcon in Osaka. During<br \/>\n&#8220;&#8220;&#8220;html<\/p>\n<p class=\"chakra-text css-gi02ar\">During Devcon, awareness of the issue was disseminated among the primary client developers for the mainnet. We also convened with Hubert and Mathias, alongside Greg Markou (from Chainsafe &#8212; who were engaged with ETC). Developers of ETC had also received the findings.<\/p>\n<p class=\"chakra-text css-gi02ar\">As 2019 came to an end, we realized we faced bigger challenges than we had previously foreseen, where hostile transactions could result in block times extending into the minute range. To complicate matters further: the developer community was already dissatisfied with EIP-1884, which had disrupted specific contract flows, and both users and miners were eagerly advocating for increased block gas limits.<\/p>\n<p class=\"chakra-text css-gi02ar\">Additionally, merely two months later, in December 2019, Parity Ethereum <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/www.parity.io\/parity-ethereum-openethereum-dao\/\">announced<\/a> their exit from the ecosystem, allowing OpenEthereum to assume responsibility for the codebase&#8217;s maintenance.<\/p>\n<p class=\"chakra-text css-gi02ar\">A novel coordination channel for clients was established, wherein developers from Geth, Nethermind, OpenEthereum, and Besu collaborated further.<\/p>\n<h2 class=\"chakra-heading css-1w54o5f\" id=\"the-solutions\">The solution(s)<\/h2>\n<p class=\"chakra-text css-gi02ar\">We understood that we would need to implement a dual approach to address these challenges. One strategy involved working on the Ethereum protocol, aiming to resolve this issue at the protocol level; ideally without disrupting contracts, and preferably without penalizing &#8216;positive&#8217; actions, while still thwarting attacks.<\/p>\n<p class=\"chakra-text css-gi02ar\">The second strategy would involve software engineering, altering the data models and structures within the clients.<\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"protocol-work\">Protocol work<\/h3>\n<p class=\"chakra-text css-gi02ar\">The initial attempt at addressing such types of attacks can be found <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/gist.github.com\/holiman\/aafd9a46f6849deb380004178d44c434\">here<\/a>. In February 2020, it was officially introduced as <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/eips.ethereum.org\/EIPS\/eip-2583\">EIP 2583<\/a>. The concept entails simply imposing a penalty each time a trie lookup results in a miss.<\/p>\n<p class=\"chakra-text css-gi02ar\">However, Peter devised a workaround for this concept &#8212; the &#8216;shielded relay&#8217; attack &#8211; imposing an upper limit (approximately ~800) on the magnitude of such a penalty can effectively be.<\/p>\n<p class=\"chakra-text css-gi02ar\">The challenge with <em class=\"chakra-text css-0\">penalties for misses<\/em> is that the lookup needs to occur first to establish that a penalty should be enforced. If there isn\u2019t sufficient gas available for the penalty, an unpaid execution has taken place. Even though that results in a throw, these state reads can be encapsulated within nested calls; allowing the outer caller to persist in executing the attack without serving the (full) penalty.<\/p>\n<p class=\"chakra-text css-gi02ar\">Due to this, the EIP was discontinued while we sought a superior alternative.<\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\">Alexey Akhunov examined the concept of <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/ethresear.ch\/t\/oil-adding-a-second-fuel-source-to-the-evm-pre-eip\/7394\">Oil<\/a> &#8212; a supplementary source of &#8220;gas&#8221;, which was inherently different from <span class=\"chakra-text css-ons8vw\">gas<\/span>, in that it would remain hidden from the execution layer and could induce transaction-based global reverts.<\/li>\n<li class=\"css-cvpopp\">In May 2020, Martin drafted a comparable proposal about <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/gist.github.com\/holiman\/8a3c31e459ee1bff04256bc214ea7f14\">Karma<\/a>.<\/li>\n<\/ul>\n<p class=\"chakra-text css-gi02ar\">While iterating through these various concepts, Vitalik Buterin suggested merely increasing the gas costs, while maintaining access lists. In August 2020, Martin and Vitalik commenced iterations on what was to evolve into <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/eips.ethereum.org\/EIPS\/eip-2929\">EIP-2929<\/a> and its partner EIP, <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/eips.ethereum.org\/EIPS\/eip-2930\">EIP-2930<\/a>.<\/p>\n<p class=\"chakra-text css-gi02ar\">EIP-2929 effectively resolved a significant number of the previous issues.<\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\">Unlike EIP-1884, which raised costs unconditionally, it only elevated costs for items not already accessed. This results in a mere <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/github.com\/holiman\/eip2929-stats\/blob\/main\/README.md#summary\">sub-percent increase<\/a> in net costs.<\/li>\n<li class=\"css-cvpopp\">Moreover, along with EIP-2930, it doesn\u2019t disrupt any contract flows,<\/li>\n<li class=\"css-cvpopp\">And it can be further adjusted with heightened gas costs (without causing issues).<\/li>\n<\/ul>\n<p class=\"chakra-text css-gi02ar\">On April 15th, 2021, both went live with the <span class=\"chakra-text css-ons8vw\">Berlin<\/span> upgrade.<\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"development-work\">Development work<\/h3>\n<p class=\"chakra-text css-gi02ar\">Peter&#8217;s initiative to address this issue was <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/github.com\/ethereum\/go-ethereum\/pull\/20152\">dynamic state snapshots<\/a>, implemented in October 2019.<\/p>\n<p class=\"chakra-text css-gi02ar\">A snapshot serves as an additional data structure for storing the Ethereum state in a flat format, which can be fully constructed online during the active operation of a Geth node. The advantage of the snapshot is that it functions as an acceleration structure for state accesses:<\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\">Instead of conducting <span class=\"chakra-text css-ons8vw\">O(log N)<\/span> disk reads (due to <span class=\"chakra-text css-ons8vw\">x<\/span> LevelDB overhead) to access an account\/storage slot, the snapshot can provide direct, <span class=\"chakra-text css-ons8vw\">O(1)<\/span> access time (<span class=\"chakra-text css-ons8vw\">x<\/span> LevelDB overhead).<\/li>\n<li class=\"css-cvpopp\">The snapshot enables account and storage iteration at <span class=\"chakra-text css-ons8vw\">O(1)<\/span> complexity per entry, allowing remote nodes to retrieve sequential state data at significantly reduced costs compared to before.<\/li>\n<li class=\"css-cvpopp\">The existence of the snapshot also facilitates more exotic use cases such as offline pruning of the state trie or transitioning to other data formats.<\/li>\n<\/ul>\n<p class=\"chakra-text css-gi02ar\">The downside of the snapshot is that the raw account and storage data is essentially duplicated. In the context of the mainnet, this translates to an additional <span class=\"chakra-text css-ons8vw\">25GB<\/span> of SSD storage used.<\/p>\n<p class=\"chakra-text css-gi02ar\">The concept of dynamic snapshots had already been initiated in mid-2019, primarily aiming to enable <span class=\"chakra-text css-ons8vw\">snap<\/span> sync. At that time, there were several &#8220;large projects&#8221; the Geth team was involved with.<\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\">Offline state pruning<\/li>\n<li class=\"css-cvpopp\">Dynamic snapshots + snap<\/li>\n<p>&#8220;`sync<!-- --><\/li>\n<li class=\"css-cvpopp\">LES state distribution through sharded state<!-- --><\/li>\n<\/ul>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Nevertheless, a decision was made to fully focus on snapshots, deferring other initiatives for the time being. These established the foundation for what would eventually become <!-- --><span class=\"chakra-text css-ons8vw\">snap\/1<\/span> sync <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/github.com\/ethereum\/devp2p\/blob\/master\/caps\/snap.md\">algorithm<!-- --><\/a>. It was integrated in March 2020.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">With the &#8220;dynamic snapshot&#8221; feature released into the ecosystem, we gained some breathing space. Should the Ethereum network face an attack, it would be challenging, indeed, but communicating to users about enabling the snapshot would at least be feasible. The entire snapshot generation process would require considerable time, and synchronizing the snapshots was not yet possible, but the network could continue its operations nonetheless.<!-- --><\/p>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"tying-up-the-threads\">Connecting the threads<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Between March-April 2021, the <!-- --><span class=\"chakra-text css-ons8vw\">snap\/1<\/span> protocol was introduced in geth, allowing synchronization via the new snapshot-based algorithm. Although it wasn&#8217;t the standard synchronization method yet, it represented a significant (crucial) progression toward making snapshots not just beneficial as an attack deterrent, but also as a substantial enhancement for users.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">On the protocol front, the <!-- --><span class=\"chakra-text css-ons8vw\">Berlin<\/span> upgrade was implemented in April 2021.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Some benchmarking conducted in our AWS monitoring environment is outlined below:<!-- --><\/p>\n<p><!-- --><\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\">Pre-berlin, no snapshots, <!-- --><span class=\"chakra-text css-ons8vw\">25M<\/span> gas: <!-- --><span class=\"chakra-text css-ons8vw\">14.3s<\/span><\/li>\n<li class=\"css-cvpopp\">Pre-berlin, with snapshots, <!-- --><span class=\"chakra-text css-ons8vw\">25M<\/span> gas: <!-- --><span class=\"chakra-text css-ons8vw\">1.5s<\/span><\/li>\n<li class=\"css-cvpopp\">Post-berlin, no snapshots, <!-- --><span class=\"chakra-text css-ons8vw\">25M<\/span> gas: <!-- --><span class=\"chakra-text css-ons8vw\">~3.1s<\/span><\/li>\n<li class=\"css-cvpopp\">Post-berlin, with snapshots, <!-- --><span class=\"chakra-text css-ons8vw\">25M<\/span> gas: <!-- --><span class=\"chakra-text css-ons8vw\">~0.3s<\/span><\/li>\n<\/ul>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The (approximate) data suggests that the <!-- --><span class=\"chakra-text css-ons8vw\">Berlin<\/span> upgrade diminished the attack effectiveness by <!-- --><span class=\"chakra-text css-ons8vw\">5x<\/span>, while snapshots further mitigated it by <!-- --><span class=\"chakra-text css-ons8vw\">10x<\/span>, resulting in a total impact reduction of <!-- --><span class=\"chakra-text css-ons8vw\">50x<\/span>.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">We project that currently, on Mainnet (15M gas), it would be feasible to create blocks that would require <!-- --><span class=\"chakra-text css-ons8vw\">2.5-3s<\/span> to process on a <!-- --><span class=\"chakra-text css-ons8vw\">geth<\/span> node <!-- --><em class=\"chakra-text css-0\">without<!-- --><\/em> snapshots. This figure is expected to continually decline (for non-snapshot nodes) as the state expands.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">If refunds are utilized to augment the effective gas usage within a block, this can be further intensified by a factor of (max) <!-- --><span class=\"chakra-text css-ons8vw\">2x<\/span>. With <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/eips.ethereum.org\/EIPS\/eip-1559\">EIP 1559<!-- --><\/a>, the block gas limit will possess greater elasticity, facilitating an additional <!-- --><span class=\"chakra-text css-ons8vw\">2x<\/span> (the <!-- --><span class=\"chakra-text css-ons8vw\">ELASTICITY_MULTIPLIER<\/span>) during temporary surges.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Regarding the feasibility of launching this attack; the expense for an attacker acquiring a full block would amount to a few ether (<!-- --><span class=\"chakra-text css-ons8vw\">15M<\/span> gas at <!-- --><span class=\"chakra-text css-ons8vw\">100Gwei<\/span> translates to <!-- --><span class=\"chakra-text css-ons8vw\">1.5<\/span> ether).<!-- --><\/p>\n<p><!-- --><\/p>\n<h2 class=\"chakra-heading css-1w54o5f\" id=\"why-disclose-now\">Why reveal now<!-- --><\/h2>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">This risk has been an &#8220;open secret&#8221; for quite some time &#8212; it has actually been mistakenly made public at least once, and it has been referenced in ACD discussions multiple times without specific details.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Given that the Berlin upgrade is now completed, and that geth nodes by default are using snapshots, we believe the threat level is sufficiently low that transparency takes precedence, and now is the moment to offer a complete disclosure on the behind-the-scenes developments.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">It is crucial that the community is provided with the opportunity to comprehend the reasoning behind modifications that adversely impact user experience, such as increased gas costs and constraints on refunds.<!-- --><\/p>\n<p><!-- --><\/p>\n<hr aria-orientation=\"horizontal\" class=\"chakra-divider css-1e6gg7n\"\/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">This article was composed by Martin Holst Swende and Peter Szilagyi on 2021-04-23.<br \/>\nIt was shared with other Ethereum-related projects on 2021-04-26, and publicly revealed on 2021-05-18.<!-- --><\/p>\n<\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/blog.ethereum.org\/en\/2021\/05\/18\/eth-state-problems\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;`html Through this blog entry, the aim is to formally unveil a significant risk to the Ethereum network, which posed a clear and present threat up until the Berlin hardfork. State Let&#8217;s start with some context on Ethereum and State. The Ethereum state is made up of a patricia-merkle trie, which is a type of<\/p>\n","protected":false},"author":3,"featured_media":5124,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[707],"class_list":["post-6910","post","type-post","status-publish","format-standard","has-post-thumbnail","category-ethereum","tag-return-a-list-of-comma-separated-tags-from-this-title-dodging-a-bullet-ethereum-state-problems"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Navigating the Minefield: Challenges Facing Ethereum&#039;s State Mechanics - WSJ-Crypto<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Navigating the Minefield: Challenges Facing Ethereum&#039;s State Mechanics - WSJ-Crypto\" \/>\n<meta property=\"og:description\" content=\"&#8220;`html Through this blog entry, the aim is to formally unveil a significant risk to the Ethereum network, which posed a clear and present threat up until the Berlin hardfork. State Let&#8217;s start with some context on Ethereum and State. The Ethereum state is made up of a patricia-merkle trie, which is a type of\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/\" \/>\n<meta property=\"og:site_name\" content=\"WSJ-Crypto\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-03T18:44:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2024\/11\/eth-org.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"2100\" \/>\n\t<meta property=\"og:image:height\" content=\"900\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"wsjcrypto\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"wsjcrypto\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/\",\"url\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/\",\"name\":\"Navigating the Minefield: Challenges Facing Ethereum's State Mechanics - WSJ-Crypto\",\"isPartOf\":{\"@id\":\"https:\/\/wsj-crypto.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2024\/11\/eth-org.jpeg\",\"datePublished\":\"2025-01-03T18:44:38+00:00\",\"author\":{\"@id\":\"https:\/\/wsj-crypto.com\/#\/schema\/person\/88a93723b30416db1a352d5a0096c4a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/#primaryimage\",\"url\":\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2024\/11\/eth-org.jpeg\",\"contentUrl\":\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2024\/11\/eth-org.jpeg\",\"width\":2100,\"height\":900},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/wsj-crypto.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Navigating the Minefield: Challenges Facing Ethereum&#8217;s State Mechanics\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/wsj-crypto.com\/#website\",\"url\":\"https:\/\/wsj-crypto.com\/\",\"name\":\"WSJ-Crypto\",\"description\":\"Just Another Crypto News Website\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/wsj-crypto.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/wsj-crypto.com\/#\/schema\/person\/88a93723b30416db1a352d5a0096c4a7\",\"name\":\"wsjcrypto\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/wsj-crypto.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/86fe8af82ea089646d6639ca2f87e0243d8688d957bd8e3ec22ec3c457cc16d4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/86fe8af82ea089646d6639ca2f87e0243d8688d957bd8e3ec22ec3c457cc16d4?s=96&d=mm&r=g\",\"caption\":\"wsjcrypto\"},\"url\":\"https:\/\/wsj-crypto.com\/index.php\/author\/wsjcrypto\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Navigating the Minefield: Challenges Facing Ethereum's State Mechanics - WSJ-Crypto","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/","og_locale":"it_IT","og_type":"article","og_title":"Navigating the Minefield: Challenges Facing Ethereum's State Mechanics - WSJ-Crypto","og_description":"&#8220;`html Through this blog entry, the aim is to formally unveil a significant risk to the Ethereum network, which posed a clear and present threat up until the Berlin hardfork. State Let&#8217;s start with some context on Ethereum and State. The Ethereum state is made up of a patricia-merkle trie, which is a type of","og_url":"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/","og_site_name":"WSJ-Crypto","article_published_time":"2025-01-03T18:44:38+00:00","og_image":[{"width":2100,"height":900,"url":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2024\/11\/eth-org.jpeg","type":"image\/jpeg"}],"author":"wsjcrypto","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"wsjcrypto","Tempo di lettura stimato":"9 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/","url":"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/","name":"Navigating the Minefield: Challenges Facing Ethereum's State Mechanics - WSJ-Crypto","isPartOf":{"@id":"https:\/\/wsj-crypto.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/#primaryimage"},"image":{"@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/#primaryimage"},"thumbnailUrl":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2024\/11\/eth-org.jpeg","datePublished":"2025-01-03T18:44:38+00:00","author":{"@id":"https:\/\/wsj-crypto.com\/#\/schema\/person\/88a93723b30416db1a352d5a0096c4a7"},"breadcrumb":{"@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/#primaryimage","url":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2024\/11\/eth-org.jpeg","contentUrl":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2024\/11\/eth-org.jpeg","width":2100,"height":900},{"@type":"BreadcrumbList","@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/01\/03\/navigating-the-minefield-challenges-facing-ethereums-state-mechanics\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wsj-crypto.com\/"},{"@type":"ListItem","position":2,"name":"Navigating the Minefield: Challenges Facing Ethereum&#8217;s State Mechanics"}]},{"@type":"WebSite","@id":"https:\/\/wsj-crypto.com\/#website","url":"https:\/\/wsj-crypto.com\/","name":"WSJ-Crypto","description":"Just Another Crypto News Website","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wsj-crypto.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/wsj-crypto.com\/#\/schema\/person\/88a93723b30416db1a352d5a0096c4a7","name":"wsjcrypto","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/wsj-crypto.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/86fe8af82ea089646d6639ca2f87e0243d8688d957bd8e3ec22ec3c457cc16d4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/86fe8af82ea089646d6639ca2f87e0243d8688d957bd8e3ec22ec3c457cc16d4?s=96&d=mm&r=g","caption":"wsjcrypto"},"url":"https:\/\/wsj-crypto.com\/index.php\/author\/wsjcrypto\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/posts\/6910","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/comments?post=6910"}],"version-history":[{"count":2,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/posts\/6910\/revisions"}],"predecessor-version":[{"id":6912,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/posts\/6910\/revisions\/6912"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/media\/5124"}],"wp:attachment":[{"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/media?parent=6910"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/categories?post=6910"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/tags?post=6910"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}