{"id":8109,"date":"2025-02-03T16:33:33","date_gmt":"2025-02-03T15:33:33","guid":{"rendered":"https:\/\/wsj-crypto.com\/?p=8109"},"modified":"2025-02-03T16:33:33","modified_gmt":"2025-02-03T15:33:33","slug":"unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch","status":"publish","type":"post","link":"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/","title":{"rendered":"Unveiling the Solidity Optimizer: Navigating the ABIEncoderV2 Glitch"},"content":{"rendered":"<p><\/p>\n<div id=\"\">\n<h2 class=\"chakra-heading css-1w54o5f\" id=\"solidity-optimizer-and-abiencoderv2-bug-announcement\">Announcement of Solidity Optimizer and ABIEncoderV2 Bug<!-- --><\/h2>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Through the Ethereum bug bounty initiative, we acquired a report regarding a defect found within the new experimental ABI encoder (known as ABIEncoderV2). Upon further examination, it became evident that the feature experiences several variations of a similar nature. The opening section of this announcement delves into the specifics of this issue. Though the new ABI encoder remains tagged as experimental, we still believe it warrants a significant announcement as it is currently deployed on the mainnet.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Furthermore, two minor issues in the optimizer have been recognized over the last fortnight, one of which was resolved with Solidity v0.5.6. Both were introduced with version 0.5.5. Refer to the latter section of this announcement for the specifics.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/github.com\/ethereum\/solidity\/releases\/tag\/v0.5.7\">0.5.7 release<!-- --><\/a> encompasses the fixes for all issues detailed in this communication.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">All the defects cited here should be readily observable in tests pertaining to the corresponding code paths, particularly when executed with all combinations of zero and nonzero values.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Acknowledgments to the Melonport team (Travis Jacobs &amp; Jenna Zenk) and the Melon Council (Nick Munoz-McDonald, Martin Lundfall, Matt di Ferrante &amp; Adam Kolar), who reported this through the Ethereum bug bounty initiative!<!-- --><\/p>\n<p><!-- --><\/p>\n<h2 class=\"chakra-heading css-1w54o5f\" id=\"who-should-be-concerned\">Who Needs to Be Aware<!-- --><\/h2>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">If you have deployed contracts utilizing the experimental ABI encoder V2, they may potentially be impacted. This implies that only contracts incorporating the following directive within the source code could be susceptible:<!-- --><\/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>pragma experimental ABIEncoderV2<!-- --><\/span><span class=\"token\" style=\"color:rgb(199, 146, 234)\">;<!-- --><\/span><span>\n<!-- --><\/span><\/code><\/pre>\n<\/div>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Moreover, there are several conditions necessary for the bug to activate. Refer to technical details below for additional information.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">To the best of our knowledge, there are approximately 2500 contracts operational on mainnet that utilize the experimental ABIEncoderV2. It remains uncertain how many of these may contain the flaw.<!-- --><\/p>\n<p><!-- --><\/p>\n<h2 class=\"chakra-heading css-1w54o5f\" id=\"how-to-check-if-contract-is-vulnerable\">How to Determine if a Contract is Vulnerable<!-- --><\/h2>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The defect manifests only when all of the following stipulations are satisfied:<!-- --><\/p>\n<p><!-- --><\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\">Storage data involving arrays or structs is transmitted directly to an external function call, to <!-- --><span class=\"chakra-text css-ons8vw\">abi.encode<\/span> or to event data without previous assignment to a local (memory) variable AND<!-- --><\/li>\n<li class=\"css-cvpopp\">there exists an array containing elements smaller than 32 bytes or a struct that possesses elements sharing a storage slot or members of type <!-- --><span class=\"chakra-text css-ons8vw\">bytesNN<\/span> shorter than 32 bytes.<!-- --><\/li>\n<\/ul>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Additionally, under the following scenarios, your code is NOT impacted:<!-- --><\/p>\n<p><!-- --><\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\">if all your structs or arrays solely utilize <!-- --><span class=\"chakra-text css-ons8vw\">uint256<\/span> or <!-- --><span class=\"chakra-text css-ons8vw\">int256<\/span> types<!-- --><\/li>\n<li class=\"css-cvpopp\">if you exclusively use integer types (which may be shorter) and only encode one array at a time<!-- --><\/li>\n<li class=\"css-cvpopp\">if you only return such data and do not employ it in <!-- --><span class=\"chakra-text css-ons8vw\">abi.encode<\/span>, external calls, or event data.<!-- --><\/li>\n<\/ul>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Should you have a contract that fulfills these criteria, and wish to confirm its vulnerability, please contact us via <!-- --><a class=\"chakra-link css-ug8vf0\" href=\"https:\/\/blog.ethereum.org\/en\/2019\/03\/26\/mailto:security@ethereum.org\">security@ethereum.org<!-- --><\/a>.<!-- --><\/p>\n<p><!-- --><\/p>\n<h2 class=\"chakra-heading css-1w54o5f\" id=\"how-to-prevent-these-types-of-flaws-in-the-future\">Preventing Similar Flaws in the Future<!-- --><\/h2>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">To adopt a cautious approach regarding modifications, the experimental ABI encoder has been accessible only when explicitly activated, enabling users to engage with it and assess its functionality without excessive reliance prior to it being deemed stable.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">We strive for excellence and have recently commenced &#8216;semantic&#8217; fuzzing on certain sections of <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/github.com\/google\/oss-fuzz\">OSS-Fuzz<!-- --><\/a> (previously, we applied crash-fuzzing on the compiler, though this did not validate compiler accuracy).<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">For developers\u2014detecting bugs within the Solidity compiler is challenging with tools such as vulnerability detectors, as instruments that function on source code or AST representations do not catch defects arising solely in the compiled bytecode.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The most effective method to safeguard against such flaws is to implement a rigorous set of end-to-end tests for your contracts (ensuring all code pathways are verified), as bugs in a compiler are likely to be apparent and result in erroneous data.<!-- --><\/p>\n<p><!-- --><\/p>\n<h2 class=\"chakra-heading css-1w54o5f\" id=\"possible-consequences\">Potential Consequences<!-- --><\/h2>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Naturally, any defect can yield significantly different consequences based on the program&#8217;s control flow; however, we anticipate that this is more inclined to cause malfunction rather than be exploitable.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">When triggered, the bug under certain conditions will send corrupted parameters during method invocations to other contracts.<!-- --><\/p>\n<p><!-- --><\/p>\n<h2 class=\"chakra-heading css-1w54o5f\" id=\"timeline\">Timeline<!-- --><\/h2>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">2019-03-16:<!-- --><\/p>\n<p><!-- --><\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\">Report via bug bounty concerning corruption incurred when reading directly from arrays of booleans into the ABI encoder.<!-- --><\/li>\n<\/ul>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">2019-03-16 to 2019-03-21:<!-- --><\/p>\n<p><!-- --><\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\">Investigation into the root cause and analysis of affected contracts. An unexpectedly high number of contracts must be addressed.compiled with the experimental encoder were discovered deployed on mainnet, several without authenticated source-code.<!-- --><\/li>\n<li class=\"css-cvpopp\">Examination of the bug revealed additional methods to trigger the flaw, e.g. utilizing structs. Additionally, an array overflow bug was identified in the same process.<!-- --><\/li>\n<li class=\"css-cvpopp\">A selection of contracts located on Github were examined, and none were observed to be impacted.<!-- --><\/li>\n<li class=\"css-cvpopp\">A fix for the ABI encoder was implemented.<!-- --><\/li>\n<\/ul>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">2019-03-20:<!-- --><\/p>\n<p><!-- --><\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\">Resolution to disclose information publicly.<!-- --><\/li>\n<li class=\"css-cvpopp\">Rationale: It would not be practical to identify all compromised contracts and contact all creators promptly, and it would be beneficial to halt further spread of vulnerable contracts on mainnet.<!-- --><\/li>\n<\/ul>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">2019-03-26:<!-- --><\/p>\n<p><!-- --><\/p>\n<ul role=\"list\" class=\"css-1onhfjo\">\n<li class=\"css-cvpopp\">New compiler version released, version 0.5.7.<!-- --><\/li>\n<li class=\"css-cvpopp\">This announcement was published.<!-- --><\/li>\n<\/ul>\n<p><!-- --><\/p>\n<h2 class=\"chakra-heading css-1w54o5f\" id=\"technical-details\">Technical details<!-- --><\/h2>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"background\">Background<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The Contract ABI is a guideline on how data can be exchanged with contracts from the external environment (a Dapp) or during interactions among contracts. It accommodates various types of data, encompassing simple values like numbers, bytes, and strings, as well as more intricate data types, including arrays and structs.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Upon receiving input data, a contract must decode this information (this is accomplished by the &#8220;ABI decoder&#8221;) and before returning data or transmitting data to another contract, it must encode it (this is conducted by the &#8220;ABI encoder&#8221;). The Solidity compiler produces these two segments of code for every defined function within a contract (and for <!-- --><span class=\"chakra-text css-ons8vw\">abi.encode<\/span> and <!-- --><span class=\"chakra-text css-ons8vw\">abi.decode<\/span>). In the Solidity compiler, the subsystem responsible for generating the encoder and decoder is referred to as the &#8220;ABI encoder&#8221;.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">In mid-2017, the Solidity team commenced work on a new implementation called &#8220;ABI encoder V2&#8221; aimed at producing more versatile, secure, efficient, and auditable code generation. This experimental code generator has been available to users since late 2017 with the launch of version 0.4.19, when explicitly enabled.<!-- --><\/p>\n<p><!-- --><\/p>\n<h3 class=\"chakra-heading css-145upk7\" id=\"the-flaw\">The flaw<!-- --><\/h3>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">The experimental ABI encoder does not appropriately manage non-integer values that are shorter than 32 bytes. This concern pertains to <!-- --><span class=\"chakra-text css-ons8vw\">bytesNN<\/span> types, <!-- --><span class=\"chakra-text css-ons8vw\">bool<\/span>, <!-- --><span class=\"chakra-text css-ons8vw\">enum<\/span>, and other types when they are included in an array or a struct and encoded directly from storage. This indicates that these storage references must be utilized directly within <!-- --><span class=\"chakra-text css-ons8vw\">abi.encode(&#8230;)<\/span>, as parameters in external function calls or in event data without first assigning to a local variable. Employing <!-- --><span class=\"chakra-text css-ons8vw\">return<\/span> does not trigger the flaw. The types <!-- --><span class=\"chakra-text css-ons8vw\">bytesNN<\/span> and <!-- --><span class=\"chakra-text css-ons8vw\">bool<\/span> will lead to corrupted output, while <!-- --><span class=\"chakra-text css-ons8vw\">enum<\/span> could result in an invalid <!-- --><span class=\"chakra-text css-ons8vw\">revert<\/span>.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Moreover, arrays with elements shorter than 32 bytes may not be managed correctly even if the base type is an integer. Encoding such arrays in the manner outlined above can result in other data within the encoding being overwritten if the count of elements encoded is not a multiple of the number of elements that can fit in a single slot. If nothing follows the array in the encoding (noting that dynamically-sized arrays are always encoded after statically-sized arrays with statically-sized content), or if merely a single array is encoded, no additional data is overwritten.<!-- --><\/p>\n<p><!-- --><br \/>\n<!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">Unrelated to the ABI encoder issue discussed previously, two defects have been discovered in the optimizer. Both were introduced with the release of version 0.5.5 (on 5th March). They are unlikely to appear in code produced by the compiler, unless inline assembly is utilized.<!-- --><\/p>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">These two defects were recognized through the recent inclusion of Solidity in <!-- --><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-ug8vf0\" href=\"https:\/\/github.com\/google\/oss-fuzz\">OSS-Fuzz<!-- --><\/a> &#8211; a security toolkit aimed at identifying discrepancies or problems across various projects. For Solidity, we have incorporated several different fuzzers that assess distinct aspects of the compiler.<!-- --><\/p>\n<p><!-- --><\/p>\n<ol role=\"list\" class=\"css-13a5a39\">\n<li class=\"css-cvpopp\">The optimizer transforms opcode sequences like <!-- --><span class=\"chakra-text css-ons8vw\">((x , where <!-- --><span class=\"chakra-text css-ons8vw\">a<\/span> and <!-- --><span class=\"chakra-text css-ons8vw\">b<\/span> are constants determined at compile-time, into <!-- --><span class=\"chakra-text css-ons8vw\">(x  while inadequately addressing overflow during the addition.<!-- --><\/span><\/span><\/li>\n<li class=\"css-cvpopp\">The optimizer incorrectly manages the <!-- --><span class=\"chakra-text css-ons8vw\">byte<\/span> opcode if the constant 31 is utilized as the second argument. This may occur during index access on <!-- --><span class=\"chakra-text css-ons8vw\">bytesNN<\/span> types with a compile-time constant value (not index) of 31 or when employing the byte opcode in inline assembly.<!-- --><\/li>\n<\/ol>\n<p><!-- --><\/p>\n<p class=\"chakra-text css-gi02ar\">This announcement was collaboratively authored by @axic, @chriseth, @holiman<!-- --><\/p>\n<\/div>\n<p><br \/>\n<br \/><a href=\"https:\/\/blog.ethereum.org\/en\/2019\/03\/26\/solidity-optimizer-and-abiencoderv2-bug\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Announcement of Solidity Optimizer and ABIEncoderV2 Bug Through the Ethereum bug bounty initiative, we acquired a report regarding a defect found within the new experimental ABI encoder (known as ABIEncoderV2). Upon further examination, it became evident that the feature experiences several variations of a similar nature. The opening section of this announcement delves into the<\/p>\n","protected":false},"author":3,"featured_media":7155,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[1129],"class_list":["post-8109","post","type-post","status-publish","format-standard","has-post-thumbnail","category-ethereum","tag-return-a-list-of-comma-separated-tags-from-this-title-solidity-optimizer-and-abiencoderv2-bug"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Unveiling the Solidity Optimizer: Navigating the ABIEncoderV2 Glitch - 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\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Unveiling the Solidity Optimizer: Navigating the ABIEncoderV2 Glitch - WSJ-Crypto\" \/>\n<meta property=\"og:description\" content=\"Announcement of Solidity Optimizer and ABIEncoderV2 Bug Through the Ethereum bug bounty initiative, we acquired a report regarding a defect found within the new experimental ABI encoder (known as ABIEncoderV2). Upon further examination, it became evident that the feature experiences several variations of a similar nature. The opening section of this announcement delves into the\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/\" \/>\n<meta property=\"og:site_name\" content=\"WSJ-Crypto\" \/>\n<meta property=\"article:published_time\" content=\"2025-02-03T15:33:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/01\/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=\"7 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\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/\",\"url\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/\",\"name\":\"Unveiling the Solidity Optimizer: Navigating the ABIEncoderV2 Glitch - WSJ-Crypto\",\"isPartOf\":{\"@id\":\"https:\/\/wsj-crypto.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/01\/eth-org.jpeg\",\"datePublished\":\"2025-02-03T15:33:33+00:00\",\"author\":{\"@id\":\"https:\/\/wsj-crypto.com\/#\/schema\/person\/88a93723b30416db1a352d5a0096c4a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/#primaryimage\",\"url\":\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/01\/eth-org.jpeg\",\"contentUrl\":\"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/01\/eth-org.jpeg\",\"width\":2100,\"height\":900},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/wsj-crypto.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Unveiling the Solidity Optimizer: Navigating the ABIEncoderV2 Glitch\"}]},{\"@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":"Unveiling the Solidity Optimizer: Navigating the ABIEncoderV2 Glitch - 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\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/","og_locale":"it_IT","og_type":"article","og_title":"Unveiling the Solidity Optimizer: Navigating the ABIEncoderV2 Glitch - WSJ-Crypto","og_description":"Announcement of Solidity Optimizer and ABIEncoderV2 Bug Through the Ethereum bug bounty initiative, we acquired a report regarding a defect found within the new experimental ABI encoder (known as ABIEncoderV2). Upon further examination, it became evident that the feature experiences several variations of a similar nature. The opening section of this announcement delves into the","og_url":"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/","og_site_name":"WSJ-Crypto","article_published_time":"2025-02-03T15:33:33+00:00","og_image":[{"width":2100,"height":900,"url":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/01\/eth-org.jpeg","type":"image\/jpeg"}],"author":"wsjcrypto","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"wsjcrypto","Tempo di lettura stimato":"7 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/","url":"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/","name":"Unveiling the Solidity Optimizer: Navigating the ABIEncoderV2 Glitch - WSJ-Crypto","isPartOf":{"@id":"https:\/\/wsj-crypto.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/#primaryimage"},"image":{"@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/#primaryimage"},"thumbnailUrl":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/01\/eth-org.jpeg","datePublished":"2025-02-03T15:33:33+00:00","author":{"@id":"https:\/\/wsj-crypto.com\/#\/schema\/person\/88a93723b30416db1a352d5a0096c4a7"},"breadcrumb":{"@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/#primaryimage","url":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/01\/eth-org.jpeg","contentUrl":"https:\/\/wsj-crypto.com\/wp-content\/uploads\/2025\/01\/eth-org.jpeg","width":2100,"height":900},{"@type":"BreadcrumbList","@id":"https:\/\/wsj-crypto.com\/index.php\/2025\/02\/03\/unveiling-the-solidity-optimizer-navigating-the-abiencoderv2-glitch\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wsj-crypto.com\/"},{"@type":"ListItem","position":2,"name":"Unveiling the Solidity Optimizer: Navigating the ABIEncoderV2 Glitch"}]},{"@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\/8109","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=8109"}],"version-history":[{"count":2,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/posts\/8109\/revisions"}],"predecessor-version":[{"id":8111,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/posts\/8109\/revisions\/8111"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/media\/7155"}],"wp:attachment":[{"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/media?parent=8109"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/categories?post=8109"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wsj-crypto.com\/index.php\/wp-json\/wp\/v2\/tags?post=8109"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}