{"id":18328,"date":"2026-03-16T00:11:38","date_gmt":"2026-03-16T00:11:38","guid":{"rendered":"https:\/\/cryptoted.net\/index.php\/2026\/03\/16\/ef-supported-teams-research-development-update-3\/"},"modified":"2026-03-16T00:11:38","modified_gmt":"2026-03-16T00:11:38","slug":"ef-supported-teams-research-development-update-3","status":"publish","type":"post","link":"https:\/\/cryptoted.net\/index.php\/2026\/03\/16\/ef-supported-teams-research-development-update-3\/","title":{"rendered":"EF-Supported Teams: Research &#038; Development Update"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div id=\"\"><center><img decoding=\"async\" alt=\"Devcon Photo - Lights\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/devcon-lights-edit.jpg\" class=\"chakra-image css-hw6q2r\"\/><\/center><\/p>\n<p class=\"chakra-text css-gi02ar\">Friends,<\/p>\n<p class=\"chakra-text css-gi02ar\">From our team to you and yours, we hope everyone and their families are well and keeping safe during these complicated weeks. To help pass some time while we\u2019re all stuck in doors, it\u2019s time again to update the community on progress made by some of the EF-supported projects not covered in <a class=\"chakra-link css-vezwxf\" href=\"https:\/\/blog.ethereum.org\/2020\/04\/01\/ecosystem-support-program-allocation-update\">last week\u2019s ESP Allocation Update<\/a>. While the last Winter edition in this series was posted only a few months ago, we\u2019ve all come a long way since the launch of the Istanbul network upgrade, and many teams have news to share.<\/p>\n<p class=\"chakra-text css-gi02ar\">As always, these updates focus on EF-supported teams and efforts whose members are working to grow and improve Ethereum as a whole. Included in this edition are updates from many teams highlighted in <a class=\"chakra-link css-vezwxf\" href=\"https:\/\/blog.ethereum.org\/2019\/12\/03\/ef-supported-teams-research-and-development-update-2019-pt-2\">the previous report<\/a>, and other new and rotating news.<\/p>\n<p class=\"chakra-text css-gi02ar\">Enjoy!<\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"aleth--c-ethereum\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"aleth  c ethereum permalink\" href=\"#aleth--c-ethereum\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Aleth \/ C++ Ethereum<\/h2>\n<hr aria-orientation=\"horizontal\" class=\"chakra-divider css-1e6gg7n\"\/>\n<p class=\"chakra-text css-gi02ar\"><em class=\"chakra-text css-0\">Authored by Pawe\u0142 Bylica<\/em><\/p>\n<p class=\"chakra-text css-gi02ar\">In December 2019, the <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/aleth\/releases\/tag\/v1.8.0\">1.8.0<\/a> version of Aleth was released. It contains a number of fixes and improvements related to a variety of aspects of how this C++ Ethereum node functions. In particular, we made improvements to the RPC interface, blockchain sync and network protocol, and testing tools (testeth, aleth-vm). See <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/aleth\/blob\/master\/CHANGELOG.md#180---2019-12-16\">CHANGELOG<\/a> for more details.<\/p>\n<p class=\"chakra-text css-gi02ar\">This release also contains substantial work related to the consensus mechanism:<\/p>\n<ul role=\"list\" class=\"css-1ars4k6\">\n<li class=\"css-0\"><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/eips.ethereum.org\/EIPS\/eip-2387\">Muir Glacier<\/a> network upgrade support.<\/li>\n<li class=\"css-0\"><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/eips.ethereum.org\/EIPS\/eip-1380\">EIP-1380<\/a> &#8220;Reduced gas cost for call to self&#8221; implementation.<\/li>\n<li class=\"css-0\"><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/eips.ethereum.org\/EIPS\/eip-2046\">EIP-2046<\/a> &#8220;Reduced gas cost for static calls made to precompiles&#8221; implementation.<\/li>\n<li class=\"css-0\">Support for individual EIP activation to facilitate <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/notes.ethereum.org\/@holiman\/S1ELAYY7S?type=view\">EIP-centric<\/a> network upgrade process.<\/li>\n<\/ul>\n<p class=\"chakra-text css-gi02ar\">Aleth 1.8.0 is the last planned version. From now on, we are only committed to basic maintenance of the code, Pull Request review and fulfilling the remaining needs of testing and EIP reviews. At this point I\u2019d like to thank all Aleth contributors, especially <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/halfalicious\">Nils-Erik Frantzell<\/a> who put a lot of effort in the project in the past year.<\/p>\n<p class=\"chakra-text css-gi02ar\">It is also worth mentioning maintenance releases of sibling projects:<\/p>\n<p class=\"chakra-text css-gi02ar\">Last but not least, we have published an article on <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/evmone\/blob\/master\/docs\/efficient_gas_calculation_algorithm.md\">Efficient gas calculation algorithm for EVM<\/a>, later included in Devcon 5 presentation <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/docs.google.com\/presentation\/d\/1MgXd159bmx37Q70Ng_ggHcClcYLafYqrxNEBFKAMqWI\">Optimization techniques for EVM implementations<\/a>.<\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"applied-zkp\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"applied zkp permalink\" href=\"#applied-zkp\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Applied ZKP<\/h2>\n<hr aria-orientation=\"horizontal\" class=\"chakra-divider css-1e6gg7n\"\/>\n<p class=\"chakra-text css-gi02ar\"><em class=\"chakra-text css-0\">Authored by Koh Wei Jie and Kobi Gurkan<\/em><\/p>\n<p class=\"chakra-text css-gi02ar\">The Applied ZKP team works to bridge the gap between cutting-edge research in zero-knowledge proofs, and application development on Ethereum.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"perpetual-powers-of-tau\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"perpetual powers of tau permalink\" href=\"#perpetual-powers-of-tau\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Perpetual Powers of Tau<\/h3>\n<p class=\"chakra-text css-gi02ar\">In September 2019, we launched the <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/medium.com\/coinmonks\/announcing-the-perpetual-powers-of-tau-ceremony-to-benefit-all-zk-snark-projects-c3da86af8377\">Perpetual Powers of Tau ceremony<\/a> (PPOT). PPOT aims to benefit the zero-knowledge ecosystem, particularly zk-SNARK projects built on Ethereum, by partially easing the burden of trusted setup ceremonies. Every zk-SNARK project requires two phases of parameter generation, and PPOT replaces the first phase, which can be shared by all circuits. Individual teams can choose any contribution from the ceremony to branch out and perform their own phase 2 setup.<\/p>\n<p class=\"chakra-text css-gi02ar\">This ceremony supports circuits up to 2 ^ 28 constraints, which means that each contribution requires a 97G download, a 1-day computation, and a 49G upload. At the time of writing, we collected 29 contributions from 28 unique individuals, and all contribution files can be downloaded and independently verified against a <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/weijiekoh\/perpetualpowersoftau\">public ceremony transcript<\/a>.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"semaphore\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"semaphore permalink\" href=\"#semaphore\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Semaphore<\/h3>\n<p class=\"chakra-text css-gi02ar\">Semaphore is Applied ZKP\u2019s flagship project, initiated in mid-2019. It is a generic privacy gadget which enables use cases such as mixers, anonymous login, and anonymous voting. One use case of Semaphore, developed by Chih-Cheng Liang, is <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ChihChengLiang\/semaphore_auth\">Semaphore Authentication<\/a>, which enables anonymous logins with protection against Sybil attacks. We encourage readers to check out <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/medium.com\/coinmonks\/to-mixers-and-beyond-presenting-semaphore-a-privacy-gadget-built-on-ethereum-4c8b00857c9b\">this explanatory blog post<\/a> to understand what Semaphore is and how it works.<\/p>\n<h4 class=\"chakra-heading group css-qm6a1\" id=\"security-audit-and-code-release\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"security audit and code release permalink\" href=\"#security-audit-and-code-release\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Security audit and code release<\/h4>\n<p class=\"chakra-text css-gi02ar\">We engaged ABDK Consulting to perform a security audit of Semaphore\u2019s zk-SNARK circuit code and Solidity contracts. We fixed the issues they uncovered, and <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/medium.com\/@weijiek\/release-announcement-semaphore-a-zero-knowledge-gadget-for-ethereum-5b671cd360d4\">released the final source code<\/a>. We have included in the audit many components from the <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/iden3\/circomlib\/\">circom standard library<\/a>, thus providing a greater set of tools to be used by the wider community of SNARK developers that use circom.<\/p>\n<h4 class=\"chakra-heading group css-qm6a1\" id=\"phase-2-ceremony\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"phase 2 ceremony permalink\" href=\"#phase-2-ceremony\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Phase 2 ceremony<\/h4>\n<p class=\"chakra-text css-gi02ar\">At the time of writing, we are performing a circuit-specific multi-party trusted setup ceremony. The process we are following is <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/appliedzkp\/semaphore-phase2-setup\/\">documented here<\/a>. We collaborated with <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/www.supranational.net\/\">Supranational<\/a>, a member of the <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/www.vdfalliance.org\/\">VDF Alliance<\/a>, to run a verifiable delay function (VDF) on a <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/twitter.com\/weijie_eth\/status\/1241721809902243840\">pre-announced Ethereum block hash<\/a>, and applied the output of said VDF onto challenge file #25 from the Perpetual Powers of Tau ceremony (see below), and kicked off the circuit-specific ceremony on the 6th of April 2020.<\/p>\n<p class=\"chakra-text css-gi02ar\">Thanks to excellent work by <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"http:\/\/github.com\/briangu33\/\">Brian Gu<\/a>, we were able to repurpose <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/www.aztecprotocol.com\/\">Aztec Protocol<\/a>\u2019s Ignition ceremony software for our ceremony. Please check out more details about this ceremony by reading its <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"http:\/\/ceremony.semaphore.appliedzkp.org\/\">participant guide<\/a>.<\/p>\n<p class=\"chakra-text css-gi02ar\">Feel free to discuss in the Semaphore Society <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/t.me\/joinchat\/B-PQx1U3GtAh--Z4Fwo56A\">Telegram chat group<\/a>.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"semaphore-rln\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"semaphore rln permalink\" href=\"#semaphore-rln\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Semaphore RLN<\/h3>\n<p class=\"chakra-text css-gi02ar\"><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/ethresear.ch\/t\/semaphore-rln-rate-limiting-nullifier-for-spam-prevention-in-anonymous-p2p-setting\/5009\">Semaphore RLN<\/a> provides a way to perform rate-limiting in a P2P setting &#8211; instead of relying on an on-chain nullifier map to prevent double-signaling, we use Shamir Secret Sharing to expose shares of the broadcaster\u2019s private key. Multiple published shares from the same broadcaster can be used to reconstruct the private key, opening up the possibility for the original holder of the private key to be slashed.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"maci\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"maci permalink\" href=\"#maci\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>MACI<\/h3>\n<p class=\"chakra-text css-gi02ar\">Originally proposed by Vitalik Buterin in an <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/ethresear.ch\/t\/semaphore-rln-rate-limiting-nullifier-for-spam-prevention-in-anonymous-p2p-setting\/500\">ethresear.ch post<\/a>, systems built with MACI make collusion among participants difficult, while retaining the censorship resistance and correct-execution benefits of smart contracts. Although MACI can provide collusion resistance only if the coordinator is honest, a dishonest coordinator can neither censor nor tamper with its execution.<\/p>\n<p class=\"chakra-text css-gi02ar\">In late 2019, we started work on a <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/barryWhiteHat\/maci\/\">technical specification and implementation<\/a> and we are nearing completion of a minimal viable product.<\/p>\n<h4 class=\"chakra-heading group css-qm6a1\" id=\"future-work-adding-anonymization-to-maci\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"future work adding anonymization to maci permalink\" href=\"#future-work-adding-anonymization-to-maci\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Future work: adding anonymization to MACI<\/h4>\n<p class=\"chakra-text css-gi02ar\">MACI uses a coordinator for processing, where the coordinator uses SNARKs to prove integrity, such that a malicious coordinator can only hurt collusion-resistance properties. One downside of the current approach is that the coordinator is able to link each user\u2019s original key to their final key, as they see all the key changes.<br \/>\nWe seek to further improve privacy towards the coordinator by allowing anonymous key changes by users. Please read more on this <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/ethresear.ch\/t\/maci-anonymization-using-rerandomizable-encryption\/7054\">ethresear.ch post<\/a>.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"mimc-bounty\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"mimc bounty permalink\" href=\"#mimc-bounty\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>MiMC Bounty<\/h3>\n<p class=\"chakra-text css-gi02ar\">MiMC has become a popular cryptographic hash function in SNARKs due to its great performance. While it is the oldest of the bunch in the \u201chash functions with low multiplicative complexity\u201d family of functions, we felt it should receive more critical attention. We <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"http:\/\/mimchash.org\/\">initiated a bounty<\/a> for collision finding in MiMC, which we also plan to extend to Poseidon.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"optimistic-rollup-hub--zk-optimistic-rollups\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"optimistic rollup hub  zk optimistic rollups permalink\" href=\"#optimistic-rollup-hub--zk-optimistic-rollups\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Optimistic Rollup Hub + ZK Optimistic rollups<\/h3>\n<p class=\"chakra-text css-gi02ar\">Optimistic Rollup allows greater layer 2 scalability with the use of on-chain data availability and fraud proofs. The Hub chain further allows for easy mass migrations between different rollups. The hub allows for easy mass migrations.<\/p>\n<p class=\"chakra-text css-gi02ar\">ZK Optimistic Rollup builds upon the same idea but for anonymous transfers. Instead of having all the transaction metadata in the clear, each transaction in the rollup is a 2-to-2 anonymous transfer.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"peekabook\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"peekabook permalink\" href=\"#peekabook\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>PeekABook<\/h3>\n<p class=\"chakra-text css-gi02ar\"><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/ethresear.ch\/t\/peekabook-private-order-matching\/6987\">PeekABook<\/a> allows two users to privately match orders, such that no user can discover more information about an order made by another user unless they have an order that would fulfill it.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"experimental-directions\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"experimental directions permalink\" href=\"#experimental-directions\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Experimental directions<\/h3>\n<p class=\"chakra-text css-gi02ar\">Up until now we\u2019ve described projects that we\u2019ve released \u2014 either as mature code, specs or concrete plans. We are continuously investigating new experimental areas which we hope will mature to fully-fledged projects.<br \/>\nSome of these include:<\/p>\n<ul role=\"list\" class=\"css-1ars4k6\">\n<li class=\"css-0\">Verifying a STARK in SNARK &#8211; allowing for some form of layer 1 recursion<\/li>\n<li class=\"css-0\"><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/ethresear.ch\/t\/blind-find-private-social-network-search\">Blind Find<\/a> &#8211; an MPC-based construction proving a path exists between users in a p2p network, without revealing the path itself.<\/li>\n<li class=\"css-0\">Fractal on Ethereum<\/li>\n<li class=\"css-0\">RSA-based rollup<\/li>\n<\/ul>\n<p class=\"chakra-text css-gi02ar\">And more \ud83d\ude42<\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"ecosystem-support-program\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"ecosystem support program permalink\" href=\"#ecosystem-support-program\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Ecosystem Support Program<\/h2>\n<hr aria-orientation=\"horizontal\" class=\"chakra-divider css-1e6gg7n\"\/>\n<p class=\"chakra-text css-gi02ar\">On April 1 we posted the <a class=\"chakra-link css-vezwxf\" href=\"https:\/\/blog.ethereum.org\/2020\/04\/01\/ecosystem-support-program-allocation-update\">ESP Allocation Update<\/a>, where we shared some of the work we\u2019ve been doing to improve our processes as well as a list of the projects that received financial support in 2019. Watch the blog for more updates, and follow us on Twitter (@EF_ESP) to keep up with the latest on the projects we support!<\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"ewasm\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"ewasm permalink\" href=\"#ewasm\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Ewasm<\/h2>\n<hr aria-orientation=\"horizontal\" class=\"chakra-divider css-1e6gg7n\"\/>\n<p class=\"chakra-text css-gi02ar\"><em class=\"chakra-text css-0\">Authored by Alex Beregszaszi<\/em><\/p>\n<p class=\"chakra-text css-gi02ar\">Since the last update in December, the team has continued to work on Eth 2.0 Phase 2 and started to take a more active part in Eth 1x research as well.<\/p>\n<p class=\"chakra-text css-gi02ar\">Our intuition is that certain parts of research are needed by both and can be shared between the two efforts.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"eth-1x--stateless-ethereum\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"eth 1x  stateless ethereum permalink\" href=\"#eth-1x--stateless-ethereum\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Eth 1.x \/ Stateless Ethereum<\/h3>\n<p class=\"chakra-text css-gi02ar\">In a stateless model, it is not expected that everyone keeps a copy of the entire state of the blockchain. Instead, each block comes with a proof (the so-called witness) of the part of the state affected. The optimal creation, distribution and verification of witnesses becomes a crucial component of this new stateless system. The challenge of creation and verification is what interests our team most.<\/p>\n<p class=\"chakra-text css-gi02ar\">There exist various ideas for reducing block witness size, some of which Paul has collected in a <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/ethresear.ch\/t\/survey-of-proposals-to-reduce-block-witness-size\/7173\">survey<\/a>. Given our background in instruction sets, the first problem we had a look at is reducing code size. This is important, because code also needs to be included in the witness. Two approaches come to mind: compression and merklization. An early phase <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/medium.com\/ewasm\/evm-bytecode-merklization-2a8366ab0c90\">experiment<\/a> suggests we can cut down the amount of code transferred as part of the block witness by 40-60%.<\/p>\n<p class=\"chakra-text css-gi02ar\">We further plan to explore options to<\/p>\n<ol role=\"list\" class=\"css-vgl4zd\">\n<li class=\"css-0\">reduce the storage part of the witness,<\/li>\n<li class=\"css-0\">to accurately charge for the witness size (&#8220;witness metering&#8221;),<\/li>\n<li class=\"css-0\">and to partake in creating a witness specification.<\/li>\n<\/ol>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"eth-20\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"eth 20 permalink\" href=\"#eth-20\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Eth 2.0<\/h3>\n<p class=\"chakra-text css-gi02ar\">It must be noted, since the execution model of Eth 2.0 is also stateless, the work done as part of Eth 1x becomes applicable here too.<\/p>\n<h4 class=\"chakra-heading group css-qm6a1\" id=\"cross-shard-design\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"cross shard design permalink\" href=\"#cross-shard-design\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Cross-shard design<\/h4>\n<p class=\"chakra-text css-gi02ar\">Without the ability to efficiently transfer Ether (and potentially other tokens), payment for execution and transactions becomes a complicated matter. Last year a variety of models emerged, including receipts with accumulators, queues and balance maps. Casey <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/ethresear.ch\/t\/a-protocol-for-cross-shard-eth-transfers-even-more-simpler-and-transparent\/6996\">has proposed<\/a> an alternative called EthTransfer objects.<\/p>\n<p class=\"chakra-text css-gi02ar\">In addition to Ether transfer, contracts may want to be able to communicate with other contracts on different shards, and potentially perform atomic operations. All of this leads to a vast design space for Phase 2, which we&#8217;ve been exploring so far.<\/p>\n<p class=\"chakra-text css-gi02ar\">As an experiment, starting a few weeks ago, we have been working on <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/ethresear.ch\/t\/the-eth1x64-experiment\/7195\">Eth1x64<\/a>. This reduces the design space and should allow for quick iterations of different designs.<\/p>\n<p class=\"chakra-text css-gi02ar\">Under Eth1x64 each shard is homogenous and is running an instance of Eth 1.x, with shard 0 being the current Eth 1.0 mainnet. We are working on multiple small proposals, all of which focus on various ways to accomplish cross-shard communication.<\/p>\n<p class=\"chakra-text css-gi02ar\">This work will give an idea of the complexity of introducing sharding into Eth1, allowing us to gather wider feedback from Dapp developers, and we can take the results into refining the WebAssembly-based Phase 2 designs.<\/p>\n<h4 class=\"chakra-heading group css-qm6a1\" id=\"speed\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"speed permalink\" href=\"#speed\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Speed<\/h4>\n<p class=\"chakra-text css-gi02ar\">Zero-knowledge protocols are becoming increasingly important. It must be ensured they can be efficiently supported on Eth 2.0. An optimized implementation in AssemblyScript of the SNARK-friendly <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/jwasinger\/mimc-wasm\">MiMC hash function<\/a> and a zkSNARKs-based token example have been developed. This example works well as an Execution Environment. Benchmarks show that both can achieve comparable performance to compiler engines and EVM-based (precompile aided) implementations. See <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/ethresear.ch\/t\/zero-knowledge-tooling-for-an-eth-2-0-wasm-execution-layer\/7080\">Jared&#8217;s summary<\/a> for numbers.<\/p>\n<p class=\"chakra-text css-gi02ar\">This work also guided further reviews of the big integer API, which is an important element of a powerful and safe, WebAssembly-based execution.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"webassembly\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"webassembly permalink\" href=\"#webassembly\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>WebAssembly<\/h3>\n<p class=\"chakra-text css-gi02ar\">The last few months have been a fruitful time for WebAssembly with the release of the stable 1.0 version of the specification. A number of new promising interpreter projects have been announced and\/or released. We are keeping a close eye on these and intend to include them in our benchmarking report.<\/p>\n<p class=\"chakra-text css-gi02ar\">In January we began working on <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/wasmx\/fizzy\">Fizzy<\/a>, a new Webassembly engine. Features such as integer-only support (no floating point operations) and interpreter-only execution make it well-suited for blockchain use cases. In addition, a clean codebase written in modern C++17 and the goal of easy embeddability aim to make Fizzy a viable, modular component for Eth 2.0 client implementations. By the time of this update, Fizzy is able to pass almost all official test cases (with the exception of Wasm validation, which is not yet implemented) and compares very well on speed benchmarks.<\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"formal-verification\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"formal verification permalink\" href=\"#formal-verification\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Formal Verification<\/h2>\n<hr aria-orientation=\"horizontal\" class=\"chakra-divider css-1e6gg7n\"\/>\n<p class=\"chakra-text css-gi02ar\"><em class=\"chakra-text css-0\">Authored by Leo Alt and Martin Lundfall<\/em><\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"act\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"act permalink\" href=\"#act\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Act<\/h3>\n<p class=\"chakra-text css-gi02ar\"><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/act\">Act<\/a> is a simple and effective specification language to write formal specifications. It is being developed with input from several groups, and we hope that in the future it will be common to use Act to specify smart contracts.<\/p>\n<p class=\"chakra-text css-gi02ar\">By allowing properties to be expressed on different levels, the main goal for Act as a tool is to enable modular verification. The specification can be verified as a standalone document, where contract invariants can be checked from the specified function\u2019s pre\/post conditions, and the post conditions can be checked from a function\u2019s storage updates. Ideally this modular verification will make it much easier for other tools to verify that the source code\/bytecode are correct.<\/p>\n<p class=\"chakra-text css-gi02ar\">We are currently working on three proof backends for the intermediate proofs:<\/p>\n<ol role=\"list\" class=\"css-vgl4zd\">\n<li class=\"css-0\">Coq definitions<\/li>\n<li class=\"css-0\">K specs<\/li>\n<li class=\"css-0\">SMT theorems<\/li>\n<\/ol>\n<p class=\"chakra-text css-gi02ar\">Each one of the backends has its own pros and cons, and we hope to achieve good performance and coverage by developing all fronts at the same time.<\/p>\n<p class=\"chakra-text css-gi02ar\">We hope to release a prototype of each proof backend and study how to express loop invariants until June 2020.<\/p>\n<p class=\"chakra-text css-gi02ar\">We will soon release a detailed technical post about Act. Contributions to the <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/act\">repository<\/a> are always welcome!<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"smtchecker\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"smtchecker permalink\" href=\"#smtchecker\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>SMTChecker<\/h3>\n<p class=\"chakra-text css-gi02ar\">The SMTChecker is a model checking based static analysis module in the <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/solidity\">Solidity<\/a> compiler that tries to verify source code assertions in compile-time. Last year a <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/medium.com\/@leonardoalt\/smtchecker-toward-completeness-1a99c02e0133\">new engine based on Constrained Horn Clauses<\/a> was added. This engine&#8217;s main feature is that it can automatically find inductive invariants that are used to prove assertions, enabling support for loops and state properties.<\/p>\n<p class=\"chakra-text css-gi02ar\">We recently added internal function calls to the engine and keep improving support for the Solidity language. In the next 3 months we will keep working on increasing language support, counterexample generation\/presentation and external function calls, which will hopefully start to transition the SMTChecker from experimental into a useful and powerful tool.<\/p>\n<p class=\"chakra-text css-gi02ar\">In the future we also want to:<\/p>\n<ol role=\"list\" class=\"css-vgl4zd\">\n<li class=\"css-0\">Combine the SMTChecker and Act, and study amazing stuff like synthesis of missing code to match the specs \/ synthesis of adversarial code.<\/li>\n<li class=\"css-0\">Create a Remix plugin for the SMTChecker which would improve usability greatly.<\/li>\n<\/ol>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"verified-abi-encodingdecoding\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"verified abi encodingdecoding permalink\" href=\"#verified-abi-encodingdecoding\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Verified ABI encoding\/decoding<\/h3>\n<p class=\"chakra-text css-gi02ar\">We are collaborating with ConsenSys R&amp;D who are working on a verified ABI encoder\/decoder using <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/mmalvarez\/Yul-Isabelle\/\">Yul-Isabelle<\/a>. The idea and discussions started at Devcon V, and since then, good progress was made and we are close to a prototype.<\/p>\n<p class=\"chakra-text css-gi02ar\">Initially we intend to use it together with the <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/solidity\/tree\/develop\/test\/tools\/ossfuzz\">Solidity Fuzzer<\/a> to find bugs related to optimization and ABI encoding\/decoding. Our final and slightly ambitious dream is to use the verified ABI encoder\/decoder as part of the Solidity compilation process. This would imply that a substantial part of code generation is verified!<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"eth2\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"eth2 permalink\" href=\"#eth2\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Eth2<\/h3>\n<p class=\"chakra-text css-gi02ar\">We have continuously supported Runtime Verification in maintaining the KEVM formal semantics and verifying the deposit contract and beacon chain specs. The deposit contract is also one of our main benchmarks when developing Act. We would like to provide an alternate specification for the deposit contract and proof for the incremental Merkle tree properties via Act by July, when we also intend to study Eth2 Phase 1 and Phase 2 properties that must be proved.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"hevm\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"hevm permalink\" href=\"#hevm\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Hevm<\/h3>\n<p class=\"chakra-text css-gi02ar\"><a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/dapphub\/dapptools\">Hevm<\/a>, a haskell EVM evaluator and debugger can now be used for <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/dapphub\/dapptools\/pull\/313\">property-based testing<\/a>.<br \/>\nUsers of the <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/dapphub\/dapptools\/tree\/master\/src\/dapp\"><span class=\"chakra-text css-ons8vw\">dapp<\/span><\/a> development tool can now write Solidity tests whose arguments are randomly generated and that are run multiple times against a correctness criteria. This provides a way for smart contract developers to massively increase test coverage in a relatively straightforward manner.<\/p>\n<p class=\"chakra-text css-gi02ar\">Going forward we will be exploring extending hevm with symbolic execution capabilities. This would make it possible to use hevm to formally verify EVM bytecode.<\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"geth\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"geth permalink\" href=\"#geth\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Geth<\/h2>\n<hr aria-orientation=\"horizontal\" class=\"chakra-divider css-1e6gg7n\"\/>\n<p class=\"chakra-text css-gi02ar\"><em class=\"chakra-text css-0\">Authored by P\u00e9ter Szil\u00e1gyi<\/em><\/p>\n<p class=\"chakra-text css-gi02ar\">Over the past quarter the Geth team has been busy with network plumbing and laying the groundwork for future releases. This post will only enumerate a few of the major features; for a detailed bullet point view please consult our <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/go-ethereum\/releases\">release notes<\/a>.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"dns-discovery\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"dns discovery permalink\" href=\"#dns-discovery\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>DNS discovery<\/h3>\n<p class=\"chakra-text css-gi02ar\">A feature we&#8217;ve specced out about 2 years ago and shipped last quarter is <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/eips.ethereum.org\/EIPS\/eip-1459\">DNS-based peer discovery<\/a>. Going forward, Geth v1.9.11+ nodes have two independent mechanisms to find peers. The DNS lists serve as a fallback mechanism when peers cannot be found through the DHT. They might also end up being the starting point for a Tor integration.<\/p>\n<p class=\"chakra-text css-gi02ar\">DNS-based discovery is a centralized mechanism, but we have tried to make the operation of this mechanism as transparent and permissionless as possible. The public lists used by default are generated by crawling the discovery DHT. Nodes running any Ethereum client which implements <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/eips.ethereum.org\/EIPS\/eip-868\">EIP-868<\/a> and <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/eips.ethereum.org\/EIPS\/eip-2124\">EIP-2124<\/a> will appear in the public lists automatically. If you want to create a DNS-based node list for your private or public network, please check out our <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/geth.ethereum.org\/docs\/developers\/dns-discovery-setup\">DNS Discovery Setup guide<\/a>.<\/p>\n<p class=\"chakra-text css-gi02ar\">At this time, there are ~1150 publicly-routed Ethereum mainnet nodes in the default list; and our public lists also serve the Ropsten, Goerli and Rinkeby test networks. Currently the network generates 8 million DNS queries per day to this discovery mechanism.<\/p>\n<p class=\"chakra-text css-gi02ar\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/upload_c91594eb79e6dca4c4b5faa979b31317.png\" class=\"chakra-image css-hw6q2r\"\/><\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"transaction-propagation\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"transaction propagation permalink\" href=\"#transaction-propagation\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Transaction propagation<\/h3>\n<p class=\"chakra-text css-gi02ar\">For a couple years now, most of the network bandwidth used by Ethereum nodes was shuffling transactions around. Unfortunately, this mechanism was never optimized since its inception, so it was <em class=\"chakra-text css-0\">very<\/em> wasteful. Over the last quarter, we&#8217;ve spec\u2019d out an update to the <span class=\"chakra-text css-ons8vw\">eth<\/span> protocol (<a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/eips.ethereum.org\/EIPS\/eip-2464\">EIP 2464<\/a>) which enables transactions to be announced between nodes and only transferred upon request.<\/p>\n<p class=\"chakra-text css-gi02ar\">This new protocol was released in Geth v1.9.11, is already implemented by Nethermind and in progress for Open Ethereum too. Since only about 30% of the network supports it, the amount of bandwidth saved globally is still a question, but running an <span class=\"chakra-text css-ons8vw\">eth\/64<\/span> vs. <span class=\"chakra-text css-ons8vw\">eth\/65<\/span> bootnode experiment with 250 peers has promising results.<\/p>\n<p class=\"chakra-text css-gi02ar\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/blog.ethereum.org\/images\/posts\/upload_d3f7b2e6e8ea7fcbdbfc0b6f99b91b27.png\" class=\"chakra-image css-hw6q2r\"\/><\/p>\n<p class=\"chakra-text css-gi02ar\">Based on last week&#8217;s traffic, <span class=\"chakra-text css-ons8vw\">eth\/65<\/span> is capable of reducing transaction propagation bandwidth by about 75%. For a bootnode of ours with 250 full node peers, that&#8217;s 750KB\/s saved, or roughly 1.8TB of bandwidth per month. We are certain there is still room for improvement, but let&#8217;s take it one step at a time.<\/p>\n<p class=\"chakra-text css-gi02ar\">Apart from <span class=\"chakra-text css-ons8vw\">eth\/65<\/span>, Geth shipped support for larger than 32KB transactions back in January (courtesy of StarkWare), with a soft limit originally at 64KB and soon raised to 128KB (higher limits heavily rely on how <span class=\"chakra-text css-ons8vw\">eth\/65<\/span> performs globally).<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"dynamic-snapshots\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"dynamic snapshots permalink\" href=\"#dynamic-snapshots\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Dynamic snapshots<\/h3>\n<p class=\"chakra-text css-gi02ar\">A large bottleneck in running the EVM and doing an initial sync revolve around the state representation in Ethereum: the Merkle Patricia trie. Since all the state data is laid out in a tree format, accessing any account takes about 6-8 random disk lookups currently on mainnet. During fast sync, the same random intermediate trie nodes need to be downloaded one by one to get to the actual data.<\/p>\n<p class=\"chakra-text css-gi02ar\">A feature we&#8217;ve been working on actively for half a year now is dynamic state snapshots: in short, creating a flat acceleration structure on disk which allows any account or storage slot to be loaded with 1 disk lookup. This is similar to Open Ethereum&#8217;s <span class=\"chakra-text css-ons8vw\">fatdb<\/span> layout, except this one is dynamic: the snapshot mechanism in Geth is capable of keeping the acceleration structure updated live as the chain progresses (including the mini forks).<\/p>\n<p class=\"chakra-text css-gi02ar\">One benefit of the dynamic snapshots are O(1) EVM state reads. Although this might sound like a holy grail, it is not. Most contract executions don&#8217;t go crazy with disk reads, so the benefit is limited, and most contracts also do lots of writes, which still need to be pushed into the Merkle trie. The dynamic snapshots, however, do allow <span class=\"chakra-text css-ons8vw\">eth_call<\/span> operations to be blazing fast and they do make DoS transactions significantly harder to pull off.<\/p>\n<p class=\"chakra-text css-gi02ar\">A <em class=\"chakra-text css-0\">much<\/em> more interesting feature enabled by the dynamic snapshots is a new synchronization protocol, which we&#8217;ve been trying to pin down for 2 years now (originally called <span class=\"chakra-text css-ons8vw\">leaf sync<\/span>). The protocol is still a <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/devp2p\/blob\/8a2fe72b8ed134e1e0ee7c055177f9286619c800\/caps\/snap.md\">work in progress<\/a>, but if our hunches are correct, it should allow syncing the Ethereum state significantly faster.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"discovery-v5\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"discovery v5 permalink\" href=\"#discovery-v5\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Discovery v5<\/h3>\n<p class=\"chakra-text css-gi02ar\">The initial version of the <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/devp2p\/blob\/master\/discv5\/discv5.md\">next-gen discovery protocol<\/a> was implemented in Geth, albeit it is not yet enabled. Whilst the spec and implementation is still fluid, syncing with the Eth 2.0 requirements, it <em class=\"chakra-text css-0\">is<\/em> a huge milestone to have a working version in the live codebase.<\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"javascript-team\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"javascript team permalink\" href=\"#javascript-team\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Javascript Team<\/h2>\n<hr aria-orientation=\"horizontal\" class=\"chakra-divider css-1e6gg7n\"\/>\n<p class=\"chakra-text css-gi02ar\"><em class=\"chakra-text css-0\">Authored by: Holger Drewes, Philipp Langhans<\/em><\/p>\n<p class=\"chakra-text css-gi02ar\">Last quarter was exciting for the team. For the first time we came together in person early March during EthCC in Paris, deepened relationships and discussed team cooperation, possible collaborations and future plans. Expect to hear more on that once things start to bear fruits.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"ethersjs\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"ethersjs permalink\" href=\"#ethersjs\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Ethers.js<\/h3>\n<p class=\"chakra-text css-gi02ar\">Ethers <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethers-io\/ethers.js\/tree\/ethers-v5-beta\">v5<\/a> is going through the last <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethers-io\/ethers.js\/releases\">beta releases<\/a> before final launch. A lot of fixes and usability improvements (like more-fitting names for API calls) discussed with the community have been applied preparing for a stable and robust final release. Noteworthy new features added lately are the new <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethers-io\/ethers.js\/issues\/141\">WebSocketProvider<\/a> and experimental <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/eips.ethereum.org\/EIPS\/eip-1193\">EIP-1193<\/a> (Ethereum Provider JavaScript API) support.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"web3js\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"web3js permalink\" href=\"#web3js\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Web3.js<\/h3>\n<p class=\"chakra-text css-gi02ar\">After being the main maintainer for the Web3.js library for more than a year, Samuel has decided that it is now time to go on with <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/twitter.com\/furter_samuel\/status\/1226791764046098435\">new adventures<\/a> (thank you Samuel for all your great work! \u2665\ufe0f). We enjoyed a last being-together in the days around EthCC. Library development will now be taken over by other team members on a shared basis.<\/p>\n<p class=\"chakra-text css-gi02ar\">For the moment we have a strong focus on ensuring a steady release process and we are working on familiarizing ourselves with the tech stack and procedures since Samuel was the No. 1 expert here. Please bear with us that we are therefore very selective on adding new features in the near term. For the moment &#8211; and for the same reasoning &#8211; we also won&#8217;t do development on the <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/web3.js\/tree\/2.x\">2.x branch<\/a> (currently released as an <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/web3.js\/releases\/tag\/v2.0.0-alpha.1\">alpha version<\/a> of the library.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"ethereumjs\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"ethereumjs permalink\" href=\"#ethereumjs\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>EthereumJS<\/h3>\n<p class=\"chakra-text css-gi02ar\">We moved the EthereumJS VM to a <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereumjs\/ethereumjs-vm\">monorepo<\/a>, combining structurally related libraries (tx, block, blockchain, HF configuration (common)) under one roof. This will significantly ease VM development in the future and allow for integrated PRs. There is a <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereumjs\/ethereumjs-vm\/issues\/681\">v5 release<\/a> of the VM based upon this new structural basis planned to be released soon which will introduce several breaking changes. Feel free to drop in and join (and shape) the discussion.<\/p>\n<p class=\"chakra-text css-gi02ar\">Thanks to the great work of <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/dryajov\">dryajov<\/a> we now also have a working <span class=\"chakra-text css-ons8vw\">TypeScript<\/span> implementation of the <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereumjs\/ethereumjs-devp2p\">devp2p<\/a> stack. A release on this is imminent.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"grid\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"grid permalink\" href=\"#grid\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Grid<\/h3>\n<p class=\"chakra-text css-gi02ar\">Ethereum Grid was split into two parts: the desktop application and a core module that can provide binary management outside of the Electron context e.g. on CLI or in other tools like test runners or IDE&#8217;s (Remix, VSCode). The goal of the core is to provide an engine that itself is very small but can be extended via plugins. The necessary mechanisms that allow a secure and stable extension without having to modify Grid in the future have been implemented. This was the main goal of the refactoring and a transition towards a finalized product.<\/p>\n<p class=\"chakra-text css-gi02ar\">Grid can be extended with small scripts, called workflows, that interact with binaries. A variety of them have been created and demoed at EthCC: <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/PhilippLgh\/Grid-Workflows\">Grid Workflows<\/a><\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"python-ecosystem-pyevm--trinity--web3py--vyper\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"python ecosystem pyevm  trinity  web3py  vyper permalink\" href=\"#python-ecosystem-pyevm--trinity--web3py--vyper\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Python Ecosystem [PyEVM \/ Trinity \/ Web3.py \/ Vyper]<\/h2>\n<hr aria-orientation=\"horizontal\" class=\"chakra-divider css-1e6gg7n\"\/>\n<p class=\"chakra-text css-gi02ar\"><em class=\"chakra-text css-0\">Authored by Piper Merriam<\/em><\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"web3py\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"web3py permalink\" href=\"#web3py\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Web3.py<\/h3>\n<p class=\"chakra-text css-gi02ar\">The Web3.py library has continued work on incremental improvements and stability. Thanks to some third party contributions, we expect to have preliminary support for mnemonic phrase and HD accounts released in the near term future. We also continue to work towards full async support, though there is still a decent bit of foundational work to be done on this front.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"trinity\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"trinity permalink\" href=\"#trinity\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Trinity<\/h3>\n<p class=\"chakra-text css-gi02ar\">The Trinity client continues work across both the 1.x and 2.0 fronts. Work continues on the Trinity Eth2 client as we get closer to having stable, longer lived public testnets. On the Eth1.x side we continue to work towards a functional mainnet client. One of the biggest things to come out of our work over the last two years is the \u201cStateless Ethereum\u201d effort which is shaping up to transform the Ethereum mainnet over the next 18-24 months.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"ethpm\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"ethpm permalink\" href=\"#ethpm\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>EthPM<\/h3>\n<p class=\"chakra-text css-gi02ar\">The EthPM team is working with the Solidity team to incorporate the packaging standard such that the compiler is able to compile the resources in a package, produce packages of the compiled resources, and use the EthPM spec for metadata\/contract source verification.<\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"remix\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"remix permalink\" href=\"#remix\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Remix<\/h2>\n<p class=\"chakra-text css-gi02ar\">Feel free to check out <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/medium.com\/remix-ide\">our medium posts<\/a> for more detailed content.<br \/>\nOur <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/remix-project.org\">public website<\/a> has just been released \ud83d\ude09<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"remix-ide---live--desktop-app\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"remix ide   live  desktop app permalink\" href=\"#remix-ide---live--desktop-app\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Remix IDE &#8211; Live &amp;&amp; Desktop app<\/h3>\n<ul role=\"list\" class=\"css-1ars4k6\">\n<li class=\"css-0\">Full support for Solidity 0.6.0 breaking changes and features has been added to the Solidity Plugin.<\/li>\n<li class=\"css-0\">Low level interaction are now possible (Solidity receive and fallback)<\/li>\n<li class=\"css-0\"><span class=\"chakra-text css-ons8vw\">Light<\/span> and <span class=\"chakra-text css-ons8vw\">Dark<\/span> themes have been added. We redesigned UI&#8217;s of the Solidity Plugin and Deploy&amp;Run Plugin.<\/li>\n<li class=\"css-0\">The latest <span class=\"chakra-text css-ons8vw\">Remix Plugin Engine(v0.2.0)<\/span> has been successfully integrated into Remix IDE, as well as remix-simulator (Ethereum dev node in the browser).<\/li>\n<li class=\"css-0\">From now on, <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/remix-desktop\/releases\">the desktop version<\/a> is following Remix live releases.<\/li>\n<\/ul>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"remix-plugin\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"remix plugin permalink\" href=\"#remix-plugin\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Remix plugin<\/h3>\n<ul role=\"list\" class=\"css-1ars4k6\">\n<li class=\"css-0\">The latest version comes with the ability to have websocket plugins and we will add more types (Secure Ecmascript, IPC) soon.<\/li>\n<li class=\"css-0\">Integration with VScode is currently in the process and hopefully available soon.<\/li>\n<li class=\"css-0\">Here\u2019s <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/remix-plugin\">the documentation<\/a> for developing plugins.<\/li>\n<\/ul>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"external-plugins\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"external plugins permalink\" href=\"#external-plugins\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>External Plugins<\/h3>\n<ul role=\"list\" class=\"css-1ars4k6\">\n<li class=\"css-0\">We support external teams to build their plugins and add them to Remix IDE.<\/li>\n<li class=\"css-0\">We have a Gitter channel dedicated to Remix plugins. You can propose a plugin to the community by creating a PR in the <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/remix-plugins-directory\">remix-plugins-directory repository<\/a><\/li>\n<li class=\"css-0\">If you require financial help to build your plugin, we can probably do something!<br \/>\nHere\u2019s what you need to do: &#8211; Please create a Github issue (in the repository where your plugin is located) for describing what you intend to do. &#8211; Send us a mail &#8211; <a class=\"chakra-link css-vezwxf\" href=\"https:\/\/blog.ethereum.org\/en\/2020\/04\/14\/mailto:remix@ethereum.org\">remix@ethereum.org<\/a> &#8211; containing a document describing the project, a link to the Github issue and an invoice proposal. &#8211; We&#8217;ll do our best to contact you and plan for next steps.<\/li>\n<\/ul>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"remix-simulator\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"remix simulator permalink\" href=\"#remix-simulator\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Remix Simulator<\/h3>\n<ul role=\"list\" class=\"css-1ars4k6\">\n<li class=\"css-0\">Integration with Remix IDE is mostly completed.<\/li>\n<\/ul>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"remix-static-analyzer\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"remix static analyzer permalink\" href=\"#remix-static-analyzer\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Remix static analyzer<\/h3>\n<ul role=\"list\" class=\"css-1ars4k6\">\n<li class=\"css-0\">Remix Analyzer moved to typescript and now uses the latest AST (Abstract syntax tree).<\/li>\n<\/ul>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"remix-tests\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"remix tests permalink\" href=\"#remix-tests\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Remix tests<\/h3>\n<ul role=\"list\" class=\"css-1ars4k6\">\n<li class=\"css-0\">We published new features recently and reached out to the Remix community for feedback, and received a good outcome. Here are the medium posts: <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/medium.com\/remix-ide\/solidity-unit-testing-using-remix-tests-part-1-bc10ab1be864\">part 1<\/a> &#8211; <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/medium.com\/remix-ide\/solidity-unit-testing-using-remix-tests-part-2-50a9f486ab5d\">part 2<\/a>.<\/li>\n<\/ul>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"blog-posts--reachout-communities\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"blog posts  reachout communities permalink\" href=\"#blog-posts--reachout-communities\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Blog posts &amp; reachout communities<\/h3>\n<p class=\"chakra-text css-gi02ar\">We&#8217;ve started to push <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/medium.com\/remix-ide\">some new content<\/a>, which will be our focus during the coming months.<br \/>\nWe are also putting efforts in workshop content, realizing and promoting it.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"e2e-testing\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"e2e testing permalink\" href=\"#e2e-testing\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>E2E Testing<\/h3>\n<p class=\"chakra-text css-gi02ar\">David aka @ioedeveloper joined the team recently and is working on E2E testing and the Remix IDE, aiming to consolidate our release process.<\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"research-eth1x-stateless-ethereum\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"research eth1x stateless ethereum permalink\" href=\"#research-eth1x-stateless-ethereum\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Research [Eth1.X (Stateless Ethereum)]<\/h2>\n<hr aria-orientation=\"horizontal\" class=\"chakra-divider css-1e6gg7n\"\/>\n<p class=\"chakra-text css-gi02ar\"><em class=\"chakra-text css-0\">Authored by Griffin Hotchkiss<\/em><\/p>\n<p class=\"chakra-text css-gi02ar\">The set of upgrades to the existing Ethereum protocol dubbed \u201cEth1.X\u201d have coalesced into a more unified effort by researchers to implement and transition to \u201cStateless Ethereum\u201d. The upgrades and topics of inquiry are not just relevant to improving scalability and resilience of the current chain, but are also relevant and in many ways complementary to engineering and design challenges being tackled by Eth2 research teams.<\/p>\n<p class=\"chakra-text css-gi02ar\">Following EthCC in Paris, there was a Stateless Ethereum research Summit, regarded by attendees as seminal and wildly successful by all accounts.<\/p>\n<p class=\"chakra-text css-gi02ar\">Updates about the Stateless Ethereum initiative have been chronicled by Griffin Ichiba Hotchkiss in an ongoing series called \u201cThe 1.X Files\u201d, which in addition to summarizing and digesting monthly calls, dives deep into the core concepts being researched and the road ahead.<\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"research-serenity--eth2\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"research serenity  eth2 permalink\" href=\"#research-serenity--eth2\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Research [Serenity \/ Eth2]<\/h2>\n<hr aria-orientation=\"horizontal\" class=\"chakra-divider css-1e6gg7n\"\/>\n<p class=\"chakra-text css-gi02ar\"><em class=\"chakra-text css-0\">Authored by EF Team<\/em><\/p>\n<p class=\"chakra-text css-gi02ar\">Danny Ryan, Carl Beekhuizen and the Eth2 research team have continued regular series like \u2018Eth2 Quick Update\u2019 and \u2018Validated: Staking on Eth2\u2019 here on the EF Blog. For the latest news and progress as we draw nearer to the launch of Phase 0, check out the latest posts below!<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"eth2-quick-update\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"eth2 quick update permalink\" href=\"#eth2-quick-update\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Eth2 quick update<\/h3>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"validated-staking-on-eth2\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"validated staking on eth2 permalink\" href=\"#validated-staking-on-eth2\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Validated, staking on eth2<\/h3>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"security-security--consensus-tests\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"security security  consensus tests permalink\" href=\"#security-security--consensus-tests\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Security [Security \/ Consensus Tests]<\/h2>\n<hr aria-orientation=\"horizontal\" class=\"chakra-divider css-1e6gg7n\"\/>\n<p class=\"chakra-text css-gi02ar\"><em class=\"chakra-text css-0\">Authored by Martin Holst Swende<\/em><\/p>\n<p class=\"chakra-text css-gi02ar\">The health of the Ethereum Mainnet is the top priority, and we have investigated and published an EIP proposing <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/EIPs\/pull\/2583\">penalties<\/a> for state trie misses.<\/p>\n<p class=\"chakra-text css-gi02ar\">Towards the end of 2019, we paid out several bounties. ChainSecurity earned another 8500 points, for three separate reports: 1000 points for a slow execution on Geth, due to an unnecessary copying of data when CALL variants were made with large calldata; 5000 points out of the \u2018pot\u2019 of money allocated towards EIP reviews, with their help in assessing the security of EIP-1884 (which also earned Neville Gretch (contract-library.com) 5000 points).;and submitted a DoS vector for Geth\/Parity, together with Daniel Perez (split 50\/50), which earned them 2500 points each.<br \/>\nIn early 2020, the prolific bughunter Sam Sun was awarded another 10K bounty points for the <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/medium.com\/the-ethereum-name-service\/ens-registry-migration-bug-fix-new-features-64379193a5a\">ENS<\/a> vulnerability which necessitated migrating all records to a new registrar.<\/p>\n<p class=\"chakra-text css-gi02ar\">The <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/holiman\/goevmlab\">Go-Evmlab<\/a> repository has been updated to better integrate with Geth and help out during analysis of chain operations, as well as creating custom evm-fuzzers.<\/p>\n<p class=\"chakra-text css-gi02ar\">We have also had two external audits done on the upcoming <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/devp2p\/blob\/master\/discv5\/discv5.md\">Discovery version 5<\/a> protocol. One was performed by Least Authority, and another by Cure53. They are both accessible <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/go-ethereum\/tree\/master\/docs\/audits\">here<\/a>. The protocol is implemented (but not activated) in Geth already &#8212; see below.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"consensus-tests\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"consensus tests permalink\" href=\"#consensus-tests\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Consensus tests:<\/h3>\n<p class=\"chakra-text css-gi02ar\">Blockchain test generation code was reworked and migrated to retesteth.<br \/>\nVMTests are now generated in Blockchain test format.<br \/>\nStats web server set up at <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"http:\/\/retesteth.ethdevops.io\/\">http:\/\/retesteth.ethdevops.io\/<\/a><\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"solidity\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"solidity permalink\" href=\"#solidity\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Solidity<\/h2>\n<hr aria-orientation=\"horizontal\" class=\"chakra-divider css-1e6gg7n\"\/>\n<p class=\"chakra-text css-gi02ar\"><em class=\"chakra-text css-0\">Authored by Franziska Heintel, Daniel Kirchner and Christian Reitwiessner<\/em><\/p>\n<p class=\"chakra-text css-gi02ar\">Since the last update, the Solidity team has released version 0.6.0. Apart from the abundance of features already announced in our previous post, this also includes \u201ctry\/catch\u201d as high-level syntax to handle failure conditions for external calls. In the meantime, the 0.6 series has stabilized in multiple minor releases and early planning for the next major release 0.7 has started (a future blog post will announce the features to be expected).<\/p>\n<p class=\"chakra-text css-gi02ar\">A notable new language feature within the 0.6 series is support for immutable variables. Starting from version 0.6.5 of Solidity state variables can be declared \u201cimmutable\u201d. Immutable variables can be assigned once during contract creation and be cheaply read from runtime code. The constructor code will directly insert the values specified for the immutables during construction into the runtime code, so that the runtime cost of an access is merely that of a single PUSH.<\/p>\n<p class=\"chakra-text css-gi02ar\">Other language features that recently emerged are interface inheritance (which will be supplemented by ERC165 interface IDs in the near future), optional reason strings for internal reverts and the ability to assign storage pointers via inline assembly. The latter enables constructs useful for writing updateable contracts.<br \/>\nFurthermore we introduced syntax for CREATE2 via <span class=\"chakra-text css-ons8vw\">new C{salt: <salt>}()<\/salt><\/span> and are simultaneously migrating the syntax for setting gas and value for regular function calls to an analogous syntax: <span class=\"chakra-text css-ons8vw\">c.f{value: 10 ether}()<\/span>.<\/p>\n<p class=\"chakra-text css-gi02ar\">The main focus of the Solidity team is on extending the new code generation via Yul as intermediate representation. A variety of language constructs is now supported: recent notable additions include external function calls, try\/catch, increased array support, tuples and more.<br \/>\nOn the backend side the translation of Yul code to Ewasm is now complete pending some tweaks with regards to types, meaning that finalizing code generation via Yul IR will yield a Solidity to Ewasm compiler.<\/p>\n<p class=\"chakra-text css-gi02ar\">The Yul optimizer continues to be improved; most notably we are introducing the Yul Phaser. The phaser is a tool that employs a genetic algorithm to find the best sequence of optimizer steps &#8211; in the future it could also be possible to use it on individual contracts if you want to spend more time compiling and get a cheaper contract.<\/p>\n<p class=\"chakra-text css-gi02ar\">Further improvements:<br \/>\nsolc-js is now built to WebAssembly instead of asm.js, which should make compilation much faster and increase browser compatibility.<br \/>\nThe JSON AST export is now complemented by an AST import that can be used e.g. for mutation testing and other experiments.<br \/>\nThere is continued effort towards source verification (at <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/github.com\/ethereum\/source-verify\">https:\/\/github.com\/ethereum\/source-verify<\/a>), the effort to build a collection of authenticated ABI and source codes of deployed smart contracts through the metadata hashes in the bytecode and to provide a trustless way to retrieve authoritative ABI information from ipfs or other sources.<br \/>\nThe Solidity grammar is now defined via antlr and the antlr-based grammar will be kept up-to-date by the team.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"smt-checker\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"smt checker permalink\" href=\"#smt-checker\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>SMT Checker<\/h3>\n<p class=\"chakra-text css-gi02ar\">The SMTChecker module continues to increase its support to Solidity, as well as improving its verification techniques. The new CHC engine now also supports internal function calls and multi-transaction counterexamples (unreleased), showing exactly how each transaction must be called in order to break an assertion. We are currently working on support to external functions and as usual, supporting more features of the Solidity language.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"solidity-summit\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"solidity summit permalink\" href=\"#solidity-summit\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Solidity Summit!<\/h3>\n<p class=\"chakra-text css-gi02ar\">Finally, we are looking forward to the Solidity Summit, which will take place online on April 29-30. The Solidity Summit is an interactive forum with discussions and short talks about Solidity, Yul, language design and tooling. We aim to have useful discussions that result in improvement proposals and pave the way for actual implementations. Furthermore, we want to foster communication between teams working on similar topics and identify needs for the smart contract ecosystem for Ethereum. For information about registration, agenda and the livestream please visit the <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/solidity-summit.ethereum.org\/\">Solidity Summit website<\/a>.<\/p>\n<h3 class=\"chakra-heading group css-xuzltg\" id=\"follow-us-online\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"follow us online permalink\" href=\"#follow-us-online\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>Follow us online<\/h3>\n<p class=\"chakra-text css-gi02ar\">For regular updates, you can follow the Solidity team <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/twitter.com\/solidity_lang\">on Twitter<\/a> or check out more Solidity-related content like feature deep dives, release announcements and bug reports on the recently launched <a target=\"_blank\" rel=\"noopener\" class=\"chakra-link css-vezwxf\" href=\"https:\/\/solidity.ethereum.org\/\">Solidity blog<\/a>!<\/p>\n<h2 class=\"chakra-heading group css-1kpzc4q\" id=\"zokrates\" data-group=\"true\"><a class=\"chakra-link css-128fqrf\" aria-label=\"zokrates permalink\" href=\"#zokrates\"><svg viewbox=\"0 0 24 24\" focusable=\"false\" class=\"chakra-icon css-173jpr1\"><g fill=\"currentColor\"><path d=\"M10.458,18.374,7.721,21.11a2.853,2.853,0,0,1-3.942,0l-.892-.891a2.787,2.787,0,0,1,0-3.941l5.8-5.8a2.789,2.789,0,0,1,3.942,0l.893.892A1,1,0,0,0,14.94,9.952l-.893-.892a4.791,4.791,0,0,0-6.771,0l-5.8,5.8a4.787,4.787,0,0,0,0,6.77l.892.891a4.785,4.785,0,0,0,6.771,0l2.736-2.735a1,1,0,1,0-1.414-1.415Z\"\/><path d=\"M22.526,2.363l-.892-.892a4.8,4.8,0,0,0-6.77,0l-2.905,2.9a1,1,0,0,0,1.414,1.414l2.9-2.9a2.79,2.79,0,0,1,3.941,0l.893.893a2.786,2.786,0,0,1,0,3.942l-5.8,5.8a2.769,2.769,0,0,1-1.971.817h0a2.766,2.766,0,0,1-1.969-.816,1,1,0,1,0-1.415,1.412,4.751,4.751,0,0,0,3.384,1.4h0a4.752,4.752,0,0,0,3.385-1.4l5.8-5.8a4.786,4.786,0,0,0,0-6.771Z\"\/><\/g><\/svg><\/a>ZoKrates<\/h2>\n<hr aria-orientation=\"horizontal\" class=\"chakra-divider css-1e6gg7n\"\/>\n<p class=\"chakra-text css-gi02ar\"><em class=\"chakra-text css-0\">Authored by Jacob Eberhardt<\/em><\/p>\n<p class=\"chakra-text css-gi02ar\">Since the last update, the ZoKrates team designed and released the first version of zokrates.js, a library to compile, execute and prove ZoKrates programs from JavaScript. It uses WASM under the hood and is already being used to power our Remix plugin!<\/p>\n<p class=\"chakra-text css-gi02ar\">As part of this effort \u2013 and to better support programmatic interaction with ZoKrates \u2013 a new version of the ZoKrates ABI was developed. It is now capable of exposing complex data types in the same style Solidity does through ABI specifications.<\/p>\n<p class=\"chakra-text css-gi02ar\">To increase efficiency, we added further optimization techniques to the ZoKrates compiler: memoization of function calls, detection of unconstrained variables, and more. These optimizations are under review and subject to testing and we hope to bring them to you in the next release.<\/p>\n<p class=\"chakra-text css-gi02ar\">Native verification \u2013 a feature commonly requested by our users \u2013 is implemented as a prototype and currently undergoing testing.<\/p>\n<p class=\"chakra-text css-gi02ar\">Finally, the introduction of unsigned integers in ZoKrates which benefit from automatic optimizations is progressing. This is particularly useful when using widespread hash functions such as SHA256 and implementing algorithms that inherently use binary representations.<\/p>\n<p class=\"chakra-text css-gi02ar\">&#8212;<\/p>\n<p class=\"chakra-text css-gi02ar\">\ud83e\udd84<\/p>\n<\/div>\n<p><script async src=\"\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><br \/>\n<br \/><br \/>\n<br \/><a href=\"https:\/\/blog.ethereum.org\/en\/2020\/04\/14\/ef-supported-teams-research-and-development-update-2020-pt-1\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Friends, From our team to you and yours, we hope everyone and their families are well and keeping safe during these complicated weeks. To help pass some time while we\u2019re all stuck in doors, it\u2019s time again to update the community on progress made by some of the EF-supported projects not covered in last week\u2019s [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":18329,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"tdm_status":"","tdm_grid_status":"","footnotes":""},"categories":[24],"tags":[],"kronos_expire_date":[],"class_list":["post-18328","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ethereum"],"_links":{"self":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/posts\/18328","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/comments?post=18328"}],"version-history":[{"count":0,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/posts\/18328\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/media\/18329"}],"wp:attachment":[{"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/media?parent=18328"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/categories?post=18328"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/tags?post=18328"},{"taxonomy":"kronos_expire_date","embeddable":true,"href":"https:\/\/cryptoted.net\/index.php\/wp-json\/wp\/v2\/kronos_expire_date?post=18328"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}