diff --git a/.gitignore b/.gitignore index 54b5cf90..4ae65089 100644 --- a/.gitignore +++ b/.gitignore @@ -5,10 +5,14 @@ node_modules .env # rss feeds -# feed.xml +feed.xml # Sitemaps -# sitemap*.xml +sitemap*.xml # Robots.txt -# robots.txt +robots.txt + +# Build folders +build +docs \ No newline at end of file diff --git a/docs/.nojekyll b/docs/.nojekyll deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index 199b5711..00000000 --- a/docs/404.html +++ /dev/null @@ -1 +0,0 @@ -404 | Solidity Programming Language
{ skip to content }

{404}

Page not found
[Return home]

Get involved

GitHub

Twitter

Mastodon

Matrix

Gitter

Discover more

BlogDocumentationUse casesContributeAboutForum

2023 Solidity Team • Code of Conduct

\ No newline at end of file diff --git a/docs/Announcements/feed.xml b/docs/Announcements/feed.xml deleted file mode 100644 index cdf45a18..00000000 --- a/docs/Announcements/feed.xml +++ /dev/null @@ -1,193 +0,0 @@ - - - - Solidity Lang Blog - https://soliditylang.org - - Tue, 11 Jul 2023 20:10:26 GMT - https://validator.w3.org/feed/docs/rss2.html - https://github.com/jpmonette/feed - - Solidity Lang Blog - https://soliditylang.org/assets/solidity-logo.svg - https://soliditylang.org - - All rights reserved 2023 - - <![CDATA[Solidity Developer Survey 2022 Results]]> - https://soliditylang.org//blog/2023/03/10/solidity-developer-survey-2022-results - https://soliditylang.org//blog/2023/03/10/solidity-developer-survey-2022-results - Fri, 10 Mar 2023 00:00:00 GMT - - Announcements - - - <![CDATA[Solidity Developer Survey 2022 is Live!]]> - https://soliditylang.org//blog/2022/12/07/solidity-developer-survey-2022-announcement - https://soliditylang.org//blog/2022/12/07/solidity-developer-survey-2022-announcement - Wed, 07 Dec 2022 00:00:00 GMT - - Announcements - - - <![CDATA[Solidity Core Team Updates]]> - https://soliditylang.org//blog/2022/12/05/solidity-core-team-updates - https://soliditylang.org//blog/2022/12/05/solidity-core-team-updates - Mon, 05 Dec 2022 00:00:00 GMT - - Announcements - - - <![CDATA[Solidity Summit 2022 Recap]]> - https://soliditylang.org//blog/2022/05/03/solidity-summit-2022-recap - https://soliditylang.org//blog/2022/05/03/solidity-summit-2022-recap - Tue, 03 May 2022 00:00:00 GMT - - Announcements - - - <![CDATA[Announcing the Winners of the Underhanded Solidity Contest 2022]]> - https://soliditylang.org//blog/2022/04/08/announcing-the-underhanded-contest-winners-2022 - https://soliditylang.org//blog/2022/04/08/announcing-the-underhanded-contest-winners-2022 - Sat, 09 Apr 2022 00:00:00 GMT - - Announcements - - - <![CDATA[Solidity Summit 2022 Goes Amsterdam]]> - https://soliditylang.org//blog/2022/02/22/solidity-summit-2022-announcement - https://soliditylang.org//blog/2022/02/22/solidity-summit-2022-announcement - Tue, 22 Feb 2022 00:00:00 GMT - - Announcements - - - <![CDATA[Underhanded Solidity Contest 2022]]> - https://soliditylang.org//blog/2022/02/09/underhanded-solidity-contest-2022-announcement - https://soliditylang.org//blog/2022/02/09/underhanded-solidity-contest-2022-announcement - Wed, 09 Feb 2022 00:00:00 GMT - - Announcements - - - <![CDATA[Solidity Developer Survey 2021 Results]]> - https://soliditylang.org//blog/2022/02/07/solidity-developer-survey-2021-results - https://soliditylang.org//blog/2022/02/07/solidity-developer-survey-2021-results - Mon, 07 Feb 2022 00:00:00 GMT - - Announcements - - - <![CDATA[Solidity Developer Survey 2021 is Live!]]> - https://soliditylang.org//blog/2021/11/18/solidity-developer-survey-2021 - https://soliditylang.org//blog/2021/11/18/solidity-developer-survey-2021 - Thu, 18 Nov 2021 00:00:00 GMT - - Announcements - - - <![CDATA[Announcing Solidity Version Collectibles & Community Governance 💎]]> - https://soliditylang.org//blog/2021/04/01/announcing-solidity-collectibles - https://soliditylang.org//blog/2021/04/01/announcing-solidity-collectibles - Thu, 01 Apr 2021 00:00:00 GMT - - Announcements - - - <![CDATA[Launching the Solidity Forum 🗃️]]> - https://soliditylang.org//blog/2021/02/01/launching-the-solidity-forum - https://soliditylang.org//blog/2021/02/01/launching-the-solidity-forum - Mon, 01 Feb 2021 00:00:00 GMT - - Announcements - - - <![CDATA[Solidity Developer Survey 2020 Results]]> - https://soliditylang.org//blog/2021/01/26/solidity-developer-survey-2020-results - https://soliditylang.org//blog/2021/01/26/solidity-developer-survey-2020-results - Tue, 26 Jan 2021 00:00:00 GMT - - Announcements - - - <![CDATA[Launching the Solidity Developer Survey 2020]]> - https://soliditylang.org//blog/2020/12/09/solidity-developer-survey-2020 - https://soliditylang.org//blog/2020/12/09/solidity-developer-survey-2020 - Wed, 09 Dec 2020 00:00:00 GMT - - Announcements - - - <![CDATA[Announcing the Winners of the Underhanded Solidity Contest 👨‍💻🏅]]> - https://soliditylang.org//blog/2020/12/03/solidity-underhanded-contest-winners - https://soliditylang.org//blog/2020/12/03/solidity-underhanded-contest-winners - Thu, 03 Dec 2020 00:00:00 GMT - - Announcements - - - <![CDATA[Ask the Solidity Team Anything #1 Recap]]> - https://soliditylang.org//blog/2020/11/04/solidity-ama-1-recap - https://soliditylang.org//blog/2020/11/04/solidity-ama-1-recap - Wed, 04 Nov 2020 00:00:00 GMT - - Announcements - - - <![CDATA[The Underhanded Solidity Contest is back!]]> - https://soliditylang.org//blog/2020/09/21/solidity-underhanded-contest - https://soliditylang.org//blog/2020/09/21/solidity-underhanded-contest - Mon, 21 Sep 2020 00:00:00 GMT - - Announcements - - - <![CDATA[Meet the Solidity team! 🧑‍💻👩‍💻]]> - https://soliditylang.org//blog/2020/09/18/meet-the-team - https://soliditylang.org//blog/2020/09/18/meet-the-team - Fri, 18 Sep 2020 00:00:00 GMT - - Announcements - - - <![CDATA[Solidity v0.1.0 turns 5! A walk down memory lane...]]> - https://soliditylang.org//blog/2020/07/08/solidity-turns-5 - https://soliditylang.org//blog/2020/07/08/solidity-turns-5 - Wed, 08 Jul 2020 00:00:00 GMT - - Announcements - - - <![CDATA[Wrapping up the Virtual Solidity Summit 2020]]> - https://soliditylang.org//blog/2020/06/09/solidity-summit-recap - https://soliditylang.org//blog/2020/06/09/solidity-summit-recap - Tue, 09 Jun 2020 00:00:00 GMT - - Announcements - - - <![CDATA[Sourcify: Towards Safer Contract Interaction for Humans]]> - https://soliditylang.org//blog/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans - https://soliditylang.org//blog/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans - Tue, 02 Jun 2020 00:00:00 GMT - - Announcements - - - <![CDATA[Solidity Summit 2020 Goes Interspace]]> - https://soliditylang.org//blog/2020/04/17/Solidity-Summit-2020-Goes-Interspace - https://soliditylang.org//blog/2020/04/17/Solidity-Summit-2020-Goes-Interspace - Fri, 17 Apr 2020 00:00:00 GMT - - Announcements - - - <![CDATA[Dev Update: Formal Methods]]> - https://soliditylang.org//blog/2016/09/01/formal-methods-roadmap - https://soliditylang.org//blog/2016/09/01/formal-methods-roadmap - Thu, 01 Sep 2016 00:00:00 GMT - - Announcements - - - \ No newline at end of file diff --git a/docs/Explainers/feed.xml b/docs/Explainers/feed.xml deleted file mode 100644 index 267f19f7..00000000 --- a/docs/Explainers/feed.xml +++ /dev/null @@ -1,121 +0,0 @@ - - - - Solidity Lang Blog - https://soliditylang.org - - Tue, 11 Jul 2023 20:10:26 GMT - https://validator.w3.org/feed/docs/rss2.html - https://github.com/jpmonette/feed - - Solidity Lang Blog - https://soliditylang.org/assets/solidity-logo.svg - https://soliditylang.org - - All rights reserved 2023 - - <![CDATA[Feature Deep-Dive: User-Defined Operators]]> - https://soliditylang.org//blog/2023/02/22/user-defined-operators - https://soliditylang.org//blog/2023/02/22/user-defined-operators - Wed, 22 Feb 2023 00:00:00 GMT - - Explainers - - - <![CDATA[User Defined Value Types in Solidity]]> - https://soliditylang.org//blog/2021/09/27/user-defined-value-types - https://soliditylang.org//blog/2021/09/27/user-defined-value-types - Mon, 27 Sep 2021 00:00:00 GMT - - Explainers - - - <![CDATA[What Happened with Solidity-related Domains?]]> - https://soliditylang.org//blog/2021/05/03/soliditylangorg-umbrella-domain - https://soliditylang.org//blog/2021/05/03/soliditylangorg-umbrella-domain - Mon, 03 May 2021 00:00:00 GMT - - Explainers - - - <![CDATA[Custom Errors in Solidity]]> - https://soliditylang.org//blog/2021/04/21/custom-errors - https://soliditylang.org//blog/2021/04/21/custom-errors - Wed, 21 Apr 2021 00:00:00 GMT - - Explainers - - - <![CDATA[Saving Gas with Simple Inlining]]> - https://soliditylang.org//blog/2021/03/02/saving-gas-with-simple-inliner - https://soliditylang.org//blog/2021/03/02/saving-gas-with-simple-inliner - Tue, 02 Mar 2021 00:00:00 GMT - - Explainers - - - <![CDATA[Contributing to Solidity 101]]> - https://soliditylang.org//blog/2021/02/15/contributing-to-solidity-101 - https://soliditylang.org//blog/2021/02/15/contributing-to-solidity-101 - Mon, 15 Feb 2021 00:00:00 GMT - - Explainers - - - <![CDATA[An Introduction to Solidity's Fuzz Testing Approach]]> - https://soliditylang.org//blog/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach - https://soliditylang.org//blog/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach - Wed, 10 Feb 2021 00:00:00 GMT - - Explainers - - - <![CDATA[All you need to know about Sourcify]]> - https://soliditylang.org//blog/2020/06/25/sourcify-faq - https://soliditylang.org//blog/2020/06/25/sourcify-faq - Thu, 25 Jun 2020 00:00:00 GMT - - Explainers - - - <![CDATA[Solidity 0.6.x features: inheritance]]> - https://soliditylang.org//blog/2020/06/18/solidity-0.6-inheritance - https://soliditylang.org//blog/2020/06/18/solidity-0.6-inheritance - Thu, 18 Jun 2020 00:00:00 GMT - - Explainers - - - <![CDATA[Solidity 0.6.x features: Array Slices]]> - https://soliditylang.org//blog/2020/05/26/array-slices - https://soliditylang.org//blog/2020/05/26/array-slices - Tue, 26 May 2020 00:00:00 GMT - - Explainers - - - <![CDATA[Solidity 0.6.x features: Saving Storage Costs with Immutables]]> - https://soliditylang.org//blog/2020/05/13/immutable-keyword - https://soliditylang.org//blog/2020/05/13/immutable-keyword - Wed, 13 May 2020 00:00:00 GMT - - Explainers - - - <![CDATA[Solidity 0.6.x features: fallback and receive functions]]> - https://soliditylang.org//blog/2020/03/23/fallback-receive-split - https://soliditylang.org//blog/2020/03/23/fallback-receive-split - Thu, 26 Mar 2020 00:00:00 GMT - - Explainers - - - <![CDATA[Solidity 0.6.x features: try/catch statement]]> - https://soliditylang.org//blog/2020/01/29/solidity-0.6-try-catch - https://soliditylang.org//blog/2020/01/29/solidity-0.6-try-catch - Wed, 29 Jan 2020 00:00:00 GMT - - Explainers - - - \ No newline at end of file diff --git a/docs/Releases/feed.xml b/docs/Releases/feed.xml deleted file mode 100644 index 5ee2be9d..00000000 --- a/docs/Releases/feed.xml +++ /dev/null @@ -1,841 +0,0 @@ - - - - Solidity Lang Blog - https://soliditylang.org - - Tue, 11 Jul 2023 20:10:26 GMT - https://validator.w3.org/feed/docs/rss2.html - https://github.com/jpmonette/feed - - Solidity Lang Blog - https://soliditylang.org/assets/solidity-logo.svg - https://soliditylang.org - - All rights reserved 2023 - - <![CDATA[Solidity 0.8.20 Release Announcement]]> - https://soliditylang.org//blog/2023/05/10/solidity-0.8.20-release-announcement - https://soliditylang.org//blog/2023/05/10/solidity-0.8.20-release-announcement - Wed, 10 May 2023 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.19 Release Announcement]]> - https://soliditylang.org//blog/2023/02/22/solidity-0.8.19-release-announcement - https://soliditylang.org//blog/2023/02/22/solidity-0.8.19-release-announcement - Wed, 22 Feb 2023 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.18 Release Announcement]]> - https://soliditylang.org//blog/2023/02/01/solidity-0.8.18-release-announcement - https://soliditylang.org//blog/2023/02/01/solidity-0.8.18-release-announcement - Wed, 01 Feb 2023 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.17 Release Announcement]]> - https://soliditylang.org//blog/2022/09/08/solidity-0.8.17-release-announcement - https://soliditylang.org//blog/2022/09/08/solidity-0.8.17-release-announcement - Thu, 08 Sep 2022 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.16 Release Announcement]]> - https://soliditylang.org//blog/2022/08/08/solidity-0.8.16-release-announcement - https://soliditylang.org//blog/2022/08/08/solidity-0.8.16-release-announcement - Mon, 08 Aug 2022 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.15 Release Announcement]]> - https://soliditylang.org//blog/2022/06/15/solidity-0.8.15-release-announcement - https://soliditylang.org//blog/2022/06/15/solidity-0.8.15-release-announcement - Wed, 15 Jun 2022 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.14 Release Announcement]]> - https://soliditylang.org//blog/2022/05/17/solidity-0.8.14-release-announcement - https://soliditylang.org//blog/2022/05/17/solidity-0.8.14-release-announcement - Wed, 18 May 2022 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.13 Release Announcement]]> - https://soliditylang.org//blog/2022/03/16/solidity-0.8.13-release-announcement - https://soliditylang.org//blog/2022/03/16/solidity-0.8.13-release-announcement - Wed, 16 Mar 2022 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.12 Release Announcement]]> - https://soliditylang.org//blog/2022/02/16/solidity-0.8.12-release-announcement - https://soliditylang.org//blog/2022/02/16/solidity-0.8.12-release-announcement - Wed, 16 Feb 2022 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.11 Release Announcement]]> - https://soliditylang.org//blog/2021/12/20/solidity-0.8.11-release-announcement - https://soliditylang.org//blog/2021/12/20/solidity-0.8.11-release-announcement - Mon, 20 Dec 2021 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.10 Release Announcement]]> - https://soliditylang.org//blog/2021/11/09/solidity-0.8.10-release-announcement - https://soliditylang.org//blog/2021/11/09/solidity-0.8.10-release-announcement - Tue, 09 Nov 2021 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.9 Release Announcement]]> - https://soliditylang.org//blog/2021/09/29/solidity-0.8.9-release-announcement - https://soliditylang.org//blog/2021/09/29/solidity-0.8.9-release-announcement - Wed, 29 Sep 2021 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.8 Release Announcement]]> - https://soliditylang.org//blog/2021/09/27/solidity-0.8.8-release-announcement - https://soliditylang.org//blog/2021/09/27/solidity-0.8.8-release-announcement - Mon, 27 Sep 2021 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.7 Release Announcement]]> - https://soliditylang.org//blog/2021/08/11/solidity-0.8.7-release-announcement - https://soliditylang.org//blog/2021/08/11/solidity-0.8.7-release-announcement - Wed, 11 Aug 2021 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.6 Release Announcement]]> - https://soliditylang.org//blog/2021/06/22/solidity-0.8.6-release-announcement - https://soliditylang.org//blog/2021/06/22/solidity-0.8.6-release-announcement - Tue, 22 Jun 2021 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.5 Release Announcement]]> - https://soliditylang.org//blog/2021/06/10/solidity-0.8.5-release-announcement - https://soliditylang.org//blog/2021/06/10/solidity-0.8.5-release-announcement - Thu, 10 Jun 2021 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.4 Release Announcement]]> - https://soliditylang.org//blog/2021/04/21/solidity-0.8.4-release-announcement - https://soliditylang.org//blog/2021/04/21/solidity-0.8.4-release-announcement - Wed, 21 Apr 2021 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.3 Release Announcement]]> - https://soliditylang.org//blog/2021/03/23/solidity-0.8.3-release-announcement - https://soliditylang.org//blog/2021/03/23/solidity-0.8.3-release-announcement - Tue, 23 Mar 2021 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.2 Release Announcement]]> - https://soliditylang.org//blog/2021/03/02/solidity-0.8.2-release-announcement - https://soliditylang.org//blog/2021/03/02/solidity-0.8.2-release-announcement - Tue, 02 Mar 2021 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.1 Release Announcement]]> - https://soliditylang.org//blog/2021/01/27/solidity-0.8.1-release-announcement - https://soliditylang.org//blog/2021/01/27/solidity-0.8.1-release-announcement - Wed, 27 Jan 2021 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.0 Release Announcement]]> - https://soliditylang.org//blog/2020/12/16/solidity-v0.8.0-release-announcement - https://soliditylang.org//blog/2020/12/16/solidity-v0.8.0-release-announcement - Wed, 16 Dec 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.7.6 Release Announcement]]> - https://soliditylang.org//blog/2020/12/16/solidity-0.7.6-release-announcement - https://soliditylang.org//blog/2020/12/16/solidity-0.7.6-release-announcement - Wed, 16 Dec 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.7.5 Release Announcement]]> - https://soliditylang.org//blog/2020/11/18/solidity-0.7.5-release-announcement - https://soliditylang.org//blog/2020/11/18/solidity-0.7.5-release-announcement - Wed, 18 Nov 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.8.x Preview Release]]> - https://soliditylang.org//blog/2020/10/28/solidity-0.8.x-preview - https://soliditylang.org//blog/2020/10/28/solidity-0.8.x-preview - Wed, 28 Oct 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.7.4 Release Announcement]]> - https://soliditylang.org//blog/2020/10/19/solidity-0.7.4-release-announcement - https://soliditylang.org//blog/2020/10/19/solidity-0.7.4-release-announcement - Mon, 19 Oct 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.7.3 Release Announcement]]> - https://soliditylang.org//blog/2020/10/07/solidity-0.7.3-release-announcement - https://soliditylang.org//blog/2020/10/07/solidity-0.7.3-release-announcement - Wed, 07 Oct 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.7.2 Release Announcement]]> - https://soliditylang.org//blog/2020/09/28/solidity-0.7.2-release-announcement - https://soliditylang.org//blog/2020/09/28/solidity-0.7.2-release-announcement - Mon, 28 Sep 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.7.1 Release Announcement]]> - https://soliditylang.org//blog/2020/09/02/solidity-0.7.1-release-announcement - https://soliditylang.org//blog/2020/09/02/solidity-0.7.1-release-announcement - Wed, 02 Sep 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.7.0 Release Announcement]]> - https://soliditylang.org//blog/2020/07/28/solidity-v0.7.0-release-announcement - https://soliditylang.org//blog/2020/07/28/solidity-v0.7.0-release-announcement - Tue, 28 Jul 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.6.12 Release Announcement]]> - https://soliditylang.org//blog/2020/07/22/Solidity-0612-release-announcement - https://soliditylang.org//blog/2020/07/22/Solidity-0612-release-announcement - Wed, 22 Jul 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.6.11 Release Announcement]]> - https://soliditylang.org//blog/2020/07/07/Solidity-0611-release-announcement - https://soliditylang.org//blog/2020/07/07/Solidity-0611-release-announcement - Tue, 07 Jul 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.6.10 Release Announcement]]> - https://soliditylang.org//blog/2020/06/11/Solidity-0610-release-announcement - https://soliditylang.org//blog/2020/06/11/Solidity-0610-release-announcement - Thu, 11 Jun 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.6.9 Release Announcement]]> - https://soliditylang.org//blog/2020/06/05/Solidity-069-release-announcement - https://soliditylang.org//blog/2020/06/05/Solidity-069-release-announcement - Fri, 05 Jun 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.6.8 Release Announcement]]> - https://soliditylang.org//blog/2020/05/14/Solidity-068-release-announcement - https://soliditylang.org//blog/2020/05/14/Solidity-068-release-announcement - Thu, 14 May 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.6.7 Release Announcement]]> - https://soliditylang.org//blog/2020/05/04/solidity-0.6.7-release-announcement - https://soliditylang.org//blog/2020/05/04/solidity-0.6.7-release-announcement - Mon, 04 May 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.6.6 Release Announcement]]> - https://soliditylang.org//blog/2020/04/09/solidity-0.6.6-release-announcement - https://soliditylang.org//blog/2020/04/09/solidity-0.6.6-release-announcement - Thu, 09 Apr 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.6.5 Release Announcement]]> - https://soliditylang.org//blog/2020/04/06/solidity-0.6.5-release-announcement - https://soliditylang.org//blog/2020/04/06/solidity-0.6.5-release-announcement - Mon, 06 Apr 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.17 Release Announcement]]> - https://soliditylang.org//blog/2020/03/17/solidity-0.5.17-release-announcement - https://soliditylang.org//blog/2020/03/17/solidity-0.5.17-release-announcement - Tue, 17 Mar 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.6.4 Release Announcement]]> - https://soliditylang.org//blog/2020/03/10/solidity-0.6.4-release-announcement - https://soliditylang.org//blog/2020/03/10/solidity-0.6.4-release-announcement - Tue, 10 Mar 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.6.3 Release Announcement]]> - https://soliditylang.org//blog/2020/02/18/solidity-0.6.3-release-announcement - https://soliditylang.org//blog/2020/02/18/solidity-0.6.3-release-announcement - Tue, 18 Feb 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.6.2 Release Announcement]]> - https://soliditylang.org//blog/2020/01/27/solidity-0.6.2-release-announcement - https://soliditylang.org//blog/2020/01/27/solidity-0.6.2-release-announcement - Mon, 27 Jan 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.6.1 Release Announcement]]> - https://soliditylang.org//blog/2020/01/02/solidity-0.6.1-release-announcement - https://soliditylang.org//blog/2020/01/02/solidity-0.6.1-release-announcement - Thu, 02 Jan 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.16 Release Announcement]]> - https://soliditylang.org//blog/2020/01/02/solidity-0.5.16-release-announcement - https://soliditylang.org//blog/2020/01/02/solidity-0.5.16-release-announcement - Thu, 02 Jan 2020 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.6.0 Release Announcement]]> - https://soliditylang.org//blog/2019/12/17/solidity-0.6.0-release-announcement - https://soliditylang.org//blog/2019/12/17/solidity-0.6.0-release-announcement - Tue, 17 Dec 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.15 Release Announcement]]> - https://soliditylang.org//blog/2019/12/17/solidity-0.5.15-release-announcement - https://soliditylang.org//blog/2019/12/17/solidity-0.5.15-release-announcement - Tue, 17 Dec 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.14 Release Announcement]]> - https://soliditylang.org//blog/2019/12/09/solidity-0.5.14-release-announcement - https://soliditylang.org//blog/2019/12/09/solidity-0.5.14-release-announcement - Mon, 09 Dec 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.13 Release Announcement]]> - https://soliditylang.org//blog/2019/11/14/solidity-0.5.13-release-announcement - https://soliditylang.org//blog/2019/11/14/solidity-0.5.13-release-announcement - Thu, 14 Nov 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.12 Release Announcement]]> - https://soliditylang.org//blog/2019/10/01/solidity-0.5.12-release-announcement - https://soliditylang.org//blog/2019/10/01/solidity-0.5.12-release-announcement - Tue, 01 Oct 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.11 Release Announcement]]> - https://soliditylang.org//blog/2019/08/12/solidity-0.5.11-release-announcement - https://soliditylang.org//blog/2019/08/12/solidity-0.5.11-release-announcement - Mon, 12 Aug 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.10 Release Announcement]]> - https://soliditylang.org//blog/2019/06/25/solidity-0.5.10-release-announcement - https://soliditylang.org//blog/2019/06/25/solidity-0.5.10-release-announcement - Tue, 25 Jun 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.9 Release Announcement]]> - https://soliditylang.org//blog/2019/05/28/solidity-0.5.9-release-announcement - https://soliditylang.org//blog/2019/05/28/solidity-0.5.9-release-announcement - Tue, 28 May 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.8 Release Announcement]]> - https://soliditylang.org//blog/2019/04/30/solidity-0.5.8-release-announcement - https://soliditylang.org//blog/2019/04/30/solidity-0.5.8-release-announcement - Tue, 30 Apr 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.26 Release Announcement]]> - https://soliditylang.org//blog/2019/04/29/solidity-0.4.26-release-announcement - https://soliditylang.org//blog/2019/04/29/solidity-0.4.26-release-announcement - Mon, 29 Apr 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.7 Release Announcement]]> - https://soliditylang.org//blog/2019/03/26/solidity-0.5.7-release-announcement - https://soliditylang.org//blog/2019/03/26/solidity-0.5.7-release-announcement - Tue, 26 Mar 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.6 Release Announcement]]> - https://soliditylang.org//blog/2019/03/13/solidity-0.5.6-release-announcement - https://soliditylang.org//blog/2019/03/13/solidity-0.5.6-release-announcement - Wed, 13 Mar 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.5 Release Announcement]]> - https://soliditylang.org//blog/2019/03/05/solidity-0.5.5-release-announcement - https://soliditylang.org//blog/2019/03/05/solidity-0.5.5-release-announcement - Tue, 05 Mar 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.4 Release Announcement]]> - https://soliditylang.org//blog/2019/02/12/solidity-0.5.4-release-announcement - https://soliditylang.org//blog/2019/02/12/solidity-0.5.4-release-announcement - Tue, 12 Feb 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.3 Release Announcement]]> - https://soliditylang.org//blog/2019/01/22/solidity-0.5.3-release-announcement - https://soliditylang.org//blog/2019/01/22/solidity-0.5.3-release-announcement - Tue, 22 Jan 2019 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.2 Release Announcement]]> - https://soliditylang.org//blog/2018/12/19/solidity-0.5.2-release-announcement - https://soliditylang.org//blog/2018/12/19/solidity-0.5.2-release-announcement - Wed, 19 Dec 2018 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.1 Release Announcement]]> - https://soliditylang.org//blog/2018/12/03/solidity-0.5.1-release-announcement - https://soliditylang.org//blog/2018/12/03/solidity-0.5.1-release-announcement - Mon, 03 Dec 2018 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.5.0 Release Announcement]]> - https://soliditylang.org//blog/2018/11/13/solidity-0.5.0-release-announcement - https://soliditylang.org//blog/2018/11/13/solidity-0.5.0-release-announcement - Tue, 13 Nov 2018 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.25 Release Announcement]]> - https://soliditylang.org//blog/2018/09/13/solidity-0.4.25-release-announcement - https://soliditylang.org//blog/2018/09/13/solidity-0.4.25-release-announcement - Thu, 13 Sep 2018 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.24 Release Announcement]]> - https://soliditylang.org//blog/2018/05/16/solidity-0.4.24-release-announcement - https://soliditylang.org//blog/2018/05/16/solidity-0.4.24-release-announcement - Wed, 16 May 2018 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.23 Release Announcement]]> - https://soliditylang.org//blog/2018/04/19/solidity-0.4.23-release-announcement - https://soliditylang.org//blog/2018/04/19/solidity-0.4.23-release-announcement - Thu, 19 Apr 2018 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.22 Release Announcement]]> - https://soliditylang.org//blog/2018/04/17/solidity-0.4.22-release-announcement - https://soliditylang.org//blog/2018/04/17/solidity-0.4.22-release-announcement - Tue, 17 Apr 2018 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.21 Release Announcement]]> - https://soliditylang.org//blog/2018/03/08/solidity-0.4.21-release-announcement - https://soliditylang.org//blog/2018/03/08/solidity-0.4.21-release-announcement - Thu, 08 Mar 2018 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.20 Release Announcement]]> - https://soliditylang.org//blog/2018/02/14/solidity-0.4.20-release-announcement - https://soliditylang.org//blog/2018/02/14/solidity-0.4.20-release-announcement - Wed, 14 Feb 2018 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.19 Release Announcement]]> - https://soliditylang.org//blog/2017/11/30/solidity-0.4.19-release-announcement - https://soliditylang.org//blog/2017/11/30/solidity-0.4.19-release-announcement - Thu, 30 Nov 2017 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.18 Release Announcement]]> - https://soliditylang.org//blog/2017/10/18/solidity-0.4.18-release-announcement - https://soliditylang.org//blog/2017/10/18/solidity-0.4.18-release-announcement - Wed, 18 Oct 2017 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.17 Release Announcement]]> - https://soliditylang.org//blog/2017/09/21/solidity-0.4.17-release-announcement - https://soliditylang.org//blog/2017/09/21/solidity-0.4.17-release-announcement - Thu, 21 Sep 2017 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.16 Release Announcement]]> - https://soliditylang.org//blog/2017/08/24/solidity-0.4.16-release-announcement - https://soliditylang.org//blog/2017/08/24/solidity-0.4.16-release-announcement - Thu, 24 Aug 2017 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.15 Release Announcement]]> - https://soliditylang.org//blog/2017/08/08/solidity-0.4.15-release-announcement - https://soliditylang.org//blog/2017/08/08/solidity-0.4.15-release-announcement - Tue, 08 Aug 2017 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.14 Release Announcement]]> - https://soliditylang.org//blog/2017/07/31/solidity-0.4.14-release-announcement - https://soliditylang.org//blog/2017/07/31/solidity-0.4.14-release-announcement - Mon, 31 Jul 2017 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.13 Release Announcement]]> - https://soliditylang.org//blog/2017/07/06/solidity-0.4.13-release-announcement - https://soliditylang.org//blog/2017/07/06/solidity-0.4.13-release-announcement - Thu, 06 Jul 2017 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.12 Release Announcement]]> - https://soliditylang.org//blog/2017/07/03/solidity-0.4.12-release-announcement - https://soliditylang.org//blog/2017/07/03/solidity-0.4.12-release-announcement - Mon, 03 Jul 2017 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.11 Release Announcement]]> - https://soliditylang.org//blog/2017/05/03/solidity-0.4.11-release-announcement - https://soliditylang.org//blog/2017/05/03/solidity-0.4.11-release-announcement - Wed, 03 May 2017 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.10 Release Announcement]]> - https://soliditylang.org//blog/2017/03/15/solidity-0.4.10-release-announcement - https://soliditylang.org//blog/2017/03/15/solidity-0.4.10-release-announcement - Wed, 15 Mar 2017 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.9 Release Announcement]]> - https://soliditylang.org//blog/2017/01/31/solidity-0.4.9-release-announcement - https://soliditylang.org//blog/2017/01/31/solidity-0.4.9-release-announcement - Tue, 31 Jan 2017 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.8 Release Announcement]]> - https://soliditylang.org//blog/2017/01/13/solidity-0.4.8-release-announcement - https://soliditylang.org//blog/2017/01/13/solidity-0.4.8-release-announcement - Fri, 13 Jan 2017 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.7 Release Announcement]]> - https://soliditylang.org//blog/2016/12/15/solidity-0.4.7-release-announcement - https://soliditylang.org//blog/2016/12/15/solidity-0.4.7-release-announcement - Thu, 15 Dec 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.6 Release Announcement]]> - https://soliditylang.org//blog/2016/11/22/solidity-0.4.6-release-announcement - https://soliditylang.org//blog/2016/11/22/solidity-0.4.6-release-announcement - Tue, 22 Nov 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.5 Release Announcement]]> - https://soliditylang.org//blog/2016/11/21/solidity-0.4.5-release-announcement - https://soliditylang.org//blog/2016/11/21/solidity-0.4.5-release-announcement - Mon, 21 Nov 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.4 Release Announcement]]> - https://soliditylang.org//blog/2016/11/01/solidity-0.4.4-release-announcement - https://soliditylang.org//blog/2016/11/01/solidity-0.4.4-release-announcement - Tue, 01 Nov 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.3 Release Announcement]]> - https://soliditylang.org//blog/2016/10/25/solidity-0.4.3-release-announcement - https://soliditylang.org//blog/2016/10/25/solidity-0.4.3-release-announcement - Tue, 25 Oct 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.2 Release Announcement]]> - https://soliditylang.org//blog/2016/09/17/solidity-0.4.2-release-announcement - https://soliditylang.org//blog/2016/09/17/solidity-0.4.2-release-announcement - Sat, 17 Sep 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.1 Release Announcement]]> - https://soliditylang.org//blog/2016/09/09/solidity-0.4.1-release-announcement - https://soliditylang.org//blog/2016/09/09/solidity-0.4.1-release-announcement - Fri, 09 Sep 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.4.0 Release Announcement]]> - https://soliditylang.org//blog/2016/09/08/solidity-0.4.0-release-announcement - https://soliditylang.org//blog/2016/09/08/solidity-0.4.0-release-announcement - Thu, 08 Sep 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.3.6 Release Announcement]]> - https://soliditylang.org//blog/2016/08/10/solidity-0.3.6-release-announcement - https://soliditylang.org//blog/2016/08/10/solidity-0.3.6-release-announcement - Wed, 10 Aug 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.3.5 Release Announcement]]> - https://soliditylang.org//blog/2016/06/10/solidity-0.3.5-release-announcement - https://soliditylang.org//blog/2016/06/10/solidity-0.3.5-release-announcement - Fri, 10 Jun 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.3.4 Release Announcement]]> - https://soliditylang.org//blog/2016/05/31/solidity-0.3.4-release-announcement - https://soliditylang.org//blog/2016/05/31/solidity-0.3.4-release-announcement - Tue, 31 May 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.3.3 Release Announcement]]> - https://soliditylang.org//blog/2016/05/27/solidity-0.3.3-release-announcement - https://soliditylang.org//blog/2016/05/27/solidity-0.3.3-release-announcement - Fri, 27 May 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.3.2 Release Announcement]]> - https://soliditylang.org//blog/2016/04/18/solidity-0.3.2-release-announcement - https://soliditylang.org//blog/2016/04/18/solidity-0.3.2-release-announcement - Mon, 18 Apr 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.3.1 Release Announcement]]> - https://soliditylang.org//blog/2016/03/31/solidity-0.3.1-release-announcement - https://soliditylang.org//blog/2016/03/31/solidity-0.3.1-release-announcement - Thu, 31 Mar 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.3.0 Release Announcement]]> - https://soliditylang.org//blog/2016/03/11/solidity-0.3.0-release-announcement - https://soliditylang.org//blog/2016/03/11/solidity-0.3.0-release-announcement - Fri, 11 Mar 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.2.2 Release Announcement]]> - https://soliditylang.org//blog/2016/02/17/solidity-0.2.2-release-announcement - https://soliditylang.org//blog/2016/02/17/solidity-0.2.2-release-announcement - Wed, 17 Feb 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.2.1 Release Announcement]]> - https://soliditylang.org//blog/2016/01/30/solidity-0.2.1-release-announcement - https://soliditylang.org//blog/2016/01/30/solidity-0.2.1-release-announcement - Sat, 30 Jan 2016 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.2.0 Release Announcement]]> - https://soliditylang.org//blog/2015/12/01/solidity-0.2.0-release-announcement - https://soliditylang.org//blog/2015/12/01/solidity-0.2.0-release-announcement - Tue, 01 Dec 2015 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.1.7 Release Announcement]]> - https://soliditylang.org//blog/2015/11/17/solidity-0.1.7-release-announcement - https://soliditylang.org//blog/2015/11/17/solidity-0.1.7-release-announcement - Tue, 17 Nov 2015 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.1.6 Release Announcement]]> - https://soliditylang.org//blog/2015/10/16/solidity-0.1.6-release-announcement - https://soliditylang.org//blog/2015/10/16/solidity-0.1.6-release-announcement - Fri, 16 Oct 2015 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.1.5 Release Announcement]]> - https://soliditylang.org//blog/2015/10/07/solidity-0.1.5-release-announcement - https://soliditylang.org//blog/2015/10/07/solidity-0.1.5-release-announcement - Wed, 07 Oct 2015 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.1.4 Release Announcement]]> - https://soliditylang.org//blog/2015/09/30/solidity-0.1.4-release-announcement - https://soliditylang.org//blog/2015/09/30/solidity-0.1.4-release-announcement - Wed, 30 Sep 2015 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.1.3 Release Announcement]]> - https://soliditylang.org//blog/2015/09/22/solidity-0.1.3-release-announcement - https://soliditylang.org//blog/2015/09/22/solidity-0.1.3-release-announcement - Tue, 22 Sep 2015 00:00:00 GMT - - Releases - - - <![CDATA[Solidity 0.1.2 Release Announcement]]> - https://soliditylang.org//blog/2015/08/21/solidity-0.1.2-release-announcement - https://soliditylang.org//blog/2015/08/21/solidity-0.1.2-release-announcement - Fri, 21 Aug 2015 00:00:00 GMT - - Releases - - - \ No newline at end of file diff --git a/docs/Security Alerts/feed.xml b/docs/Security Alerts/feed.xml deleted file mode 100644 index 5dced859..00000000 --- a/docs/Security Alerts/feed.xml +++ /dev/null @@ -1,185 +0,0 @@ - - - - Solidity Lang Blog - https://soliditylang.org - - Tue, 11 Jul 2023 20:10:26 GMT - https://validator.w3.org/feed/docs/rss2.html - https://github.com/jpmonette/feed - - Solidity Lang Blog - https://soliditylang.org/assets/solidity-logo.svg - https://soliditylang.org - - All rights reserved 2023 - - <![CDATA[Storage Write Removal Bug On Conditional Early Termination]]> - https://soliditylang.org//blog/2022/09/08/storage-write-removal-before-conditional-termination - https://soliditylang.org//blog/2022/09/08/storage-write-removal-before-conditional-termination - Thu, 08 Sep 2022 00:00:00 GMT - - Security Alerts - - - <![CDATA[Head Overflow Bug in Calldata Tuple ABI-Reencoding]]> - https://soliditylang.org//blog/2022/08/08/calldata-tuple-reencoding-head-overflow-bug - https://soliditylang.org//blog/2022/08/08/calldata-tuple-reencoding-head-overflow-bug - Mon, 08 Aug 2022 00:00:00 GMT - - Security Alerts - - - <![CDATA[Optimizer Bug Regarding Memory Side Effects of Inline Assembly]]> - https://soliditylang.org//blog/2022/06/15/inline-assembly-memory-side-effects-bug - https://soliditylang.org//blog/2022/06/15/inline-assembly-memory-side-effects-bug - Wed, 15 Jun 2022 00:00:00 GMT - - Security Alerts - - - <![CDATA[Bug when Copying Dirty Bytes Arrays to Storage]]> - https://soliditylang.org//blog/2022/06/15/dirty-bytes-array-to-storage-bug - https://soliditylang.org//blog/2022/06/15/dirty-bytes-array-to-storage-bug - Wed, 15 Jun 2022 00:00:00 GMT - - Security Alerts - - - <![CDATA[Bug Concerning Data Location during Inheritance]]> - https://soliditylang.org//blog/2022/05/17/data-location-inheritance-bug - https://soliditylang.org//blog/2022/05/17/data-location-inheritance-bug - Tue, 17 May 2022 00:00:00 GMT - - Security Alerts - - - <![CDATA[Size Check Bug in Nested Calldata Array ABI-Reencoding]]> - https://soliditylang.org//blog/2022/05/17/calldata-reencode-size-check-bug - https://soliditylang.org//blog/2022/05/17/calldata-reencode-size-check-bug - Tue, 17 May 2022 00:00:00 GMT - - Security Alerts - - - <![CDATA[abi.encodeCall Literals Bug]]> - https://soliditylang.org//blog/2022/03/16/encodecall-bug - https://soliditylang.org//blog/2022/03/16/encodecall-bug - Wed, 16 Mar 2022 00:00:00 GMT - - Security Alerts - - - <![CDATA[User Defined Value Types Bug]]> - https://soliditylang.org//blog/2021/09/29/user-defined-value-types-bug - https://soliditylang.org//blog/2021/09/29/user-defined-value-types-bug - Wed, 29 Sep 2021 00:00:00 GMT - - Security Alerts - - - <![CDATA[Signed Immutables Bug]]> - https://soliditylang.org//blog/2021/09/29/signed-immutables-bug - https://soliditylang.org//blog/2021/09/29/signed-immutables-bug - Wed, 29 Sep 2021 00:00:00 GMT - - Security Alerts - - - <![CDATA[Solidity ABI Decoder Bug For Multi-Dimensional Memory Arrays]]> - https://soliditylang.org//blog/2021/04/21/decoding-from-memory-bug - https://soliditylang.org//blog/2021/04/21/decoding-from-memory-bug - Wed, 21 Apr 2021 00:00:00 GMT - - Security Alerts - - - <![CDATA[Solidity Optimizer Keccak Caching Bug]]> - https://soliditylang.org//blog/2021/03/23/keccak-optimizer-bug - https://soliditylang.org//blog/2021/03/23/keccak-optimizer-bug - Tue, 23 Mar 2021 00:00:00 GMT - - Security Alerts - - - <![CDATA[Solidity Empty Byte Array Copy Bug]]> - https://soliditylang.org//blog/2020/10/19/empty-byte-array-copy-bug - https://soliditylang.org//blog/2020/10/19/empty-byte-array-copy-bug - Mon, 19 Oct 2020 00:00:00 GMT - - Security Alerts - - - <![CDATA[Solidity Dynamic Array Cleanup Bug]]> - https://soliditylang.org//blog/2020/10/07/solidity-dynamic-array-cleanup-bug - https://soliditylang.org//blog/2020/10/07/solidity-dynamic-array-cleanup-bug - Wed, 07 Oct 2020 00:00:00 GMT - - Security Alerts - - - <![CDATA[Solidity Memory Array Creation Overflow Bug]]> - https://soliditylang.org//blog/2020/04/06/memory-creation-overflow-bug - https://soliditylang.org//blog/2020/04/06/memory-creation-overflow-bug - Mon, 06 Apr 2020 00:00:00 GMT - - Security Alerts - - - <![CDATA[Solidity Storage Array Bugs]]> - https://soliditylang.org//blog/2019/06/25/solidity-storage-array-bugs - https://soliditylang.org//blog/2019/06/25/solidity-storage-array-bugs - Tue, 25 Jun 2019 00:00:00 GMT - - Security Alerts - - - <![CDATA[Solidity Optimizer and ABIEncoderV2 Bugs]]> - https://soliditylang.org//blog/2019/03/26/solidity-optimizer-and-abiencoderv2-bug - https://soliditylang.org//blog/2019/03/26/solidity-optimizer-and-abiencoderv2-bug - Tue, 26 Mar 2019 00:00:00 GMT - - Security Alerts - - - <![CDATA[Solidity Bugfix Release]]> - https://soliditylang.org//blog/2018/09/13/solidity-bugfix-release - https://soliditylang.org//blog/2018/09/13/solidity-bugfix-release - Thu, 13 Sep 2018 00:00:00 GMT - - Security Alerts - - - <![CDATA[Solidity Optimizer Bug]]> - https://soliditylang.org//blog/2017/05/03/solidity-optimizer-bug - https://soliditylang.org//blog/2017/05/03/solidity-optimizer-bug - Wed, 03 May 2017 00:00:00 GMT - - Security Alerts - - - <![CDATA[Analysis of Storage Corruption Bug]]> - https://soliditylang.org//blog/2016/11/09/analysis-storage-corruption-bug - https://soliditylang.org//blog/2016/11/09/analysis-storage-corruption-bug - Wed, 09 Nov 2016 00:00:00 GMT - - Security Alerts - - - <![CDATA[Security Alert: Variables can be overwritten in storage]]> - https://soliditylang.org//blog/2016/11/01/security-alert-solidity-variables-can-overwritten-storage - https://soliditylang.org//blog/2016/11/01/security-alert-solidity-variables-can-overwritten-storage - Tue, 01 Nov 2016 00:00:00 GMT - - Security Alerts - - - <![CDATA[Smart Contract Security]]> - https://soliditylang.org//blog/2016/06/10/smart-contract-security - https://soliditylang.org//blog/2016/06/10/smart-contract-security - Fri, 10 Jun 2016 00:00:00 GMT - - Security Alerts - - - \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog.json deleted file mode 100644 index 17ba3dc0..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.20 Release Announcement","date":"2023-05-10","author":"Solidity Team","category":"Releases"},"content":"\nWe are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.20.\nThis latest version includes a range of improvements in the via-IR pipeline and improves the list of events exposed in the contract ABI, and, most importantly, support for the Shanghai hard fork!\n\nImportant Note\n\nThis compiler switches the default target EVM version to Shanghai, which means that the generated bytecode will include PUSH0 opcodes.\nBe sure to select the appropriate EVM version in case you intend to deploy on a...","url":"/blog/2023/05/10/solidity-0.8.20-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2022 Results","date":"2023-03-10","author":"Franziska Heintel","category":"Announcements"},"content":"\nThe 2022 Solidity Developer Survey results are in! In this post, we will be summarizing and analyzing them.\n\nFirst of all, a big thank you to everybody who took the time and participated and to everybody who helped us spread the word about it!\nThis year, we received a smashing 1401 responses. That is more than a 3x in responses compared to the previous survey and we couldn't be happier with the turnout.\nYour input is invaluable to us and plays a crucial...","url":"/blog/2023/03/10/solidity-developer-survey-2022-results"},{"frontmatter":{"layout":"post","published":true,"title":"Feature Deep-Dive: User-Defined Operators","date":"2023-02-22","author":"Kamil Śliwak, Matheus Aguiar","category":"Explainers"},"content":"\nThe highlight of Solidity 0.8.19 release\nis the support for defining operators on user-defined value types (UDVTs).\n\nIf you have not been keeping up with recent features, UDVTs are a new class of types introduced in Solidity 0.8.8.\nThey provide an abstraction over an elementary value type that results in a completely new type.\nThis is similar to creating an alias, but the new type is distinct from the underlying value type\nand all other UDVTs derived from that underlying type.\nThe ability to use operators...","url":"/blog/2023/02/22/user-defined-operators"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.19 Release Announcement","date":"2023-02-22","author":"Solidity Team","category":"Releases"},"content":"\nWe are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.19.\nThis latest version includes a range of improvements and it also introduces the support for defining operators on user-defined value types (UDVTs)!\nYou can learn about it at length in our feature deep-dive blogpost.\n\nNotable New Features\n\nThese are the features we want to highlight in this release.\n\nOperators for User-Defined Value Types\n\nThe ability to use operators is meant to bring the UDVTs closer to being as natural to use\nas the...","url":"/blog/2023/02/22/solidity-0.8.19-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.18 Release Announcement","date":"2023-02-01","author":"Solidity Team","category":"Releases"},"content":"\nIntroducing the newest version of the Solidity Compiler!\n\nWe are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.18.\nThis latest version includes a range of improvements and it also introduces support for the Paris upgrade!\n\nNotable New Features\n\nThese are the features we want to highlight in this release.\n\nDisabling CBOR metadata\n\nA new command-line flag (--no-cbor-metadata) and Standard JSON option (settings.metadata.appendCBOR: false) to prevent compiler from appending the CBOR metadata section at the end of the bytecode.\nUntil now, it was only...","url":"/blog/2023/02/01/solidity-0.8.18-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2022 is Live!","date":"2022-12-07","author":"Franziska Heintel","category":"Announcements"},"content":"\nIt’s that time of the year. Drumroll, please! 🥁🥁🥁\nWe are launching the Solidity Developer Survey 2022!\n\nBefore we wrap up 2022 for good, we want to reach out to collect your feedback and insights so we can improve on it!\n\n📝 TAKE THE SURVEY! 📝\n\nYou can find the previous results of the Solidity Developer Survey 2021 here. In 2021, 435 developers from 73 different countries participated with 80% of respondents using Solidity daily or weekly.\n\nAbout the Survey 🪄\n\nLike in previous years, this...","url":"/blog/2022/12/07/solidity-developer-survey-2022-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Core Team Updates","date":"2022-12-05","author":"Solidity Team","category":"Announcements"},"content":"\nMore than two years have passed since we introduced Solidity core team members on the blog and we realized it is high time for some updates: Meet new team members, find out who moved on to other adventures and learn about recent changes in the team structure!\n\nBefore we dive in, a reminder that the Solidity programming language and compiler are open-source community projects. This post dives into the core team that leads the development. Nevertheless, we cannot stress enough how...","url":"/blog/2022/12/05/solidity-core-team-updates"},{"frontmatter":{"layout":"post","published":true,"title":"Storage Write Removal Bug On Conditional Early Termination","date":"2022-09-08","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn September 5, 2022, a bug in Solidity's Yul optimizer was found by differential fuzzing.\n\nThe bug was introduced in version 0.8.13 and Solidity version 0.8.17, released on September 08, 2022, provides a fix. The bug is significantly easier to trigger with optimized via-IR code generation, but can theoretically also occur in optimized legacy code generation.\n\nWe assigned the bug a severity of \"medium/high\".\n\nWho Should Be Concerned\n\nIf you're using optimized legacy code generation, you only need to be concerned, if you use...","url":"/blog/2022/09/08/storage-write-removal-before-conditional-termination"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.17 Release Announcement","date":"2022-09-08","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.17\nfixes an important bug, makes overflow checks on multiplication more efficient and adds an LSP feature to\nalways analyze all files in a project.\n\nImportant Bugs\n\nStorage Write Removal Bug On Conditional Early Termination\n\nThe bug may result in storage writes being incorrectly considered redundant and removed by the optimizer.\nThe problem manifests in presence of assembly functions that may conditionally terminate the external\nEVM call using the return() or stop() opcode.\n\nSee the security alert post on Storage Write Removal Bug On Conditional Early Termination\nfor...","url":"/blog/2022/09/08/solidity-0.8.17-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.16 Release Announcement","date":"2022-08-08","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.16\nfixes an important bug.\n\nThe bug may result in small parts of dynamic tuple components being inadvertently zeroed during\nABI re-encoding when the last component is a statically-sized uint or bytes32 calldata array.\nSee Head Overflow Bug in Calldata Tuple ABI-Reencoding\nfor more information.\n\nApart from that, there are several minor bug fixes and improvements like more gas-efficient overflow checks\nfor addition and subtraction.\n\nFull Changelog\n\nImportant Bugfixes:\n\nCode Generation: Fix data corruption that affected ABI-encoding of calldata values represented by tuples: structs at any nesting level; argument...","url":"/blog/2022/08/08/solidity-0.8.16-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Head Overflow Bug in Calldata Tuple ABI-Reencoding","date":"2022-08-08","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn July 5, 2022, Chance Hudson (@vimwitch) from the Ethereum Foundation discovered a bug in the Solidity code generator.\n\nThe earliest affected version of the compiler is 0.5.8, which introduced ABI-reencoding of calldata arrays and structs.\nSolidity version 0.8.16, released on August 08, 2022, provides a fix.\n\nWe assigned the bug a severity of \"medium\".\n\nWhich Contracts are Affected?\n\nThe effects of the bug manifest when a contract performs ABI-encoding of a tuple that meets all of the following conditions:\n\nThe last component of the tuple...","url":"/blog/2022/08/08/calldata-tuple-reencoding-head-overflow-bug"}],"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/08/21/solidity-0.1.2-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/08/21/solidity-0.1.2-release-announcement.json deleted file mode 100644 index 1e8e78f3..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/08/21/solidity-0.1.2-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.2 Release Announcement","date":"2015-08-21","author":"Solidity Team","category":"Releases"},"content":"\n**Changes:**\n\n- Improved commandline interface (breaking change).\n- Explicit conversion between bytes and string.\n- Bugfix: Value transfer used in clone contracts.\n- Bugfix: Problem with strings as mapping keys.\n- Bugfix: Prevent usage of some operators.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.1.2).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/09/22/solidity-0.1.3-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/09/22/solidity-0.1.3-release-announcement.json deleted file mode 100644 index 710f596f..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/09/22/solidity-0.1.3-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.3 Release Announcement","date":"2015-09-22","author":"Solidity Team","category":"Releases"},"content":"\n**Changes:**\n\n- `throw` statement.\n- Libraries that contain functions which are called via CALLCODE.\n- Linker stage for compiler to insert other contract's addresses (used for libraries).\n- Compiler option to output runtime part of contracts.\n- Compile-time out of bounds check for access to fixed-size arrays by integer constants.\n- Version string includes libevmasm/libethereum's version (contains the optimizer).\n- Bugfix: Accessors for constant public state variables.\n- Bugfix: Propagate exceptions in clone contracts.\n- Bugfix: Empty single-line comments are now treated properly.\n- Bugfix: Properly check the number of indexed arguments for events.\n- Bugfix: Strings in struct constructors.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.1.3).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/09/30/solidity-0.1.4-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/09/30/solidity-0.1.4-release-announcement.json deleted file mode 100644 index 336b534a..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/09/30/solidity-0.1.4-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.4 Release Announcement","date":"2015-09-30","author":"Solidity Team","category":"Releases"},"content":"\n**Changes:**\n\n- Bugfix: combined-json output of solc incorrectly returned the runtime binary instead of the binary.\n- Bugfix: Accessing fixed-size array return values.\n- Bugfix: Disallow assignment from literal strings to storage pointers.\n- Refactoring: Move type checking into its own module.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.1.4).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/10/07/solidity-0.1.5-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/10/07/solidity-0.1.5-release-announcement.json deleted file mode 100644 index 1bbc2152..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/10/07/solidity-0.1.5-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.5 Release Announcement","date":"2015-10-07","author":"Solidity Team","category":"Releases"},"content":"\n**Changes:**\n\n- Breaking change in storage encoding: Encode short byte arrays and strings together with their length in storage.\n- Report warnings.\n- Allow storage reference types for public library functions.\n- Access to types declared in other contracts and libraries via `.`.\n- Version stamp at beginning of runtime bytecode of libraries.\n- Bugfix: Problem with initialized string state variables and dynamic data in constructor.\n- Bugfix: Resolve dependencies concerning `new` automatically.\n- Bugfix: Allow four indexed arguments for anonymous events.\n- Bugfix: Detect too large integer constants in functions that accept arbitrary parameters.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.1.5).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/10/16/solidity-0.1.6-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/10/16/solidity-0.1.6-release-announcement.json deleted file mode 100644 index 654a1c2c..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/10/16/solidity-0.1.6-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.6 Release Announcement","date":"2015-10-16","author":"Solidity Team","category":"Releases"},"content":"\n**Features:**\n\n- `.push()` for dynamic storage arrays.\n- Tuple expressions (`(1,2,3)` or `return (1,2,3);`)\n- Declaration and assignment of multiple variables (`var (x,y,) = (1,2,3,4,5);` or `var (x,y) = f();`)\n- Destructuring assignment (`(x,y,) = (1,2,3)`)\n- Handling of multiple source files in the json compiler.\n\n**Bugfixes:**\n\n- Internal error about usage of library function with invalid types.\n- Correctly parse `Library.structType a` at statement level.\n- Correctly report source locations of parenthesized expressions (as part of \"tuple\" story).\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.1.6).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/11/17/solidity-0.1.7-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/11/17/solidity-0.1.7-release-announcement.json deleted file mode 100644 index 417a8a96..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/11/17/solidity-0.1.7-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.7 Release Announcement","date":"2015-11-17","author":"Solidity Team","category":"Releases"},"content":"\n**Features:**\n\n- Improved error messages for unexpected tokens.\n- Proof-of-concept transcompilation to why3 for formal verification of contracts.\n\n**Bugfixes:**\n\n- Writing to elements of `bytes` or `string` overwrite others.\n- Arrays (also strings) as indexed parameters of events.\n- \"Successor block not found\" on Windows.\n- Using string literals in tuples.\n- Cope with invalid commit hash in version for libraries.\n- Some test framework fixes on windows.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.1.7).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/12/01/solidity-0.2.0-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/12/01/solidity-0.2.0-release-announcement.json deleted file mode 100644 index 9d5edeb1..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2015/12/01/solidity-0.2.0-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.2.0 Release Announcement","date":"2015-12-01","author":"Solidity Team","category":"Releases"},"content":"\n**Features:**\n\n- Allocation of memory arrays using `new`.\n- Binding library functions to types via `using x for y`\n- **Breaking Change**: `new ContractName.value(10)()` has to be written as `(new ContractName).value(10)()`\n- Added `selfdestruct` as an alias for `suicide`.\n\n**Bugfixes:**\n\n- Constructor arguments of fixed array type were not read correctly.\n- Memory allocation of structs containing arrays or strings.\n- Data location for explicit memory parameters in libraries was set to storage.\n\nThe two main features of this release is the ability to create memory arrays (of dynamic length) and to\n[attach library functions to types](https://ethereum.github.io/solidity//docs/using-for/). The latter provides a way to make elegant use of complex data types in the way we are used to from other languages and paves the way to creating an extensive and easy to use standard library. The next step into that direction is the introduction of a clean module system.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.2.0).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/01/30/solidity-0.2.1-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/01/30/solidity-0.2.1-release-announcement.json deleted file mode 100644 index 2ae6012a..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/01/30/solidity-0.2.1-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.2.1 Release Announcement","date":"2016-01-30","author":"Solidity Team","category":"Releases"},"content":"\nThis release includes three major features and one very important bugfix in the optimizer.\n\nIn some situations, the optimizer generated incorrect code. Please always test your code before you use it, unfortunately, we can never guarantee 100% correctness.\n\nWe are especially grateful about the many voluntary community contributions this release received.\nTwo fearless individuals dived deep into the solidity code and delivered two major features: Thanks a lot to [@VoR0220](https://github.com/VoR0220) for the inline arrays and to [@guanqun](https://github.com/guanqun) for the ternary operator!\nFurthermore, [@bobsummerwill](https://github.com/bobsummerwill) spent a lot of free time handling build issues on MacOS and other platforms.\nOther contributions came from [@axic](https://github.com/axic), [@chfast](https://github.com/chfast), [@ethers](https://github.com/ethers), [@janx](https://github.com/janx), [@pipermerriam](https://github.com/pipermerriam) and [@u2](https://github.com/u2).\n\n**Features:**\n\n- **Inline arrays**, i.e. `var y = [1,x,f()];` if there is a common type for `1`, `x` and `f()`. Note that the result is always a fixed-length memory array and conversion to dynamic-length memory arrays is not yet possible.\n- **Import** similar to ECMAScript6 import (`import \"abc.sol\" as d` and `import {x, y} from \"abc.sol\"`). [Documentation](https://solidity.readthedocs.org/en/latest/layout-of-source-files.html#importing-other-source-files)\n- Commandline compiler solc automatically resolves missing imports and allows for \"include directories\". [Documentation](https://solidity.readthedocs.org/en/latest/layout-of-source-files.html#use-in-actual-compilers)\n- **Conditional** / ternary operator: `x ? y : z`\n\n**Fixed bugs:**\n\n- Several bugs where the optimizer generated invalid code.\n- Enums and structs were not accessible to other contracts.\n- Fixed segfault connected to function paramater types, appeared during gas estimation.\n- Type checker crash for wrong number of base constructor parameters.\n- Allow function overloads with different array types.\n- Allow assignments of type `(x) = 7`.\n- Type `uint176` was not available.\n- Fixed crash during type checking concerning constructor calls.\n- Fixed crash during code generation concerning invalid accessors for struct types.\n- Fixed crash during code generating concerning computing a hash of a struct type.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.2.1).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/02/17/solidity-0.2.2-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/02/17/solidity-0.2.2-release-announcement.json deleted file mode 100644 index 67962e9e..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/02/17/solidity-0.2.2-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.2.2 Release Announcement","date":"2016-02-17","author":"Solidity Team","category":"Releases"},"content":"\n**Features:**\n\n- Index access for types `bytes1`, ..., `bytes32` (only read access for now).\n\n**Bugfixes:**\n\n- Type checker crash for wrong number of base constructor parameters.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.2.2).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/03/11/solidity-0.3.0-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/03/11/solidity-0.3.0-release-announcement.json deleted file mode 100644 index 0aa04f5b..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/03/11/solidity-0.3.0-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.0 Release Announcement","date":"2016-03-11","author":"Solidity Team","category":"Releases"},"content":"\nThis version is synchronized to the Homestead changes on the main Ethereum network and introduces various breaking changes.\n\n**BREAKING CHANGES:**\n\n- You should not rely on division for literals resulting in a (truncated) integer. This is still the case but will change once we implement fixed point types, i.e. in the future `1/2 == 0.5` will be true, currently we have `1/2 == 0`. Note that this only applies to literals (`(2 + 7) / 2`) and not variables (`x / 2`).\n- Library calls now default to use `DELEGATECALL` (e.g. called library functions see the same value as the calling function for `msg.value` and `msg.sender`).\n- Added new keywords `assembly`, `fixed`, `ufixed`, `fixedNxM`, `ufixedNxM` (for various values of M and N), `inline` in preparation for future features.\n\n**Features:**\n\n- `
.delegatecall` is provided as a low-level calling interface for `DELEGATECALL`\n\n**Bugfixes:**\n\n- Fixed a bug in the optimizer that resulted in comparisons being wrong.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.3.0).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/03/31/solidity-0.3.1-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/03/31/solidity-0.3.1-release-announcement.json deleted file mode 100644 index 5b5e2e8b..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/03/31/solidity-0.3.1-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.1 Release Announcement","date":"2016-03-31","author":"Solidity Team","category":"Releases"},"content":"\nThis release mainly introduces inline assembly ([documentation](https://solidity.readthedocs.org/en/latest/control-structures.html#inline-assembly)). Inline assembly provides a way to write low-level but still well readable code. Together with the coming features of inline library functions and templates, it allows to move much of the development that had to be done in the compiler itself into libraries written in Solidity. In the future, it will be possible to introduce new versatile types that still look like builtins.\n\n**Features:**\n\n- inline assembly\n\n**Fixes:**\n\n- Code generation: array access with narrow types did not clean higher order bits\n- Error reporting: error reporting with unknown source location caused a crash\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.3.1).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/04/18/solidity-0.3.2-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/04/18/solidity-0.3.2-release-announcement.json deleted file mode 100644 index 90442afe..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/04/18/solidity-0.3.2-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.2 Release Announcement","date":"2016-04-18","author":"Solidity Team","category":"Releases"},"content":"\nThis is mainly a bugfix release. Under the hood, we are in the process of separating the Solidity source code from the rest of the cpp-ethereum source code so that it can soon be built (and released) in isolation.\n\n**Fixes:**\n\n- Code generation: Dynamic arrays of structs were not deleted correctly.\n- Code generation: Static arrays in constructor parameter list were not decoded correctly.\n- Parser: Inline assembly parser: `byte` opcode was unusable\n- Error reporting: tokens for variably-sized types were not converted to string properly\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.3.2).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/05/27/solidity-0.3.3-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/05/27/solidity-0.3.3-release-announcement.json deleted file mode 100644 index 539b2772..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/05/27/solidity-0.3.3-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.3 Release Announcement","date":"2016-05-27","author":"Solidity Team","category":"Releases"},"content":"\nThis release mainly makes libraries more flexible in that it allows internal functions to be called.\n\n**Features**\n\n- Allow internal library functions to be called (by \"inlining\")\n- Fractional/rational constants (only usable with fixed point types, which are still in progress)\n- Inline assembly has access to internal functions (as jump labels)\n- Running `solc` without arguments on a terminal will print help.\n\n**Fixes**\n\n- Code Generation: Remove some non-determinism in code generation.\n- Code Generation: Corrected usage of not / bnot / iszero in inline assembly\n- Code Generation: Correctly clean bytesNN types before comparison\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.3.3).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/05/31/solidity-0.3.4-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/05/31/solidity-0.3.4-release-announcement.json deleted file mode 100644 index 1ba52c77..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/05/31/solidity-0.3.4-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.4 Release Announcement","date":"2016-05-31","author":"Solidity Team","category":"Releases"},"content":"\nThis release contains no changes outside of the documentation.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.3.4).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/06/10/smart-contract-security.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/06/10/smart-contract-security.json deleted file mode 100644 index 73d00c42..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/06/10/smart-contract-security.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Smart Contract Security","date":"2016-06-10","author":"Christian Reitwiessner","category":"Security Alerts"},"content":"\n_This post was originally published on the [Ethereum blog](https://blog.ethereum.org/2016/06/10/smart-contract-security/)._\n\nSolidity was started in October 2014 when neither the Ethereum network nor the virtual machine had any real-world testing, the gas costs at that time were even drastically different from what they are now. Furthermore, some of the early design decisions were taken over from Serpent. During the last couple of months, examples and patterns that were initially considered best-practice were exposed to reality and some of them actually turned out to be anti-patterns. Due to that, we recently updated some of the [Solidity documentation](https://solidity.readthedocs.org), but as most people probably do not follow the stream of github commits to that repository, I would like to highlight some of the findings here.\n\nI will not talk about the minor issues here, please read up on them in the [documentation](http://solidity.readthedocs.io/en/latest/miscellaneous.html#pitfalls).\n\n## Sending Ether\n\nSending Ether is supposed to be one of the simplest things in Solidity, but it turns out to have some subtleties most people do not realise.\n\nIt is important that at best, the recipient of the ether initiates the payout. The following is a **BAD** example of an auction contract:\n\n```solidity\n// THIS IS A NEGATIVE EXAMPLE! DO NOT USE!\ncontract auction {\n address highestBidder;\n uint highestBid;\n function bid() {\n if (msg.value < highestBid) throw;\n if (highestBidder != 0)\n highestBidder.send(highestBid); // refund previous bidder\n highestBidder = msg.sender;\n highestBid = msg.value;\n }\n}\n```\n\nBecause of the maximal stack depth of 1024 the new bidder can always increase the stack size to 1023 and then call `bid()` which will cause the `send(highestBid)` call to silently fail (i.e. the previous bidder will not receive the refund), but the new bidder will still be highest bidder. One way to check whether `send` was successful is to check its return value:\n\n```solidity\n/// THIS IS STILL A NEGATIVE EXAMPLE! DO NOT USE!\nif (highestBidder != 0)\n if (!highestBidder.send(highestBid))\n throw;\n```\n\nThe `throw` statement causes the current call to be reverted. This is a bad idea, because the recipient, e.g. by implementing the fallback function as `function() { throw; }` can always force the Ether transfer to fail and this would have the effect that nobody can overbid her.\n\nThe only way to prevent both situations is to convert the sending pattern into a withdrawing pattern by giving the recipient control over the transfer:\n\n```solidity\n/// THIS IS STILL A NEGATIVE EXAMPLE! DO NOT USE!\ncontract auction {\n address highestBidder;\n uint highestBid;\n mapping(address => uint) refunds;\n function bid() {\n if (msg.value < highestBid) throw;\n if (highestBidder != 0)\n refunds[highestBidder] += highestBid;\n highestBidder = msg.sender;\n highestBid = msg.value;\n }\n function withdrawRefund() {\n if (msg.sender.send(refunds[msg.sender]))\n refunds[msg.sender] = 0;\n }\n}\n```\n\nWhy does it still say \"negative example\" above the contract? Because of gas mechanics, the contract is actually fine, but it is still not a good example. The reason is that it is impossible to prevent code execution at the recipient as part of a send. This means that while the send function is still in progress, the recipient can call back into withdrawRefund. At that point, the refund amount is still the same and thus they would get the amount again and so on. In this specific example, it does not work, because the recipient only gets the gas stipend (2100 gas) and it is impossible to perform another send with this amount of gas. The following code, though, is vulnerable to this attack: `msg.sender.call.value(refunds[msg.sender])()`.\n\nHaving considered all this, the following code should be fine (of course it is still not a complete example of an auction contract):\n\n```solidity\ncontract auction {\n address highestBidder;\n uint highestBid;\n mapping(address => uint) refunds;\n function bid() {\n if (msg.value < highestBid) throw;\n if (highestBidder != 0)\n refunds[highestBidder] += highestBid;\n highestBidder = msg.sender;\n highestBid = msg.value;\n }\n function withdrawRefund() {\n uint refund = refunds[msg.sender];\n refunds[msg.sender] = 0;\n if (!msg.sender.send(refund))\n refunds[msg.sender] = refund;\n }\n}\n```\n\nNote that we did not use throw on a failed send because we are able to revert all state changes manually and not using throw has a lot less side-effects.\n\n## Using Throw\n\nThe throw statement is often quite convenient to revert any changes made to the state as part of the call (or whole transaction depending on how the function is called). You have to be aware, though, that it also causes all gas to be spent and is thus expensive and will potentially stall calls into the current function. Because of that, I would like to recommend to use it **only** in the following situations:\n\n#### 1. Revert Ether transfer to the current function\n\nIf a function is not meant to receive Ether or not in the current state or with the current arguments, you should use throw to reject the Ether. Using throw is the only way to reliably send back Ether because of gas and stack depth issues: The recipient might have an error in the fallback function that takes too much gas and thus cannot receive the Ether or the function might have been called in a malicious context with too high stack depth (perhaps even preceding the calling function).\n\nNote that accidentally sending Ether to a contract is not always a UX failure: You can never predict in which order or at which time transactions are added to a block. If the contract is written to only accept the first transaction, the Ether included in the other transactions has to be rejected.\n\n#### 2. Revert effects of called functions\n\nIf you call functions on other contracts, you can never know how they are implemented. This means that the effects of these calls are also not know and thus the only way to revert these effects is to use throw. Of course you should always write your contract to not call these functions in the first place, if you know you will have to revert the effects, but there are some use-cases where you only know that after the fact.\n\n## Loops and the Block Gas Limit\n\nThere is a limit of how much gas can be spent in a single block. This limit is flexible, but it is quite hard to increase it. This means that every single function in your contract should stay below a certain amount of gas in all (reasonable) situations. The following is a BAD example of a voting contract:\n\n```solidity\n/// THIS IS STILL A NEGATIVE EXAMPLE! DO NOT USE!\ncontract Voting {\n mapping(address => uint) voteWeight;\n address[] yesVotes;\n uint requiredWeight;\n address beneficiary;\n uint amount;\n function voteYes() { yesVotes.push(msg.sender); }\n function tallyVotes() {\n uint yesVotes;\n for (uint i = 0; i < yesVotes.length; ++i)\n yesVotes += voteWeight[yesVotes[i]];\n if (yesVotes > requiredWeight)\n beneficiary.send(amount);\n }\n}\n```\n\nThe contract actually has several issues, but the one I would like to highlight here is the problem of the loop: Assume that vote weights are transferrable and splittable like tokens (think of the DAO tokens as an example). This means that you can create an arbitrary number of clones of yourself. Creating such clones will increase the length of the loop in the tallyVotes function until it takes more gas than is available inside a single block.\n\nThis applies to anything that uses loops, also where loops are not explicitly visible in the contract, for example when you copy arrays or strings inside storage. Again, it is fine to have arbitrary-length loops if the length of the loop is controlled by the caller, for example if you iterate over an array that was passed as a function argument. But **never** create a situation where the loop length is controlled by a party that would not be the only one suffering from its failure.\n\nAs a side note, this was one reason why we now have the concept of blocked accounts inside the DAO contract: Vote weight is counted at the point where the vote is cast, to prevent the fact that the loop gets stuck, and if the vote weight would not be fixed until the end of the voting period, you could cast a second vote by just transferring your tokens and then voting again.\n\n## Receiving Ether / the fallback function\n\nIf you want your contract to receive Ether via the regular send() call, you have to make its fallback function cheap. It can only use 2300, gas which neither allows any storage write nor function calls that send along Ether. Basically the only thing you should do inside the fallback function is log an event so that external processes can react on the fact. Of course any function of a contract can receive ether and is not tied to that gas restriction. Functions actually have to reject Ether sent to them if they do not want to receive any, but we are thinking about potentially inverting this behaviour in some future release.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/06/10/solidity-0.3.5-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/06/10/solidity-0.3.5-release-announcement.json deleted file mode 100644 index 9ecf0de2..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/06/10/solidity-0.3.5-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.5 Release Announcement","date":"2016-06-10","author":"Solidity Team","category":"Releases"},"content":"\n**Features:**\n\n- Context-dependent path remappings (different modules can use the same library in different versions)\n\n**Bugfixes:**\n\n- Type Checking: Dynamic return types were removed when fetching data from external calls, now they are replaced by an \"unusable\" type.\n- Type Checking: Overrides by constructors were considered making a function non-abstract.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.3.5).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/08/10/solidity-0.3.6-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/08/10/solidity-0.3.6-release-announcement.json deleted file mode 100644 index 6ef40525..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/08/10/solidity-0.3.6-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.6 Release Announcement","date":"2016-08-10","author":"Solidity Team","category":"Releases"},"content":"\nThis is the first release from the new \"solidity-standalone\" repository. It does not have dependencies to cpp-ethereum anymore and can be built just from the solidity github repository.\n\nNote that the optimizer was disabled in some situations which could lead to larger (but correcter) code.\n\n**Features:**\n\n- Formal verification: Take external effects on a contract into account.\n- Type Checker: Warning about unused return value of low-level calls and send.\n- Output: Source location and node id as part of AST output\n- Output: Source location mappings for bytecode\n- Output: Formal verification as part of json compiler output.\n\n**Bugfixes:**\n\n- Commandline Interface: Do not crash if input is taken from stdin.\n- Scanner: Correctly support unicode escape codes in strings.\n- JSON output: Fix error about relative / absolute source file names.\n- JSON output: Fix error about invalid utf8 strings.\n- Code Generator: Dynamic allocation of empty array caused infinite loop.\n- Code Generator: Correctly calculate gas requirements for memcpy precompile.\n- Optimizer: Clear known state if two code paths are joined.\n\nNote regarding the PPA: This version of the solc package conflicts with the cpp-ethereum package (because that still contains solidity). Please uninstall cpp-ethereum before installing solc until we also have a new cpp-ethereum release.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.3.6).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/09/01/formal-methods-roadmap.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/09/01/formal-methods-roadmap.json deleted file mode 100644 index 12dea6b6..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/09/01/formal-methods-roadmap.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Dev Update: Formal Methods","date":"2016-09-01","author":"Christian Reitwiessner","category":"Announcements"},"content":"\n_This post was originally published on the [Ethereum blog](https://blog.ethereum.org/2016/09/01/formal-methods-roadmap/)._\n\nToday, I am delighted to announce that Yoichi Hirai ([@pirapira](https://github.com/pirapira) on github) is joining the Ethereum project as a formal verification engineer. He holds a PhD from the University of Tokyo on the topic of formalizing communicating parallel processes and created formal verification tools for Ethereum in his spare time.\n\nIn his own words:\n\n> I’m joining Ethereum as a formal verification engineer. My reasoning: formal verification makes sense as a profession only in a rare situation where\n>\n> - the verification target follows short, simple rules (EVM);\n> - the target carries lots of value (Eth and other tokens);\n> - the target is tricky enough to get right (any nontrivial program);\n> - and the community is aware that it’s important to get it right (maybe).\n>\n> My last job as a formal verification engineer prepared me for this challenge. Besides, around Ethereum, I’ve been playing with two projects: an online service called [Dr. Y’s Ethereum Contract Analyzer](http://dr-y.no-ip.net/) and [a github repository](https://github.com/pirapira/evmverif/) containing Coq proofs. These projects are at the opposite extremes of a spectrum between an automatic analyzer and a manual proof development.\n>\n> Considering the collective impact to the whole ecosystem, I’m attracted to an automatic analyzer integrated in a compiler. Many people would run it and some would notice its warnings. On the other hand, since any surprising behavior can be considered a bug, any surprise should be removed, but computers cannot sense the human expectations. For telling human expectations to the machines, some manual efforts are necessary. The contract developers need to specify the contract in a machine-readable language and give hints to the machines why the implementation matches the specification (in most cases the machine wants more and more hints until the human realizes a bug, frequently in the specification). This is labor intensive, but such manual efforts are justifiable when a contract is designed to carry multi-million dollars.\n\nHaving a person dedicated to formal methods not only gives us the ability to move faster in this important but also fruitful area, it hopefully also allows us to communicate better with academia in order to connect the various singular projects that have appeared in the past weeks.\n\nHere are some projects we would like to tackle in the future, most of them will probably be done in cooperation with other teams.\n\nSolidity:\n\n- extending the Solidity to Why3 translation to the full Solidity language (maybe switch to F\\*)\n- formal specification of Solidity\n- syntax and semantics of modal logics for reasoning about multiple parties\n\nCommunity:\n\n- creating a map of formal verification projects on Ethereum\n- collecting buggy Solidity codes, for benchmarking automatic analyzers\n- analyzing deployed contracts on the blockchain for vulnerabilities (related: [OYENTE tool](https://eprint.iacr.org/2016/633))\n\nTools:\n\n- provide a human- and machine-readable formalization of the EVM, which can also be executed\n- developing formally verified libraries in EVM bytecode or Solidity\n- developing a formally verified compiler for a tiny language\n- explore the potential for interaction-oriented languages (\"if X happens then do Y; you can only do Z if you did A\")\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/09/08/solidity-0.4.0-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/09/08/solidity-0.4.0-release-announcement.json deleted file mode 100644 index 8da91da9..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/09/08/solidity-0.4.0-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.0 Release Announcement","date":"2016-09-08","author":"Solidity Team","category":"Releases"},"content":"\n**Note:** Version 0.4.0 is unable to compile libraries. Please upgrade to 0.4.1.\n\nThis release deliberately breaks backwards compatibility mostly to enforce some safety features. The most important change is that you have to explicitly specify if functions can receive ether via the `payable` modifier. Furthermore, more situations cause exceptions to be thrown.\n\n**Minimal changes to be made for upgrade:**\n\n- Add `payable` to all functions that want to receive Ether (including the constructor and the fallback function).\n- Change `_` to `_;` in modifiers.\n- Add version pragma to each file: `pragma solidity ^0.4.0;`\n\n**Breaking Changes:**\n\n- Source files have to specify the compiler version they are compatible with using e.g. `pragma solidity ^0.4.0;` or\n `pragma solidity >=0.4.0 <0.4.8;`\n- Functions that want to receive Ether have to specify the\n new `payable` modifier (otherwise they throw).\n- Contracts that want to receive Ether with a plain \"send\"\n have to implement a fallback function with the `payable`\n modifier. Contracts now throw if no payable fallback\n function is defined and no function matches the signature.\n- Failing contract creation through \"new\" throws.\n- Division / modulus by zero throws.\n- Function call throws if target contract does not have code\n- Modifiers are required to contain `_` (use `if (false) _` as a workaround if needed).\n- Modifiers: return does not skip part in modifier after `_`.\n- Placeholder statement `_` in modifier now requires explicit `;`.\n- `ecrecover` now returns zero if the input is malformed (it previously returned garbage).\n- The `constant` keyword cannot be used for constructors or the fallback function.\n- Removed `interface` (Solidity interface) output option\n- JSON AST: General cleanup, renamed many nodes to match their C++ names.\n- JSON output: `srcmap-runtime` renamed to `srcmapRuntime`.\n- Moved (and reworked) standard library contracts from inside the compiler to github.com/ethereum/solidity/std\n (`import \"std\";` or `import owned;` do not work anymore).\n- Confusing and undocumented keyword `after` was removed.\n- New reserved words: `abstract`, `hex`, `interface`, `payable`, `pure`, `static`, `view`.\n\n**Features:**\n\n- Hexadecimal string literals: `hex\"ab1248fe\"`\n- Internal: Inline assembly usable by the code generator.\n- Commandline interface: Using `-` as filename allows reading from stdin.\n- Interface JSON: Fallback function is now part of the ABI.\n- Interface: Version string now _semver_ compatible.\n- Code generator: Do not provide \"new account gas\" if we know the called account exists.\n\n**Bugfixes:**\n\n- JSON AST: Nodes were added at wrong parent\n- Why3 translator: Crash fix for exponentiation\n- Commandline Interface: linking libraries with underscores in their name.\n- Type Checker: Fallback function cannot return data anymore.\n- Code Generator: Fix crash when `sha3()` was used on unsupported types.\n- Code Generator: Manually set gas stipend for `.send(0)`.\n\nLots of changes to the documentation mainly by voluntary external contributors.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.0).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/09/09/solidity-0.4.1-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/09/09/solidity-0.4.1-release-announcement.json deleted file mode 100644 index 4e6a5f81..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/09/09/solidity-0.4.1-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.1 Release Announcement","date":"2016-09-09","author":"Solidity Team","category":"Releases"},"content":"\nThis is a bugfix release that fixes an error when compiling libraries with the latest version 0.4.0.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.1).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/09/17/solidity-0.4.2-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/09/17/solidity-0.4.2-release-announcement.json deleted file mode 100644 index 903865c6..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/09/17/solidity-0.4.2-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.2 Release Announcement","date":"2016-09-17","author":"Solidity Team","category":"Releases"},"content":"\n**Bugfixes:**\n\n- Code Generator: Fix library functions being called from payable functions.\n- Type Checker: Fixed a crash about invalid array types.\n- Code Generator: Fixed a call gas bug that became visible after\n version 0.4.0 for calls where the output is larger than the input.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.2).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/10/25/solidity-0.4.3-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/10/25/solidity-0.4.3-release-announcement.json deleted file mode 100644 index 6472c247..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/10/25/solidity-0.4.3-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.3 Release Announcement","date":"2016-10-25","author":"Solidity Team","category":"Releases"},"content":"\nThis is a real bugfix release as you can see from the changelog below. The most important fix concerns the optimizer which generated invalid code connected to the `SHA3` opcode in certain situations.\n\n**Features:**\n\n- Inline assembly: support both `suicide` and `selfdestruct` opcodes\n (note: `suicide` is deprecated).\n- Inline assembly: issue warning if stack is not balanced after block.\n- Include `keccak256()` as an alias to `sha3()`.\n- Support shifting constant numbers.\n\n**Bugfixes:**\n\n- Commandline interface: Disallow unknown options in `solc`.\n- Name resolver: Allow inheritance of `enum` definitions.\n- Type checker: Proper type checking for bound functions.\n- Type checker: fixed crash related to invalid fixed point constants\n- Type checker: fixed crash related to invalid literal numbers.\n- Type checker: `super.x` does not look up `x` in the current contract.\n- Code generator: expect zero stack increase after `super` as an expression.\n- Code generator: fix an internal compiler error for `L.Foo` for `enum Foo` defined in library `L`.\n- Code generator: allow inheritance of `enum` definitions.\n- Inline assembly: support the `address` opcode.\n- Inline assembly: fix parsing of assignment after a label.\n- Inline assembly: external variables of unsupported type (such as `this`, `super`, etc.)\n are properly detected as unusable.\n- Inline assembly: support variables within modifiers.\n- Optimizer: fix related to stale knowledge about SHA3 operations\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.3).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/01/security-alert-solidity-variables-can-overwritten-storage.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/01/security-alert-solidity-variables-can-overwritten-storage.json deleted file mode 100644 index 6914ea03..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/01/security-alert-solidity-variables-can-overwritten-storage.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Security Alert: Variables can be overwritten in storage","date":"2016-11-01","author":"Christian Reitwiessner","category":"Security Alerts"},"content":"\n_This post was originally published on the [Ethereum blog](https://blog.ethereum.org/2016/11/01/security-alert-solidity-variables-can-overwritten-storage/)._\n\n**Summary:** In some situations, variables can overwrite other variables in storage.\n\n**Affected Solidity compiler versions: **0.1.6 to 0.4.3 (including 0.4.4 pre-release versions)\n\n**Detailed description:**\n\nStorage variables that are smaller than 256 bits are packed together into the same 256 bit slot if they can fit. If a value larger than what is allowed by the type is assigned to the first variable, that value will overwrite the second variable.\n\nThis means if an attacker can cause an overflow in the value of the first variable, then the second variable can be modified. Creating an overflow in the first variable is possible using arithmetics or by directly passing in a value from the call data (values in call data are aligned to 32 bytes, and padding is neither verified nor enforced).\n\nContracts that only use the types listed below for state variables are **not** affected. Arrays, mappings and structs (based on those following types) are also **not** affected:\n\n- signed integers, including sizes smaller than 256 bits\n- bytesNN types, including sizes smaller than 256 bits\n- unsigned integers (uint) of 256 bits\n\nContracts with types smaller than 256 bits that are never next to each other (note that state variables of base contracts are \"pulled in\") are **not** affected.\n\nThe Ethereum multisignature wallet contract is **not** affected.\nNote that addresses take up 160 bits, so contracts that only use addresses and 256-bit types are safe. Additionally, addresses and booleans are almost never manipulated via arithmetic operations in practice, so contracts using only addresses, booleans and 256 bit types should also be safe.\n\nThe following contracts may be affected:\nContracts containing two or more contiguous state variables where the sum of their sizes is less than 256 bits and the first state variable is not a signed integer and not of bytesNN type.\n\nTypes smaller than 256 bits include:\nbool, enums, uint8, ..., uint248, int8, ..., int248, address, any contract type\n\n**Recommended action:**\n\n- Recompile contracts that have not yet been deployed using at least Solidity release 0.4.4 (not the pre-release or nightly version).\n- Deactivate, remove funds from, or upgrade already deployed contracts.\n\nThis vulnerability was found by [@catageek](https://github.com/catageek): [https://github.com/ethereum/solidity/issues/1306](https://github.com/ethereum/solidity/issues/1306)\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/01/solidity-0.4.4-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/01/solidity-0.4.4-release-announcement.json deleted file mode 100644 index 97382318..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/01/solidity-0.4.4-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.4 Release Announcement","date":"2016-11-01","author":"Solidity Team","category":"Releases"},"content":"\nThis is a bugfix release that fixes a storage corruption that appears when multiple variables are stored in the same slot ([details](https://blog.soliditylang.org/2016/11/01/security-alert-solidity-variables-can-overwritten-storage/)).\n\n**Bugfixes:**\n\n- Type checker: forbid signed exponential that led to an incorrect use of EXP opcode.\n- Code generator: properly clean higher order bytes before storing in storage.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.4).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/09/analysis-storage-corruption-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/09/analysis-storage-corruption-bug.json deleted file mode 100644 index 5bd4ff9a..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/09/analysis-storage-corruption-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Analysis of Storage Corruption Bug","date":"2016-11-09","author":"Christian Reitwiessner","category":"Security Alerts"},"content":"\n_This post was originally published on the [Ethereum blog](https://blog.ethereum.org/2016/11/09/analysis-storage-corruption-bug/)._\n\nThis blog post provides an update on our findings following the discovery of the [storage corruption bug last week](https://blog.soliditylang.org/2016/11/01/security-alert-solidity-variables-can-overwritten-storage/).\nIn summary, the bug was much less severe than we initially thought. The small number of affected contracts we found is either only exploitable by the owner, or the exploit can only cause a disruption in the user interface and not in the actual contract logic. All exploitable contracts/dapps we reviewed can be fixed without having to upgrade the contract itself. Of course, please still check your contracts to be safe.\n\nFollowing the discovery of the storage corruption bug in the Solidity compiler and the realization that it may have serious effects on already-deployed contracts that cannot be updated, we started analyzing how common the bug is and how exploitable contracts can be addressed.\n\nWe focused on contracts with source code published on etherscan because important or popular smart contracts usually have their source code published there in order to gain trust from their users, who can then verify the compilation. Furthermore, if the source code is not available, it is also much harder for an attacker to find a suitable exploit. Finally, contracts that are privately used (and thus do not require publishing their source code) usually check that they are called from a certain address, and thus an attacker has no means to write to their storage.\n\nIn order to automate the process of checking all contracts on etherscan, we created a modified version of the Solidity compiler that can automatically detect the conditions for triggering the bug. This technique has already reduced the number of potentially vulnerable contracts to 167. We then manually checked those contracts for potential corruption of storage that would make them vulnerable to attacks.\n\nIt turns out that only ten contracts were vulnerable, so we were able to contact most of the contract owners/developers. Seven out of ten of those contracts are only exploitable by the owner in that they are allowed to change certain parameters outside their permitted range, or allowed to unlock a previously locked contract. One contract is exploitable by unprivileged users but have other major flaws in its design. The other two contracts found to be exploitable by unprivileged users either provided no advantages if exploited or only affected the user interface.\n\n## Why are only so few contracts exploitable?\n\nFirst, let us define what we mean by \"exploitable\":\n\nThe storage corruption bug is exploitable if it can be used to modify a variable in storage in a way that would not be possible without the bug, and this modification has consequences for the behaviour and use of the smart contract. For example, we do not consider a contract exploitable in the following situations:\n\n- The same account would be able to overwrite the variable in the same state of the contract by regular means.\n- Overwriting can only happen at construction time (note that we did not check whether overwriting occurred at that time).\n- Overwriting is only triggered in unlikely situations where the contract logic was broken anyway (for example, a 32-bit counter that is incremented once per block, oveflows).\n- Variables can be overwritten that are unused in the smart contract and look non-critical, but may be part of the public interface.\n\n**Why is this critical bug only exploitable in so few cases?**\n\nIt is a combination of the following factors that together multiply and dramatically reduce the probability of exploitability.\n\n1. Since small types only provide an advantage in very rare cases, they are seldomly used.\n2. Small types must be adjacent to each other in storage – a single large type in between them prevents the bug from being triggered.\n3. State variables are often assigned one after the other, which removes the corruption at the second assignment.\n4. The combination of \"address\" and \"bool\" is most common among the cases that are left, but here, the address variable is often an \"owner\" that is assigned from `msg.sender` and thus not exploitable. Even if the owner can be changed, the flag is often a flag that can be still be set by the owner through other means.\n\n## How to fix affected contracts\n\nA large majority of the exploitable contracts are only exploitable by the contract owner, administrator or developer, particularly though a single function that allows the owner to be changed. The exploit allows a further escalation of privileges for the owner. In order to prevent the owner from taking advantage of this exploit, a proxy contract can be installed between the owner and the affected contract. This proxy contract forwards calls from the owner, but disallows calling the exploitable functions. If calling the exploitable functions is still necessary, the proxy contract can prevent malicious data from being forwarded to the contract.\n\nIf you have specific questions or concerns regarding your contracts, please contact us on [Gitter](https://gitter.im/ethereum/solidity).\n\n---\n\n**A FRIENDLY IMPORTANT NOTE FROM LEGAL**\n\nThe statements in this post are recommendations to address the storage corruption bug in the Solidity compiler. As you know, we are working in an emergent and evolving technical space. The same elements that make this work exciting – the innovation, the impact, the growing understanding of how contracts function – are the same ones that make it risky. If you choose to implement the recommendations in this post and continue to participate, you should make sure you understand how it impacts your specific contract and you should understand that there are risks involved. By choosing to implement these recommendations, you alone assume the risks of the consequences.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/21/solidity-0.4.5-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/21/solidity-0.4.5-release-announcement.json deleted file mode 100644 index 1843bf4b..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/21/solidity-0.4.5-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.5 Release Announcement","date":"2016-11-21","author":"Solidity Team","category":"Releases"},"content":"\nThis Solidity release adds [function types](https://solidity.readthedocs.io/en/develop/types.html#function-types). Use-cases include supplying callbacks for asynchronous or off-chain operations or generic library features (for example map-reduce-style programming). This release also improves the safety of enums and sending Ether to a contract constructor.\n\n**Features:**\n\n- Function types\n- Do-while loops: support for a `do while ();` control structure\n- Inline assembly: support `invalidJumpLabel` as a jump label.\n- Type checker: now more eagerly searches for a common type of an inline array with mixed types\n- Code generator: generates a runtime error when an out-of-range value is converted into an enum type.\n\n**Bugfixes:**\n\n- Inline assembly: calculate stack height warning correctly even when local variables are used.\n- Code generator: check for value transfer in non-payable constructors.\n- Parser: disallow empty enum definitions.\n- Type checker: disallow conversion between different enum types.\n- Interface JSON: do not include trailing new line.\n\nSwarm hash of js compiler: bzzr://de94c41f727124a5b02bd1db087e6bcba19a682c5d89bf3cdaa650e9fdd08403\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.5).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/22/solidity-0.4.6-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/22/solidity-0.4.6-release-announcement.json deleted file mode 100644 index a1aaeb9d..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/11/22/solidity-0.4.6-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.6 Release Announcement","date":"2016-11-22","author":"Solidity Team","category":"Releases"},"content":"\n**Bugfixes:**\n\n- Optimizer: Knowledge about state was not correctly cleared for JUMPDESTs\n\nSwarm hash of js compiler: bzzr:/b873fa122233c91b1531527c390f6ca49df4d2a2c5f75706f4b612a0c813cb6a\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.6).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/12/15/solidity-0.4.7-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/12/15/solidity-0.4.7-release-announcement.json deleted file mode 100644 index d1561ac1..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2016/12/15/solidity-0.4.7-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.7 Release Announcement","date":"2016-12-15","author":"Solidity Team","category":"Releases"},"content":"\n**Features:**\n\n- Bitshift operators.\n- Type checker: Warn when `msg.value` is used in non-payable function.\n- Code generator: Inject the Swarm hash of a metadata file into the bytecode.\n- Code generator: Replace expensive memcpy precompile by simple assembly loop.\n- Optimizer: Some dead code elimination.\n\n**Bugfixes:**\n\n- Code generator: throw if calling the identity precompile failed during memory (array) copying.\n- Type checker: string literals that are not valid UTF-8 cannot be converted to string type\n- Code generator: any non-zero value given as a boolean argument is now converted into 1.\n- AST Json Converter: replace `VariableDefinitionStatement` nodes with `VariableDeclarationStatement`\n- AST Json Converter: fix the camel case in `ElementaryTypeNameExpression`\n- AST Json Converter: replace `public` field with `visibility` in the function definition nodes\n\nSwarm hash of javascript binary: bzzr://de00cf8d235867a00d831e0055b376420789977d276c02e6ff0d1d5b00f5d84d\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.7).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/01/13/solidity-0.4.8-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/01/13/solidity-0.4.8-release-announcement.json deleted file mode 100644 index 505cfdeb..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/01/13/solidity-0.4.8-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.8 Release Announcement","date":"2017-01-13","author":"Solidity Team","category":"Releases"},"content":"\n**Features:**\n\n- Optimiser: Performance improvements.\n- Output: Print assembly in new standardized Solidity assembly format.\n\n**Bugfixes:**\n\n- Remappings: Prefer longer context over longer prefix.\n- Type checker, code generator: enable access to events of base contracts' names.\n- Imports: `import \".dir/a\"` is not a relative path. Relative paths begin with directory `.` or `..`.\n- Type checker: disallow inheritances of different kinds (e.g. a function and a modifier) of members of the same name\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.8).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/01/31/solidity-0.4.9-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/01/31/solidity-0.4.9-release-announcement.json deleted file mode 100644 index 54a2ec6a..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/01/31/solidity-0.4.9-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.9 Release Announcement","date":"2017-01-31","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes quite some bugs and also adds several new features.\n\n**Things to look out for:**\n\n- To disambiguate contracts and libraries of the same name in different files, everything is now prefixed by \"filename:\". This applies to the compiler output, the linker input and other things.\n- Internal exceptions are now thrown by using an invalid opcode (0xfe), manual exceptions still use an invalid jump.\n\n**Features:**\n\n- Compiler interface: Contracts and libraries can be referenced with a `file:` prefix to make them unique.\n- Compiler interface: Report source location for \"stack too deep\" errors.\n- AST: Use deterministic node identifiers.\n- Inline assembly: introduce `invalid` (EIP141) as an opcode.\n- Type system: Introduce type identifier strings.\n- Type checker: Warn about invalid checksum for addresses and deduce type from valid ones.\n- Metadata: Do not include platform in the version number.\n- Metadata: Add option to store sources as literal content.\n- Code generator: Extract array utils into low-level functions.\n- Code generator: Internal errors (array out of bounds, etc.) now cause a reversion by using an invalid\n instruction (0xfe - EIP141) instead of an invalid jump. Invalid jump is still kept for explicit throws.\n\n**Bugfixes:**\n\n- Code generator: Allow recursive structs.\n- Inline assembly: Disallow variables named like opcodes.\n- Type checker: Allow multiple events of the same name (but with different arities or argument types)\n- Natspec parser: Fix error with `@param` parsing and whitespace.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.9).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/03/15/solidity-0.4.10-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/03/15/solidity-0.4.10-release-announcement.json deleted file mode 100644 index b6357b85..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/03/15/solidity-0.4.10-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.10 Release Announcement","date":"2017-03-15","author":"Solidity Team","category":"Releases"},"content":"\nThis release is focused on stability and also introduces some new smart contract safety features: `require`, `assert` and `transfer`. Note that the new `revert` function will only be gas-efficient starting from homestead.\n\n**Features:**\n\n- Add `assert(condition)`, which throws if condition is false (meant for internal errors).\n- Add `require(condition)`, which throws if condition is false (meant for invalid input).\n- Commandline interface: Do not overwrite files unless forced.\n- Introduce `.transfer(value)` for sending Ether.\n- Code generator: Support `revert()` to abort with rolling back, but not consuming all gas.\n- Inline assembly: Support `revert` (EIP140) as an opcode.\n- Parser: Support scientific notation in numbers (e.g. `2e8` and `200e-2`).\n- Type system: Support explicit conversion of external function to address.\n- Type system: Warn if base of exponentiation is literal (result type might be unexpected).\n- Type system: Warn if constant state variables are not compile-time constants.\n\n**Bugfixes:**\n\n- Commandline interface: Always escape filenames (replace `/`, `:` and `.` with `_`).\n- Commandline interface: Do not try creating paths `.` and `..`.\n- Commandline interface: Allow long library names.\n- Parser: Disallow octal literals.\n- Type system: Fix a crash caused by continuing on fatal errors in the code.\n- Type system: Disallow compound assignment for tuples.\n- Type system: Detect cyclic dependencies between constants.\n- Type system: Disallow arrays with negative length.\n- Type system: Fix a crash related to invalid binary operators.\n- Type system: Disallow `var` declaration with empty tuple type.\n- Type system: Correctly convert function argument types to pointers for member functions.\n- Type system: Move privateness of constructor into AST itself.\n- Inline assembly: Charge one stack slot for non-value types during analysis.\n- Assembly output: Print source location before the operation it refers to instead of after.\n- Optimizer: Stop trying to optimize tricky constants after a while.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.10).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/05/03/solidity-0.4.11-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/05/03/solidity-0.4.11-release-announcement.json deleted file mode 100644 index fd2d63d9..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/05/03/solidity-0.4.11-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.11 Release Announcement","date":"2017-05-03","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug in the optimizer (more about this on the [blog](https://blog.soliditylang.org/2017/05/03/solidity-optimizer-bug/)), introduces the standard JSON interface, adds `interface` contracts and implements some additional safety checks.\n\nThe standard [JSON interface](https://docs.soliditylang.org/en/develop/using-the-compiler.html#compiler-input-and-output-json-description) provides a unified way to invoke the Solidity compiler in order to ease cross-platform adoption and compilation verification.\n\n**Features:**\n\n- Implement the Standard JSON Input / Output API\n- Support `interface` contracts.\n- C API (`jsonCompiler`): Add the `compileStandard()` method to process a Standard JSON I/O.\n- Commandline interface: Add the `standard-json` parameter to process a Standard JSON I/O.\n- Commandline interface: Support `allow-paths` to define trusted import paths. Note: the\n path(s) of the supplied source file(s) is always trusted.\n- Inline Assembly: Storage variable access using `_slot` and `_offset` suffixes.\n- Inline Assembly: Disallow blocks with unbalanced stack.\n- Static analyzer: Warn about statements without effects.\n- Static analyzer: Warn about unused local variables, parameters, and return parameters.\n- Syntax checker: issue deprecation warning for unary '+'\n\n**Bugfixes:**\n\n- Assembly output: Implement missing AssemblyItem types.\n- Compiler interface: Fix a bug where source indexes could be inconsistent between Solidity compiled\n with different compilers (clang vs. gcc) or compiler settings. The bug was visible in AST\n and source mappings.\n- Gas Estimator: Reflect the most recent fee schedule.\n- Type system: Contract inheriting from base with unimplemented constructor should be abstract.\n- Optimizer: Number representation bug in the constant optimizer fixed.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.11).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/05/03/solidity-optimizer-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/05/03/solidity-optimizer-bug.json deleted file mode 100644 index 4b1184ad..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/05/03/solidity-optimizer-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Optimizer Bug","date":"2017-05-03","author":"Martin Swende","category":"Security Alerts"},"content":"\n_This post was originally published on the [Ethereum blog](https://blog.ethereum.org/2017/05/03/solidity-optimizer-bug/)._\n\nA bug in the Solidity optimizer was reported through the [Ethereum Foundation Bounty program](https://bounty.ethereum.org/), by Christoph Jentzsch. This bug is patched as of 2017-05-03, with the release of Solidity 0.4.11.\n\n## Background\n\nThe bug in question concerned how the optimizer optimizes on constants in the byte code. By \"byte code constants\", we mean anything which is `PUSH`ed on the stack (not to be confused with Solidity constants). For example, if the value `0xfffffffffffffffffffffffffffffffffffffffffffffffe` is `PUSH`ed, then the optimizer can either do `PUSH32 0xfffffffffffffffffffffffffffffffffffffffffffffffe`, or choose to encode this as `PUSH1 1; NOT;`.\n\nAn error in the optimizer made optimizations of byte code constants fail for certain cases by producing a routine that did not properly recreate the original constant.\n\nThe behavior described in the reported bug was found in a contract in which one method ceased functioning when another - totally unrelated - method was added to the contract. After analysis, it was determined that a number of conditions must exist at once for the bug to trigger. Any combination of conditions that would trigger the bug would consistently have the following two conditions:\n\n- The constant needs to start with `0xFF...` and end with a long series of zeroes (or vice versa).\n- The same constant needs to be used in multiple locations, for the optimizer to choose to optimize this particular constant. Alternatively, it needs to be used in the constructor, which optimises for size rather than gas.\n\nIn addition to the two conditions above, there are further, more complicated conditions that are required.\n\n## Analysis\n\nThis bug is present in all released versions of Solidity from at least as far back as summer 2015 to the present. Although the bug has been present since 2015, it seems very hard to trigger by “random” code:\n\nWe performed a static analysis of all contract code deployed on the blockchain, and found no occurrence of such an invalidly generated routine. Note, the fact that we have not found a bug in all the contract code does not guarantee the absence of such occurrences.\n\n## Improvements\n\nIn order to provide better transparency and increased awareness of bugs in Solidity, we have started exporting information about Solidity-related vulnerabilities as JSON-files in the Solidity code repository([1](https://github.com/ethereum/solidity/blob/develop/docs/bugs.json), [2](https://github.com/ethereum/solidity/blob/develop/docs/bugs_by_version.json)). We hope that block explorers will integrate this information along with other contract-related information.\n\nEtherscan has already implemented this, which can be seen [here](https://etherscan.io/address/0x83b5c924b74e0dc12386fa110c28faa1efedb07b#code) and [here](https://etherscan.io/contractsVerified).\n\nConcerning the bug itself, we added a mini-EVM to the optimizer which verifies the correctness of each generated routine at compile time.\n\nFurthermore, work has already started on a fully-specified and more high-level intermediate language. Future optimizer routines on this language will be much easier to understand and audit and it will replace the current optimizer.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/07/03/solidity-0.4.12-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/07/03/solidity-0.4.12-release-announcement.json deleted file mode 100644 index 14d1495d..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/07/03/solidity-0.4.12-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.12 Release Announcement","date":"2017-07-03","author":"Solidity Team","category":"Releases"},"content":"\nThis release introduces the AST export, solidifies inline assembly, introduces some more warnings and fixes several bugs.\n\nManual jumps in assembly are deprecated in favour of the structured constructs `switch`, `for` and function calls also to provide better portability in the future.\n\n**Features:**\n\n- Assembly: Add `CREATE2` (EIP86), `STATICCALL` (EIP214), `RETURNDATASIZE` and `RETURNDATACOPY` (EIP211) instructions.\n- Assembly: Display auxiliary data in the assembly output.\n- Assembly: Renamed `SHA3` to `KECCAK256`.\n- AST: export all attributes to JSON format.\n- C API (`jsonCompiler`): Use the Standard JSON I/O internally.\n- Code Generator: Added the Whiskers template system.\n- Inline Assembly: `for` and `switch` statements.\n- Inline Assembly: Function definitions and function calls.\n- Inline Assembly: Introduce `keccak256` as an opcode. `sha3` is still a valid alias.\n- Inline Assembly: Present proper error message when not supplying enough arguments to a functional\n instruction.\n- Inline Assembly: Warn when instructions shadow Solidity variables.\n- Inline Assembly: Warn when using `jump`s.\n- Remove obsolete Why3 output.\n- Type Checker: Enforce strict UTF-8 validation.\n- Type Checker: Warn about copies in storage that might overwrite unexpectedly.\n- Type Checker: Warn about type inference from literal numbers.\n- Static Analyzer: Warn about deprecation of `callcode`.\n\n**Bugfixes:**\n\n- Assembly: mark `MLOAD` to have side effects in the optimiser.\n- Code Generator: Fix ABI encoding of empty literal string.\n- Code Generator: Fix negative stack size checks.\n- Code generator: Use `REVERT` instead of `INVALID` for generated input validation routines.\n- Inline Assembly: Enforce function arguments when parsing functional instructions.\n- Optimizer: Disallow optimizations involving `MLOAD` because it changes `MSIZE`.\n- Static Analyzer: Unused variable warnings no longer issued for variables used inside inline assembly.\n- Type Checker: Fix address literals not being treated as compile-time constants.\n- Type Checker: Fixed crash concerning non-callable types.\n- Type Checker: Fixed segfault with constant function parameters\n- Type Checker: Disallow comparisons between mapping and non-internal function types.\n- Type Checker: Disallow invoking the same modifier multiple times.\n- Type Checker: Do not treat strings that look like addresses as addresses.\n- Type Checker: Support valid, but incorrectly rejected UTF-8 sequences.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.12).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/07/06/solidity-0.4.13-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/07/06/solidity-0.4.13-release-announcement.json deleted file mode 100644 index bc2544d2..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/07/06/solidity-0.4.13-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.13 Release Announcement","date":"2017-07-06","author":"Solidity Team","category":"Releases"},"content":"\nThis is a small bugfix release that fixes several trivial but very annoying bugs that were introduced with 0.4.12. We also deprecate some old features in preparation of the breaking release 0.5.0.\n\n**Features:**\n\n- Syntax Checker: Deprecated `throw` in favour of `require()`, `assert()` and `revert()`.\n- Type Checker: Warn if a local storage reference variable does not explicitly use the keyword `storage`.\n\n**Bugfixes:**\n\n- Code Generator: Correctly unregister modifier variables.\n- Compiler Interface: Only output AST if analysis was successful.\n- Error Output: Do not omit the error type.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.13).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/07/31/solidity-0.4.14-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/07/31/solidity-0.4.14-release-announcement.json deleted file mode 100644 index 32832849..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/07/31/solidity-0.4.14-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.14 Release Announcement","date":"2017-07-31","author":"Solidity Team","category":"Releases"},"content":"\nThis release contains several new features and bugfixes and also an important security fix: The `ecrecover` function can be forced to return invalid data, which can be used to bypass authentication in very special circumstances.\n\n**Features:**\n\n- C API (`jsonCompiler`): Export the `license` method.\n- Code Generator: Optimise the fallback function, by removing a useless jump.\n- Inline Assembly: Show useful error message if trying to access calldata variables.\n- Inline Assembly: Support variable declaration without initial value (defaults to 0).\n- Metadata: Only include files which were used to compile the given contract.\n- Type Checker: Disallow value transfers to contracts without a payable fallback function.\n- Type Checker: Include types in explicit conversion error message.\n- Type Checker: Raise proper error for arrays too large for ABI encoding.\n- Type checker: Warn if using `this` in a constructor.\n- Type checker: Warn when existing symbols, including builtins, are overwritten.\n\n**Bugfixes:**\n\n- Code Generator: Properly clear return memory area for ecrecover.\n- Type Checker: Fix crash for some assignment to non-lvalue.\n- Type Checker: Fix invalid \"specify storage keyword\" warning for reference members of structs.\n- Type Checker: Mark modifiers as internal.\n- Type Checker: Re-allow multiple mentions of the same modifier per function.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.14).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/08/08/solidity-0.4.15-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/08/08/solidity-0.4.15-release-announcement.json deleted file mode 100644 index bc62f8b2..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/08/08/solidity-0.4.15-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.15 Release Announcement","date":"2017-08-08","author":"Solidity Team","category":"Releases"},"content":"\nThis is mainly a bugfix release that corrects a problem with the return value of the low-level `delegatecall` function and removes some invalid warning messages.\n\n**Features:**\n\n- Type Checker: Show unimplemented function if trying to instantiate an abstract class.\n\n**Bugfixes:**\n\n- Code Generator: `.delegatecall()` should always return execution outcome.\n- Code Generator: Provide \"new account gas\" for low-level `callcode` and `delegatecall`.\n- Type Checker: Constructors must be implemented if declared.\n- Type Checker: Disallow the `.gas()` modifier on `ecrecover`, `sha256` and `ripemd160`.\n- Type Checker: Do not mark overloaded functions as shadowing other functions.\n- Type Checker: Internal library functions must be implemented if declared.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.15).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/08/24/solidity-0.4.16-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/08/24/solidity-0.4.16-release-announcement.json deleted file mode 100644 index e7f0964d..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/08/24/solidity-0.4.16-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.16 Release Announcement","date":"2017-08-24","author":"Solidity Team","category":"Releases"},"content":"\nThis release introduces several new features, some of which have to be\nexplicitly activated using `pragma experimental ;`.\n\nWe split the `constant` keyword for functions into `pure` (neither reads from nor writes to the state)\nand `view` (does not modify the state). They are not enforced yet, but will most likely make use\nof the the new STATIC_CALL feature after Metropolis.\n\nFurthermore, the ABI encoder was re-implemented in a much cleaner way using our new intermediate language. It can encode arbitrarily nested arrays and will also be able to encode structs starting from the next release. Please try it out using `pragma experimental ABIEncoderV2;` and check if you have any issues with the encoder. It currently generates larger code than the old encoder, but we hope to fix that soon.\n\nFinally, solc now include experimental support for automated overflow and assertion checking at compile-time using the SMT solver Z3. It is active if you use `pragma experimental SMTChecker;` and if solc was compiled with Z3 support. The latter is currently only the case for the PPA builds (or if you build from source and have libz3-dev in your system), but we also have a solution in the pipeline that will make it work for solc-js (and thus remix).\n\n**Features:**\n\n- ABI JSON: Include new field `stateMutability` with values `pure`, `view`, `nonpayable` and `payable`.\n- Analyzer: Experimental partial support for Z3 SMT checker (\"SMTChecker\").\n- Build System: Shared libraries (`libdevcore`, `libevmasm`, `libsolidity` and `liblll`) are no longer produced during the build process.\n- Code generator: Experimental new implementation of ABI encoder that can encode arbitrarily nested arrays (\"ABIEncoderV2\")\n- Metadata: Store experimental flag in metadata CBOR.\n- Parser: Display previous visibility specifier in error if multiple are found.\n- Parser: Introduce `pure` and `view` keyword for functions, `constant` remains an alias for `view` and pureness is not enforced yet, so use with care.\n- Static Analyzer: Warn about large storage structures.\n- Syntax Checker: Support `pragma experimental ;` to turn on experimental features.\n- Type Checker: More detailed error message for invalid overrides.\n- Type Checker: Warn about shifting a literal.\n\n**Bugfixes:**\n\n- Assembly Parser: Be more strict about number literals.\n- Assembly Parser: Limit maximum recursion depth.\n- Parser: Enforce commas between array and tuple elements.\n- Parser: Limit maximum recursion depth.\n- Type Checker: Crash fix related to `using`.\n- Type Checker: Disallow constructors in libraries.\n- Type Checker: Reject the creation of interface contracts using the `new` statement.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.16).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/09/21/solidity-0.4.17-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/09/21/solidity-0.4.17-release-announcement.json deleted file mode 100644 index b614ddd0..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/09/21/solidity-0.4.17-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.17 Release Announcement","date":"2017-09-21","author":"Solidity Team","category":"Releases"},"content":"\nAs we are getting closer to the next breaking release, we want to give everyone a heads up by introducing `pragma experimental \"v0.5.0\"` which already enables some of the new safety features of the 0.5.0 release.\n\nFurthermore, this release finally checks the modifiers `view` (used to be named `constant`) and `pure` on functions. As a rule of thumb, use `view` if your function does not modify storage and `pure` if it does not even read any state information - but the compiler will also suggest the tightest restriction itself.\n\nWe also worked further on the new ABI encoder: Functions can now return structs. Switch it on using `pragma experimental ABIEncoderV2`. It should already work, but still generates more expensive code.\n\nFinally, many new warnings were introduced and error messages improved.\n\n**Features:**\n\n- Assembly Parser: Support multiple assignment (`x, y := f()`).\n- Code Generator: Keep a single copy of encoding functions when using the experimental \"ABIEncoderV2\".\n- Code Generator: Partial support for passing `structs` as arguments and return parameters (requires `pragma experimental ABIEncoderV2;` for now).\n- General: Support `pragma experimental \"v0.5.0\";` to activate upcoming breaking changes.\n- General: Added `.selector` member on external function types to retrieve their signature.\n- Optimizer: Add new optimization step to remove unused `JUMPDEST`s.\n- Static Analyzer: Warn when using deprecated builtins `sha3` and `suicide`\n (replaced by `keccak256` and `selfdestruct`, introduced in 0.4.2 and 0.2.0, respectively).\n- Syntax Checker: Warn if no visibility is specified on contract functions.\n- Type Checker: Display helpful warning for unused function arguments/return parameters.\n- Type Checker: Do not show the same error multiple times for events.\n- Type Checker: Greatly reduce the number of duplicate errors shown for duplicate constructors and functions.\n- Type Checker: Warn on using literals as tight packing parameters in `keccak256`, `sha3`, `sha256` and `ripemd160`.\n- Type Checker: Enforce `view` and `pure`.\n- Type Checker: Enforce `view` / `constant` with error as experimental 0.5.0 feature.\n- Type Checker: Enforce fallback functions to be `external` as experimental 0.5.0 feature.\n\n**Bugfixes:**\n\n- ABI JSON: Include all overloaded events.\n- Parser: Crash fix related to parseTypeName.\n- Type Checker: Allow constant byte arrays.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.17).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/10/18/solidity-0.4.18-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/10/18/solidity-0.4.18-release-announcement.json deleted file mode 100644 index 1ef64b40..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/10/18/solidity-0.4.18-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.18 Release Announcement","date":"2017-10-18","author":"Solidity Team","category":"Releases"},"content":"\nThis release adds further backwards-incompatible security measures enabled via `pragma experimental \"v0.5.0\";` and contains another important feature: You can now select to compile only certain contracts using the `outputSelection` field of the [standard-json-io](https://solidity.readthedocs.io/en/develop/using-the-compiler.html#input-description) compiler interface, which should speed up tools like truffle tremendously.\n\nThere are also two important bug fixes: One was an oversight in the way `bytes` variables are allocated in memory and can reduce the memory requirements 32-fold. The second is a security fix: In extremely specific circumstances, it can happen that a regular function is called instead of the fallback function for an Ether transfer without data. These circumstances are: The function has to have a zero signature (one out of 4294967296), it has to be payable, the contract cannot have more than five (external) functions and it cannot have a fallback function.\n\n**Features:**\n\n- Code Generator: Always use all available gas for calls as experimental 0.5.0 feature\n (previously, some amount was retained in order to work in pre-Tangerine-Whistle\n EVM versions)\n- Parser: Better error message for unexpected trailing comma in parameter lists.\n- Standard JSON: Support the `outputSelection` field for selective compilation of supplied sources.\n- Syntax Checker: Unary `+` is now a syntax error as experimental 0.5.0 feature.\n- Type Checker: Disallow non-pure constant state variables as experimental 0.5.0 feature.\n- Type Checker: Do not add members of `address` to contracts as experimental 0.5.0 feature.\n- Type Checker: Force interface functions to be external as experimental 0.5.0 feature.\n- Type Checker: Require `storage` or `memory` keyword for local variables as experimental 0.5.0 feature.\n\n**Bugfixes:**\n\n- Code Generator: Allocate one byte per memory byte array element instead of 32.\n- Code Generator: Do not accept data with less than four bytes (truncated function\n signature) for regular function calls - fallback function is invoked instead.\n- Optimizer: Remove unused stack computation results.\n- Parser: Fix source location of VariableDeclarationStatement.\n- Type Checker: Allow `gas` in view functions.\n- Type Checker: Do not mark event parameters as shadowing state variables.\n- Type Checker: Prevent duplicate event declarations.\n- Type Checker: Properly check array length and don't rely on an assertion in code generation.\n- Type Checker: Properly support overwriting members inherited from `address` in a contract\n (such as `balance`, `transfer`, etc.)\n- Type Checker: Validate each number literal in tuple expressions even if they are not assigned from.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.18).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/11/30/solidity-0.4.19-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/11/30/solidity-0.4.19-release-announcement.json deleted file mode 100644 index 323fc421..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2017/11/30/solidity-0.4.19-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.19 Release Announcement","date":"2017-11-30","author":"Solidity Team","category":"Releases"},"content":"\nIn the last weeks, we have mainly been working on big internal changes. One of them is the new ABI decoder, which is still in experimental mode, but will hopefully be production-usable soon. External contributions like allowing constant variables for array lengths and improved error messages should make your life as a programmer easier. Finally, the standard-json-io-system now allows to select certain artifacts from a contract which should speed up your code-compile-test-cycle even more!\n\n**Features:**\n\n- Code Generator: New ABI decoder which supports structs and arbitrarily nested\n arrays and checks input size (activate using `pragma experimental ABIEncoderV2;`).\n- General: Allow constant variables to be used as array length.\n- Inline Assembly: `if` statement.\n- Standard JSON: Support the `outputSelection` field for selective compilation of target artifacts.\n- Syntax Checker: Turn the usage of `callcode` into an error as experimental 0.5.0 feature.\n- Type Checker: Improve address checksum warning.\n- Type Checker: More detailed errors for invalid array lengths (such as division by zero).\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.19).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/02/14/solidity-0.4.20-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/02/14/solidity-0.4.20-release-announcement.json deleted file mode 100644 index 0572f5be..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/02/14/solidity-0.4.20-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.20 Release Announcement","date":"2018-02-14","author":"Solidity Team","category":"Releases"},"content":"\nThis release includes some usability and security improvements and a further evolution of the SMT component. The `var` keyword has been deprecated for security reasons.\n\nSignificant steps were made in writing optimisation stages for the intermediate language, which will be used by the new ABI encoder to produce highly optimised output. The main goal is to have a resulting bytecode size similar to the old ABI encoder, while having more runtime checks for a stricter decoding process. This is not yet enabled in this release.\n\n**Features:**\n\n- Code Generator: Prevent non-view functions in libraries from being called\n directly (as opposed to via delegatecall).\n- Commandline interface: Support strict mode of assembly (disallowing jumps,\n instructional opcodes, etc) with the `strict-assembly` switch.\n- Inline Assembly: Issue warning for using jump labels (already existed for jump instructions).\n- Inline Assembly: Support some restricted tokens (return, byte, address) as identifiers in IULIA mode.\n- Optimiser: Replace `x % 2**i` by `x & (2**i-1)`.\n- Resolver: Continue resolving references after the first error.\n- Resolver: Suggest alternative identifiers if a given identifier is not found.\n- SMT Checker: Take if-else branch conditions into account in the SMT encoding of the program\n variables.\n- Syntax Checker: Deprecate the `var` keyword (and mark it an error as experimental 0.5.0 feature).\n- Type Checker: Allow `this.f.selector` to be a pure expression.\n- Type Checker: Issue warning for using `public` visibility for interface functions.\n- Type Checker: Limit the number of warnings raised for creating abstract contracts.\n\n**Bugfixes:**\n\n- Error Output: Truncate huge number literals in the middle to avoid output blow-up.\n- Parser: Disallow event declarations with no parameter list.\n- Standard JSON: Populate the `sourceLocation` field in the error list.\n- Standard JSON: Properly support contract and library file names containing a colon (such as URLs).\n- Type Checker: Suggest the experimental ABI encoder if using `struct`s as function parameters\n (instead of an internal compiler error).\n- Type Checker: Improve error message for wrong struct initialization.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.20).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/03/08/solidity-0.4.21-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/03/08/solidity-0.4.21-release-announcement.json deleted file mode 100644 index 27afabc4..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/03/08/solidity-0.4.21-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.21 Release Announcement","date":"2018-03-08","author":"Solidity Team","category":"Releases"},"content":"\nWe again introduced several changes that are scheduled for version 0.5.0 and can be activated using `pragma experimental \"v0.5.0\";`. In this release, this pragma does not generate a warning anymore, so you can (and should) use it in production code.\n\nIn addition to that, you can now specify which EVM version the contract should be compiled for. Valid values are \"homestead\", \"tangerineWhistle\", \"spuriousDragon\", \"byzantium\" (the default) and \"constantinople\". Depending on this setting, different opcodes will be used in some cases. The only place where this is currently used by default is that all gas is forwarded with calls starting from \"tangerineWhistle\" (in homestead, some gas has to be retained for the `call` opcode itself). Also, the gas estimator reports different costs for the opcodes depending on the version and thus the optimizer might generate different code.\n\nThe new \"0.5.0\" features are explained in more detail below the list of features and bugfixes.\n\n**Features:**\n\n- Code Generator: Assert that `k != 0` for `mulmod(a, b, k)` and `addmod(a, b, k)` as experimental 0.5.0 feature.\n- Code Generator: Do not retain any gas in calls (except if EVM version is set to homestead).\n- Code Generator: Use `STATICCALL` opcode for calling `view` and `pure` functions as experimenal 0.5.0 feature.\n- General: C99/C++-style scoping rules (instead of JavaScript function scoping) take effect as experimental v0.5.0 feature.\n- General: Improved messaging when error spans multiple lines of a sourcefile\n- General: Support and recommend using `emit EventName();` to call events explicitly.\n- Inline Assembly: Enforce strict mode as experimental 0.5.0 feature.\n- Interface: Provide ability to select target EVM version (homestead or byzantium, with byzantium being the default).\n- Standard JSON: Reject badly formatted invalid JSON inputs.\n- Type Checker: Disallow uninitialized storage pointers as experimental 0.5.0 feature.\n- Syntax Analyser: Do not warn about experimental features if they do not concern code generation.\n- Syntax Analyser: Do not warn about `pragma experimental \"v0.5.0\"` and do not set the experimental flag in the bytecode for this.\n- Syntax Checker: Mark `throw` as an error as experimental 0.5.0 feature.\n- Syntax Checker: Issue error if no visibility is specified on contract functions as experimental 0.5.0 feature.\n- Syntax Checker: Issue warning when using overloads of `address` on contract instances.\n- Type Checker: disallow combining hex numbers and unit denominations as experimental 0.5.0 feature.\n\n**Bugfixes:**\n\n- Assembly: Raise error on oversized number literals in assembly.\n- JSON-AST: Add \"documentation\" property to function, event and modifier definition.\n- Resolver: Properly determine shadowing for imports with aliases.\n- Standalone Assembly: Do not ignore input after closing brace of top level block.\n- Standard JSON: Catch errors properly when invalid \"sources\" are passed.\n- Standard JSON: Ensure that library addresses supplied are of correct length and hex prefixed.\n- Type Checker: Properly detect which array and struct types are unsupported by the old ABI encoder.\n- Type Checker: Properly warn when using `_offset` and `_slot` for constants in inline assembly.\n- Commandline interface: throw error if option is unknown\n\n**Details:**\n\n- Code Generator: Use `STATICCALL` opcode for calling `view` and `pure` functions as experimenal 0.5.0 feature.\n\nThis ensures that functions marked as `view` or `pure` (previously `constant`) cannot modify the state. This is especially important if you call unknown code via a generic interface and you cannot be sure whether the function modifies the state or not. This way, `view` and `pure` functions cannot have reentrancy effects.\n\n- General: C99/C++-style scoping rules (instead of JavaScript function scoping) take effect as experimental v0.5.0 feature.\n\nVariables are no longer valid in the whole function and even before they were declared as in JavaScript, but instead only in the `{`/`}`-enclosed block where they are declared and only starting after their declaration. These are the rules also used by C++ or Java. There is a common exception where variables declared in the initializing part of the `for` header are also valid in the rest of the `for` loop construct which we also use in Solidity. Currently, the stack slot reserved for the variable still spans the whole function, but this is planned to be improved for the next release.\n\n- General: Support and recommend using `emit EventName();` to call events explicitly.\n\nIn order to make events stand out with regards to regular function calls, `emit EventName()` as opposed to just `EventName()` should now be used to \"call\" events.\n\n- Inline Assembly: Enforce strict mode as experimental 0.5.0 feature.\n\nStrict mode disallows labels, jumps and opcodes that directly modify the stack. It is much safer than non-strict mode, since you do not have to keep track of the current state of the stack. Furthermore, it allows an optimizer stage (to be finished soon) to be created much more easily. Because of that, the optimizer will refuse to work on non-strict assembly.\n\n- Type Checker: Disallow uninitialized storage pointers as experimental 0.5.0 feature.\n\nStorage pointers (e.g. `StructType storage x;`) can lead to severe storage corruption if used without being assigned. In 0.5.0 it will be illegal to declare a storage pointer without directly initializing it.\n\n- Syntax Checker: Mark `throw` as an error as experimental 0.5.0 feature.\n\nThe `throw` keyword creates the impression that exceptions are a feature of Solidity, while in reality, it only supports state-reversion that can soon also include error data. Because of that, `throw` is deprecated.\n\n- Syntax Checker: Issue error if no visibility is specified on contract functions as experimental 0.5.0 feature.\n\nSince there were bugs where people did not realize that the default visibility of functions is `public`, specifying a visibility was made mandatory.\n\n- Syntax Checker: Issue warning when using overloads of `address` on contract instances.\n\nCollisions between native members of the `address` type and user-defined members of contracts can easily deceive users. Because of that, address members are no longer available in contracts. If you want to use an address member (`transfer` is one of them!), then convert it to address: `address(contractInstance).transfer(2 wei)`.\n\n- Type Checker: disallow combining hex numbers and unit denominations as experimental 0.5.0 feature.\n\nWe could not think of any situation where unit denominations like `seconds` or `ether` combined with hexadecimal literals would be meaningful (`0x1234 ether` or `0x20 minutes`) and thus deprecated this combination.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.21).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/04/17/solidity-0.4.22-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/04/17/solidity-0.4.22-release-announcement.json deleted file mode 100644 index 9a8292ae..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/04/17/solidity-0.4.22-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.22 Release Announcement","date":"2018-04-17","author":"Solidity Team","category":"Releases"},"content":"\nThis release features several major and long-awaited changes:\n\n- It is now possible to access dynamic data (arrays, strings, etc) returned by function calls.\n- You can specify error reason strings for `revert` and `require` (support by tooling is still pending).\n- We added the global functions `abi.encode()`, `abi.encodePacked()`, `abi.encodeWithSelector()` and `abi.encodeWithSignature()` which expose the ABI encoding functions and each return a `bytes` value.\n- Constructors should now be defined using `constructor(uint arg1, uint arg2) { ... }` to make them stand out and avoid bugs when contracts are renamed but not their constructors.\n- Some array operations got cheaper, especially the `push` function and initialization of memory arrays.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.22).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/04/19/solidity-0.4.23-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/04/19/solidity-0.4.23-release-announcement.json deleted file mode 100644 index 44aed2ed..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/04/19/solidity-0.4.23-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.23 Release Announcement","date":"2018-04-19","author":"Solidity Team","category":"Releases"},"content":"\nBugfix release: In the previous release, it was possible to define two constructors (one using the new constructor-keyword syntax, another one with the old syntax) for a contract, but only one of them got used in the end. We also included other bugfixes.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.23).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/05/16/solidity-0.4.24-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/05/16/solidity-0.4.24-release-announcement.json deleted file mode 100644 index e69b1a52..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/05/16/solidity-0.4.24-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.24 Release Announcement","date":"2018-05-16","author":"Solidity Team","category":"Releases"},"content":"\nAll remaining breaking changes planned for version 0.5.0 that can be implemented in a backwards-compatible way made it into this release. Solidity can now detect uninitialized storage pointers using control-flow analysis. It is again possible to assign multiple return values from a function to newly declared variables and the SMT checker is able to work with simple storage variables.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.24).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/09/13/solidity-0.4.25-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/09/13/solidity-0.4.25-release-announcement.json deleted file mode 100644 index 3657bac2..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/09/13/solidity-0.4.25-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.25 Release Announcement","date":"2018-09-13","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixed a cleanup error concerning the exponentiation operator. It is a bugfix-only release\nand does not contain any features. A more detailed description of the bugs fixed can be found\non the [ethereum blog](https://blog.soliditylang.org/2018/09/13/solidity-bugfix-release/).\n\nNote that nightly builds of Solidity currently contain changes unrelated to this bugfix release.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.25).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/09/13/solidity-bugfix-release.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/09/13/solidity-bugfix-release.json deleted file mode 100644 index d28fd573..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/09/13/solidity-bugfix-release.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Bugfix Release","date":"2018-09-13","author":"Solidity Team","category":"Security Alerts"},"content":"\n_This post was originally published on the [Ethereum blog](https://blog.ethereum.org/2018/09/13/solidity-bugfix-release/)._\n\nThe latest [version 0.4.25 release of Solidity](https://github.com/ethereum/solidity/releases/tag/v0.4.25) fixes\ntwo important bugs.\nAnother important bug has already been fixed in version 0.4.22 but it was only discovered recently that the bug existed.\n\nNote that the Ethereum Foundation runs a [bounty program](https://bounty.ethereum.org/) for the code generator part of Solidity.\n\n## Cleanup of Exponent in Exponentiation\n\n- Likelihood of occurrence: very low\n- Exploitability: high\n- Discoverability by tests: low\n- Fixed in version: 0.4.25\n\n**Summary:** Using short types in the exponent of an exponentiation operation can lead to invalid results.\n\nThe Solidity language allows integer types that are shorter than 256 bits, even though the Ethereum Virtual Machine\nonly knows types of exactly 256 bits. Because of that, higher order bits need to be set to zero from time to time.\nFor many operations, it is not relevant whether those bits are set to zero or not (addition is one example).\nBecause of that, the Solidity compiler delays this cleanup until it is needed in order to save gas.\n\nIn the very special circumstance that the exponent of the `**` operator has a type that is shorter\nthan 256 bits, but not shorter than the type of the base and contains dirty higher order bits,\nthis can lead to an incorrect result. Note that literal exponents like in `x ** 2` as well as\nthe case where the type of the base is `uint256` or `int256` are unaffected.\n\nNote that a function parameter can have dirty higher order bits if called by a malicious entity,\nand the same is true for data returned from functions of contracts deployed by malicious entities.\n\nAfter having screened a large number of contracts, we deem this bug to affect only a very tiny number of\nsmart contracts, if any at all, because the regular uses of the exponentiation operator do not lead to the bug.\n\nThis bug was found by [@nweller](https://github.com/nweller).\n\n## Memory Corruption in Multi-Dimensional Array Decoder\n\n- Likelihood of occurrence: low\n- Exploitability: medium\n- Discoverability by tests: high\n- Introduced in version: 0.1.4\n- Fixed in version: 0.4.22\n\n**Summary:** Calling functions of other contracts that return multi-dimensional fixed-size arrays results in memory corruption.\n\nIf Solidity code calls a function that returns a multi-dimensional fixed-size array,\nthe returned ABI-encoded data has to be converted to Solidity's internal representation\nof arrays. In Solidity, multi-dimensional arrays are implemented as arrays of\nmemory pointers, while in the ABI, the data is encoded inline.\nThe decoder did not take this difference into account with the result that the returned\nelements are interpreted as memory pointers and thus can cause memory\ncorruption if the return values are accessed. Calling functions with multi-dimensional\nfixed-size array arguments is unaffected as is returning fixed-size arrays from function calls\nif they are not used in a Solidity contract.\nThe bug is only in the component that decodes a multi-dimensional fixed-size array\nthat is returned from a function call from Solidity.\n\nThis bug was found by [@jmahhh](https://github.com/jmahhh).\n\n## Invalid Encoding of Structs in Events\n\n- Likelihood of occurrence: low\n- Exploitability: low\n- Discoverability by tests: high\n- Introduced in version: 0.4.17\n- Fixed in version: 0.4.25\n\n**Summary:** Structs as event parameters are not handled properly.\n\nStructs were not meant to be supported as event parameters without the new ABI encoder.\nThe compiler did accept them nevertheless, but encoded their memory address instead of their actual value.\nEven with the new ABI encoder, structs cannot be `indexed` event parameters.\n\nNow, structs are properly disallowed for the old encoder and if they are indexed also for the new encoder.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/11/13/solidity-0.5.0-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/11/13/solidity-0.5.0-release-announcement.json deleted file mode 100644 index 5863dd8b..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/11/13/solidity-0.5.0-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.0 Release Announcement","date":"2018-11-13","author":"Solidity Team","category":"Releases"},"content":"\nThis is a major breaking release of the Solidity language and compiler that includes many new safety features. In general, programmers have to be more explicit, some weird edge-cases are removed from the language and the low-level compiler interface is much simpler.\n\nThis release was long overdue and as a result has amassed an incredibly long list of changes. Please refer to the [\"Solidity v0.5.0 Breaking Changes”](https://solidity.readthedocs.io/en/latest/050-breaking-changes.html) section in the documentation about a good description of what has changed and how to update your code, or if you are courageous, check out the [changelog](https://github.com/ethereum/solidity/blob/v0.5.0/Changelog.md)!\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.0).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/12/03/solidity-0.5.1-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/12/03/solidity-0.5.1-release-announcement.json deleted file mode 100644 index 6c317858..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/12/03/solidity-0.5.1-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.1 Release Announcement","date":"2018-12-03","author":"Solidity Team","category":"Releases"},"content":"\nThis release improves the usability of interfaces, fixes some bugs, extends the SMT checker and provides an early preview of the Yul optimizer.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.1).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/12/19/solidity-0.5.2-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/12/19/solidity-0.5.2-release-announcement.json deleted file mode 100644 index 690e4e1f..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2018/12/19/solidity-0.5.2-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.2 Release Announcement","date":"2018-12-19","author":"Solidity Team","category":"Releases"},"content":"\nThis release of the Solidity compiler includes several performance optimizations. These include faster compilation time but also cheaper contracts in some situations. This version also checks for all instances of uninitialized storage references, has some improved error messages and other checks.\n\nYou can now create complete contracts in Yul through the support of the Yul object format and the special functions `datasize`, `dataoffset` and `datacopy`.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.2).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/01/22/solidity-0.5.3-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/01/22/solidity-0.5.3-release-announcement.json deleted file mode 100644 index 0dce30fe..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/01/22/solidity-0.5.3-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.3 Release Announcement","date":"2019-01-22","author":"Solidity Team","category":"Releases"},"content":"\nThis release adds support for accessing the code of a contract type, which will hopefully make the new `CREATE2` opcode easier to use. We also added some static analysis features to the compiler, but most changes were done \"under the hood\" to pave the way for using the new Yul-based optimizer with ABIEncoderV2.\n\n**Language Features:**\n\n- Provide access to creation and runtime code of contracts via `type(C).creationCode` / `type(C).runtimeCode`.\n\n**Compiler Features:**\n\n- Control Flow Graph: Warn about unreachable code.\n- SMTChecker: Support basic typecasts without truncation.\n- SMTChecker: Support external function calls and erase all knowledge regarding storage variables and references.\n\n**Bugfixes:**\n\n- Emscripten: Split simplification rule initialization up further to work around issues with soljson.js in some browsers.\n- Type Checker: Disallow calldata structs until implemented.\n- Type Checker: Return type error if fixed point encoding is attempted instead of throwing `UnimplementedFeatureError`.\n- Yul: Check that arguments to `dataoffset` and `datasize` are literals at parse time and properly take this into account in the optimizer.\n- Yul: Parse number literals for detecting duplicate switch cases.\n- Yul: Require switch cases to have the same type.\n\n**Build System:**\n\n- Emscripten: Upgrade to emscripten 1.38.8 on travis and circleci.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.3).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/02/12/solidity-0.5.4-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/02/12/solidity-0.5.4-release-announcement.json deleted file mode 100644 index aaca72bb..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/02/12/solidity-0.5.4-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.4 Release Announcement","date":"2019-02-12","author":"Solidity Team","category":"Releases"},"content":"\nThis release adds support for calldata structs and packed encoding with ABIEncoderV2. We also introduced some changes to the C API and added support for continuous fuzzing via Google oss-fuzz. In addition to that, we added a new commandline option for improved (colorized) diagnostics formatting.\n\n**Language Features:**\n\n- Allow calldata structs without dynamically encoded members with ABIEncoderV2.\n\n**Compiler Features:**\n\n- ABIEncoderV2: Implement packed encoding.\n- C API (`libsolc` / raw `soljson.js`): Introduce `solidity_free` method which releases all internal buffers to save memory.\n- Commandline Interface: Adds new option `new-reporter` for improved diagnostics formatting\n along with `color` and `no-color` for colorized output to be forced (or explicitly disabled).\n\n**Bugfixes:**\n\n- Code Generator: Defensively pad allocation of creationCode and runtimeCode to multiples of 32 bytes.\n- Commandline Interface: Allow yul optimizer only for strict assembly.\n- Parser: Disallow empty import statements.\n- Type Checker: Disallow mappings with data locations other than `storage`.\n- Type Checker: Fix internal error when a struct array index does not fit into a uint256.\n- Type System: Properly report packed encoded size for arrays and structs (mostly unused until now).\n\n**Build System:**\n\n- Add support for continuous fuzzing via Google oss-fuzz\n- SMT: If using Z3, require version 4.6.0 or newer.\n- Soltest: Add parser that is used in the file-based unit test environment.\n- Ubuntu PPA Packages: Use CVC4 as SMT solver instead of Z3\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.4).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/03/05/solidity-0.5.5-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/03/05/solidity-0.5.5-release-announcement.json deleted file mode 100644 index 9ee415fb..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/03/05/solidity-0.5.5-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.5 Release Announcement","date":"2019-03-05","author":"Solidity Team","category":"Releases"},"content":"\nThis release focuses on the stabilization of the ABIEncoderV2 and the optimizer. We also prepared for the Petersburg release which is the default EVM now and improved the SMT checker, such that it now reports less false positives when using `SafeMath`.\nYou can now activate the experimental Yul optimizer using `settings: {optimizer: {enabled: true, details: {yul: true}}}` or in the commandline via `solc optimize-yul`.\n\n**Language Features:**\n\n- Add support for getters of mappings with `string` or `bytes` key types.\n- Meta programming: Provide access to the name of contracts via `type(C).name`.\n\n**Compiler Features:**\n\n- Support `petersburg` as `evmVersion` and set as default.\n- Commandline Interface: Option to activate the experimental yul optimizer using `-optimize-yul`.\n- Inline Assembly: Consider `extcodehash` as part of Constantinople.\n- Inline Assembly: Instructions unavailable to the currently configured EVM are errors now.\n- SMTChecker: Do not report underflow/overflow if they always revert. This removes false positives when using `SafeMath`.\n- Standard JSON Interface: Allow retrieving metadata without triggering bytecode generation.\n- Standard JSON Interface: Provide fine-grained control over the optimizer via the settings.\n- Static Analyzer: Warn about expressions with custom types when they have no effect.\n- Optimizer: Add new rules with constants including `LT`, `GT`, `AND` and `BYTE`.\n- Optimizer: Add rule for shifts with constants for Constantinople.\n- Optimizer: Combine multiple shifts with constant shift-by values into one.\n- Optimizer: Do not mask with 160-bits after `CREATE` and `CREATE2` as they are guaranteed to return an address or 0.\n- Optimizer: Support shifts in the constant optimiser for Constantinople.\n- Yul Optimizer: Add rule to replace switch statements with literals by matching case body.\n\n**Bugfixes:**\n\n- ABIEncoderV2: Fix internal error related to bare delegatecall.\n- ABIEncoderV2: Fix internal error related to ecrecover.\n- ABIEncoderV2: Fix internal error related to mappings as library parameters.\n- ABIEncoderV2: Fix invalid signature for events containing structs emitted in libraries.\n- Inline Assembly: Proper error message for missing variables.\n- Optimizer: Fix internal error related to unused tag removal across assemblies. This never generated any invalid code.\n- SMTChecker: Fix crash related to statically-sized arrays.\n- TypeChecker: Fix internal error and disallow index access on contracts and libraries.\n- Yul: Properly detect name clashes with functions before their declaration.\n- Yul: Take built-in functions into account in the compilability checker.\n- Yul Optimizer: Properly take reassignments to variables in sub-expressions into account when replacing in the ExpressionSimplifier.\n\n**Build System:**\n\n- Soltest: Add support for left-aligned, padded hex literals.\n- Soltest: Add support for right-aligned, padded boolean literals.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.5).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/03/13/solidity-0.5.6-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/03/13/solidity-0.5.6-release-announcement.json deleted file mode 100644 index 3263d567..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/03/13/solidity-0.5.6-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.6 Release Announcement","date":"2019-03-13","author":"Solidity Team","category":"Releases"},"content":"\nThis release mainly fixes an optimizer bug related to multiple shift opcodes that was introduced in the previous release. It is unlikely that any existing contracts are affected, but you should still not use Solidity 0.5.5.\n\nApart from that, the support for calldata structs and arrays by ABIEncoderV2 is almost finished now, we added some more optimizer rules and added enums and one-dimensional arrays to the SMT checker.\n\n**Important Bugfixes:**\n\n- Yul Optimizer: Fix visitation order bug for the structural simplifier.\n- Optimizer: Fix overflow in optimization rule that simplifies double shift by constant.\n\n**Language Features:**\n\n- Allow calldata arrays with dynamically encoded base types with ABIEncoderV2.\n- Allow dynamically encoded calldata structs with ABIEncoderV2.\n\n**Compiler Features:**\n\n- Optimizer: Add rules for `lt`-comparisons with constants.\n- Peephole Optimizer: Remove double `iszero` before `jumpi`.\n- SMTChecker: Support enums without typecast.\n- SMTChecker: Support one-dimensional arrays.\n- Type Checker: Provide better error messages for some literal conversions.\n- Yul Optimizer: Add rule to remove empty default switch cases.\n- Yul Optimizer: Add rule to remove empty cases if no default exists.\n- Yul Optimizer: Add rule to replace a switch with no cases with `pop(expression)`.\n\n**Bugfixes:**\n\n- JSON ABI: Json description of library ABIs no longer contains functions with internal types like storage structs.\n- SMTChecker: Fix internal compiler error when contract contains too large rational number.\n- Type system: Detect if a contract's base uses types that require the experimental abi encoder while the contract still uses the old encoder.\n\n**Build System:**\n\n- Soltest: Add support for arrays in function signatures.\n- Soltest: Add support for struct arrays in function signatures.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.6).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/03/26/solidity-0.5.7-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/03/26/solidity-0.5.7-release-announcement.json deleted file mode 100644 index 0d441957..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/03/26/solidity-0.5.7-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.7 Release Announcement","date":"2019-03-26","author":"Solidity Team","category":"Releases"},"content":"\nThis release mainly fixes bugs in the optimizer and in the experimental ABI encoder. For details about the bug, please see the [official announcement](https://blog.soliditylang.org/2019/03/26/solidity-optimizer-and-abiencoderv2-bug/).\n\nFurthermore, this release also allows you to use Yul as a language option (instead of \"Solidity\") in the [standard-json-interface](https://docs.soliditylang.org/en/v0.5.7/using-the-compiler.html#compiler-input-and-output-json-description).\n\n**Important Bugfixes:**\n\n- ABIEncoderV2: Fix bugs related to loading short value types from storage when encoding an array or struct from storage.\n- ABIEncoderV2: Fix buffer overflow problem when encoding packed array from storage.\n- Optimizer: Fix wrong ordering of arguments in byte optimization rule for constants.\n\n**Language Features:**\n\n- Function calls with named arguments now work with overloaded functions.\n\n**Compiler Features:**\n\n- Inline Assembly: Issue error when using `callvalue()` inside nonpayable function (in the same way that `msg.value` already does).\n- Standard JSON Interface: Support \"Yul\" as input language.\n- SMTChecker: Show callstack together with model if applicable.\n- SMTChecker: Support modifiers.\n- Yul Optimizer: Enable stack allocation optimization by default if Yul optimizer is active (disable in `yulDetails`).\n\n**Bugfixes:**\n\n- Code Generator: Defensively pad memory for `type(Contract).name` to multiples of 32.\n- Type System: Detect and disallow internal function pointers as parameters for public/external library functions, even when they are nested/wrapped in structs, arrays or other types.\n- Yul Optimizer: Properly determine whether a variable can be eliminated during stack compression pass.\n- Yul / Inline Assembly Parser: Disallow more than one case statement with the same label inside a switch based on the label's integer value.\n\n**Build System:**\n\n- Install scripts: Fix boost repository URL for CentOS 6.\n- Soltest: Fix hex string update in soltest.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.7).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/03/26/solidity-optimizer-and-abiencoderv2-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/03/26/solidity-optimizer-and-abiencoderv2-bug.json deleted file mode 100644 index 09911c41..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/03/26/solidity-optimizer-and-abiencoderv2-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Optimizer and ABIEncoderV2 Bugs","date":"2019-03-26","author":"Solidity and Security Team","category":"Security Alerts"},"content":"\n_This post was originally published on the [Ethereum blog](https://blog.ethereum.org/2019/03/26/solidity-optimizer-and-abiencoderv2-bug/)._\n\nThrough the Ethereum bug bounty program, we received a report about a flaw within the new experimental ABI encoder (referred to as ABIEncoderV2). Upon investigation, it was found that the component suffers from a few different variations of the same type. The first part of this announcement explains this bug in detail. The new ABI encoder is still marked as experimental, but we nevertheless think that this deserves a prominent announcement since it is already used on mainnet.\n\nAdditionally, two low-impact bugs in the optimizer have been identified over the past two weeks, one of which was fixed with Solidity v0.5.6. Both were introduced with version 0.5.5. See the second part of this announcement for details.\n\nThe [0.5.7 release](https://github.com/ethereum/solidity/releases/tag/v0.5.7) contains the fixes to all bugs explained in this blog post.\n\nAll the bugs mentioned here should be easily visible in tests that touch the relevant code paths, at least when run with all combinations of zero and nonzero values.\n\nCredits to Melonport team (Travis Jacobs & Jenna Zenk) and the Melon Council (Nick Munoz-McDonald, Martin Lundfall, Matt di Ferrante & Adam Kolar), who reported this via the Ethereum bug bounty program!\n\n# Who should be concerned\n\nIf you have deployed contracts which use the experimental ABI encoder V2, then those might be affected. This means that only contracts which use the following directive within the source code can be affected:\n\n pragma experimental ABIEncoderV2;\n\nAdditionally, there are a number of requirements for the bug to trigger. See technical details further below for more information.\n\nAs far as we can tell, there are about 2500 contracts live on mainnet that use the experimental ABIEncoderV2. It is not clear how many of them contain the bug.\n\n# How to check if contract is vulnerable\n\nThe bug only manifests itself when all of the following conditions are met:\n\n- Storage data involving arrays or structs is sent directly to an external function call, to `abi.encode` or to event data without prior assignment to a local (memory) variable AND\n- there is an array that contains elements with size less than 32 bytes or a struct that has elements that share a storage slot or members of type `bytesNN` shorter than 32 bytes.\n\nIn addition to that, in the following situations, your code is NOT affected:\n\n- if all your structs or arrays only use `uint256` or `int256` types\n- if you only use integer types (that may be shorter) and only encode at most one array at a time\n- if you only return such data and do not use it in `abi.encode`, external calls or event data.\n\nIf you have a contract that meets these conditions, and want to verify whether the contract is indeed vulnerable, you can reach out to us via security@ethereum.org.\n\n# How to prevent these types of flaws in the future\n\nIn order to be conservative about changes, the experimental ABI encoder has been available only when explicitly enabled, to allow people to interact with it and test it without putting too much trust in it before it is considered stable.\n\nWe do our best to ensure high quality, and have recently started working on 'semantic' fuzzing of certain parts on [OSS-Fuzz](https://github.com/google/oss-fuzz) (we have previously crash-fuzzed the compiler, but that did not test compiler correctness).\n\nFor developers -- bugs within the Solidity compiler are difficult to detect with tools like vulnerability detectors, since tools which operate on source code or AST-representations do not detect flaws that are introduced only into the compiled bytecode.\n\nThe best way to protect against these types of flaws is to have a rigorous set of end-to-end tests for your contracts (verifying all code paths), since bugs in a compiler very likely are not \"silent\" and instead manifest in invalid data.\n\n# Possible consequences\n\nNaturally, any bug can have wildly varying consequences depending on the program control flow, but we expect that this is more likely to lead to malfunction than exploitability.\n\nThe bug, when triggered, will under certain circumstances send corrupt parameters on method invocations to other contracts.\n\n# Timeline\n\n#### 2019-03-16:\n\n- Report via bug bounty, about corruption caused when reading from arrays of booleans directly from storage into ABI encoder.\n\n#### 2019-03-16 to 2019-03-21:\n\n- Investigation of root cause, analysis of affected contracts. An unexpectedly high count of contracts compiled with the experimental encoder were found deployed on mainnet, many without verified source-code.\n- Investigation of bug found more ways to trigger the bug, e.g. using structs. Furthermore, an array overflow bug was found in the same routine.\n- A handful of contracts found on Github were checked, and none were found to be affected.\n- A bugfix to the ABI encoder was made.\n\n#### 2019-03-20:\n\n- Decision to make information public.\n- Reasoning: It would not be feasible to detect all vulnerable contracts and reach out to all authors in a timely manner, and it would be good to prevent further proliferation of vulnerable contracts on mainnet.\n\n#### 2019-03-26:\n\n- New compiler release, version 0.5.7.\n- This post released.\n\n# Technical details\n\n## Background\n\nThe Contract ABI is a specification how data can be exchanged with contracts from the outside (a Dapp) or when interacting between contracts. It supports a variety of types of data, including simple values like numbers, bytes and strings, as well as more complex data types, including arrays and structs.\n\nWhen a contract receives input data, it must decode that (this is done by the \"ABI decoder\") and prior to returning data or sending data to another contract, it must encode it (this is done by the \"ABI encoder\"). The Solidity compiler generates these two pieces of code for each defined function in a contract (and also for `abi.encode` and `abi.decode`). In the Solidity compiler the subsystem generating the encoder and decoder is called the \"ABI encoder\".\n\nIn mid-2017 the Solidity team started to work on a fresh implementation named \"ABI encoder V2\" with the goal of having a more flexible, safe, performant and auditable code generator. This experimental code generator, when explicitly enabled, has been offered to users since the end of 2017 with the 0.4.19 release.\n\n## The flaw\n\nThe experimental ABI encoder does not handle non-integer values shorter than 32 bytes properly. This applies to `bytesNN` types, `bool`, `enum` and other types when they are part of an array or a struct and encoded directly from storage. This means these storage references have to be used directly inside `abi.encode(...)`, as arguments in external function calls or in event data without prior assignment to a local variable. Using `return` does not trigger the bug. The types `bytesNN` and `bool` will result in corrupted data while `enum` might lead to an invalid `revert`.\n\nFurthermore, arrays with elements shorter than 32 bytes may not be handled correctly even if the base type is an integer type. Encoding such arrays in the way described above can lead to other data in the encoding being overwritten if the number of elements encoded is not a multiple of the number of elements that fit a single slot. If nothing follows the array in the encoding (note that dynamically-sized arrays are always encoded after statically-sized arrays with statically-sized content), or if only a single array is encoded, no other data is overwritten.\n\n# Two unrelated bugs\n\nUnrelated to the ABI encoder issue explained above, two bugs have been found in the optimiser. Both have been introduced with 0.5.5 (released on 5th of March). They are unlikely to occur in code generated by the compiler, unless inline assembly is used.\n\nThese two bugs have been identified through the recent addition of Solidity to [OSS-Fuzz](https://github.com/google/oss-fuzz) - a security toolkit for finding discrepancies or issues in a variety of projects. For Solidity we have included multiple different fuzzers testing different aspects of the compiler.\n\n1. The optimizer turns opcode sequences like `((x << a) << b))`, where `a` and `b` are compile-time constants, into `(x << (a + b))` while not handling overflow in the addition properly.\n2. The optimizer incorrectly handles the `byte` opcode if the constant 31 is used as second argument. This can happen when performing index access on `bytesNN` types with a compile-time constant value (not index) of 31 or when using the byte opcode in inline assembly.\n\nThis post was jointly composed by [@axic](https://github.com/axic), [@chriseth](https://github.com/chriseth), [@holiman](https://github.com/holiman).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/04/29/solidity-0.4.26-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/04/29/solidity-0.4.26-release-announcement.json deleted file mode 100644 index 4e4ac661..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/04/29/solidity-0.4.26-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.26 Release Announcement","date":"2019-04-29","author":"Solidity Team","category":"Releases"},"content":"\nThis is a bugfix release for the 0.4.x series that contains backported fixes for important bugs that affected code generation. It also contains a fix that makes the emscripten target compatible with newer browser versions.\n\n**Important Bugfixes:**\n\n- Code Generator: Fix initialization routine of uninitialized internal function pointers in constructor context.\n- Type System: Use correct type name for contracts in event parameters when used in libraries. This affected code generation.\n\n**Bugfixes:**\n\n- ABIEncoderV2: Refuse to generate code that is known to be potentially buggy.\n- General: Split rule list such that JavaScript environments with small stacks can use the compiler.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.4.26).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/04/30/solidity-0.5.8-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/04/30/solidity-0.5.8-release-announcement.json deleted file mode 100644 index 3b5ff957..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/04/30/solidity-0.5.8-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.8 Release Announcement","date":"2019-04-30","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes important but very unlikely bugs and further completes ABIEncoderV2, SMTChecker and Yul and improves the optimizer.\n\nNotably, if ABIEncoderV2 is activated, the ABI decoder will now revert on input with dirty higher order bits instead of ignoring those bits.\n\n**Important Bugfixes:**\n\n- Code Generator: Fix initialization routine of uninitialized internal function pointers in constructor context.\n- Type System: Use correct type name for contracts in event parameters when used in libraries. This affected code generation.\n- Yul Optimizer: Fix SSA transform for multi-assignments.\n\n**Language Features:**\n\n- ABIEncoderV2: Implement encoding of calldata arrays and structs.\n- Code Generation: Implement copying recursive structs from storage to memory.\n- Yul: Disallow function definitions inside for-loop init blocks.\n\n**Compiler Features:**\n\n- ABI Decoder: Raise a runtime error on dirty inputs when using the experimental decoder.\n- Optimizer: Add rule for shifts by constants larger than 255 for Constantinople.\n- Optimizer: Add rule to simplify certain ANDs and SHL combinations\n- SMTChecker: Support arithmetic compound assignment operators.\n- SMTChecker: Support unary increment and decrement for array and mapping access.\n- SMTChecker: Show unsupported warning for inline assembly blocks.\n- SMTChecker: Support mod.\n- SMTChecker: Support `contract` type.\n- SMTChecker: Support `this` as address.\n- SMTChecker: Support address members.\n- Standard JSON Interface: Metadata settings now re-produce the original `\"useLiteralContent\"` setting from the compilation input.\n- Yul: Adds break and continue keywords to for-loop syntax.\n- Yul: Support `.` as part of identifiers.\n- Yul Optimizer: Adds steps for detecting and removing of dead code.\n\n**Bugfixes:**\n\n- SMTChecker: Implement Boolean short-circuiting.\n- SMTChecker: SSA control-flow did not take into account state variables that were modified inside inlined functions that were called inside branches.\n- Type System: Allow direct call to base class functions that have overloads.\n- Yul: Properly register functions and disallow shadowing between function variables and variables in the outside scope.\n\n**Build System:**\n\n- Soltest: Add commandline option `test` / `-t` to isoltest which takes a string that allows filtering unit tests.\n- soltest.sh: allow environment variable `SOLIDITY_BUILD_DIR` to specify build folder and add `help` usage.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.8).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/05/28/solidity-0.5.9-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/05/28/solidity-0.5.9-release-announcement.json deleted file mode 100644 index 774ca4fa..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/05/28/solidity-0.5.9-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.9 Release Announcement","date":"2019-05-28","author":"Solidity Team","category":"Releases"},"content":"\nAs in previous releases, we spent most of the time making Solidity future-proof by further working on the Yul optimizer, the Solidity to Yul (and eWasm) translator and the SMT Checker.\n\nCode generated from Solidity now always includes the version number in the CBOR metadata so that it becomes possible to quickly assess whether a contract might be affected by a compiler bug or not.\n\n**Language Features:**\n\n- Inline Assembly: Revert change introduced in 0.5.7: The `callvalue()` instruction does not require `payable` anymore.\n- Static Analyzer: Disallow libraries calling themselves externally.\n\n**Compiler Features:**\n\n- Assembler: Encode the compiler version in the deployed bytecode.\n- Code Generator: Fix handling of structs of dynamic size as constructor parameters.\n- Inline Assembly: Disallow the combination of `msize()` and the Yul optimizer.\n- Metadata: Add IPFS hashes of source files.\n- Optimizer: Add rule to simplify SHL/SHR combinations.\n- Optimizer: Add rules for multiplication and division by left-shifted one.\n- SMTChecker: Support inherited state variables.\n- SMTChecker: Support tuples and function calls with multiple return values.\n- SMTChecker: Support `delete`.\n- SMTChecker: Inline external function calls to `this`.\n- Yul Optimizer: Simplify single-run `for` loops to `if` statements.\n- Yul Optimizer: Optimize representation of numbers.\n- Yul Optimizer: Do not inline recursive functions.\n- Yul Optimizer: Do not remove instructions that affect `msize()` if `msize()` is used.\n\n**Bugfixes:**\n\n- Code Generator: Explicitly turn uninitialized internal function pointers into invalid functions when loaded from storage.\n- Code Generator: Fix assertion failure when assigning structs containing array of mapping.\n- Compiler Internals: Reset the Yul string repository before each compilation, freeing up memory.\n- SMTChecker: Fix bad cast in base constructor modifier.\n- SMTChecker: Fix internal error when visiting state variable inherited from base class.\n- SMTChecker: Fix internal error in fixed point operations.\n- SMTChecker: Fix internal error in assignment to unsupported type.\n- SMTChecker: Fix internal error in branching when inlining function calls that modify local variables.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.9).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/06/25/solidity-0.5.10-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/06/25/solidity-0.5.10-release-announcement.json deleted file mode 100644 index ef0ea25c..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/06/25/solidity-0.5.10-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.10 Release Announcement","date":"2019-06-25","author":"Solidity Team","category":"Releases"},"content":"\nApart from further invisible work on the Yul optimizer, the Solidity to Yul code generation, the eWasm backend and the SMT checker, this release contains two important bug fixes related to storage arrays.\n\nFor details see [our earlier blog post](https://blog.soliditylang.org/2019/06/25/solidity-storage-array-bugs/).\n\nIt also contains an experimental mode that allows recovery from parser error (implemented by [@rocky](https://github.com/rocky), funded by ConsenSys) in the hope that this might be useful for IDE developers.\n\n**Important Bugfixes:**\n\n- ABIEncoderV2: Fix incorrect abi encoding of storage array of data type that occupy multiple storage slots\n- Code Generator: Properly zero out higher order bits in elements of an array of negative numbers when assigning to storage and converting the type at the same time.\n\n**Compiler Features:**\n\n- Commandline Interface: Experimental parser error recovery via the `error-recovery` commandline switch.\n- Optimizer: Add rule to simplify `SUB(~0, X)` to `NOT(X)`.\n- Yul Optimizer: Make the optimizer work for all dialects of Yul including eWasm.\n\n**Bugfixes:**\n\n- Type Checker: Set state mutability of the function type members `gas` and `value` to pure (while their return type inherits state mutability from the function type).\n- Yul / Inline Assembly Parser: Disallow trailing commas in function call arguments.\n\n**Build System:**\n\n- Attempt to use stock Z3 cmake files to find Z3 and only fall back to manual discovery.\n- CMake: use imported targets for boost.\n- Emscripten build: upgrade to boost 1.70.\n- Generate a cmake error for gcc versions older than 5.0.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.10).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/06/25/solidity-storage-array-bugs.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/06/25/solidity-storage-array-bugs.json deleted file mode 100644 index d173fb57..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/06/25/solidity-storage-array-bugs.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Storage Array Bugs","date":"2019-06-25","author":"Solidity and Security Team","category":"Security Alerts"},"content":"\n_This post was originally published on the [Ethereum blog](https://blog.ethereum.org/2019/06/25/solidity-storage-array-bugs/)._\n\nThis blog post is about two bugs connected to storage arrays which are otherwise unrelated. Both have been present in the compiler for a long time and have only been discovered now even though a contract containing them should very likely show malfunctions in tests.\n\n[Daenam Kim](https://www.linkedin.com/in/daenamkim/) with help from [Nguyen Pham](https://www.linkedin.com/in/nguyen-pham-635748161/), both from [Curvegrid](https://www.curvegrid.com/) discovered an issue where invalid data is stored in connection with arrays of signed integers.\n\nThis bug has been present since Solidity 0.4.7 and we consider it the more serious of the two. If these arrays use negative integers in a certain situation, it will cause data corruption and thus the bug should be easy to detect.\n\nThrough the Ethereum bug bounty program, we received a report about a flaw within the new experimental ABI encoder (referred to as ABIEncoderV2). The new ABI encoder is still marked as experimental, but we nevertheless think that this deserves a prominent announcement since it is already used on mainnet.\nCredits to Ming Chuan Lin (of https://www.secondstate.io) for both discovering and fixing the bug!\n\nThe [0.5.10 release](https://github.com/ethereum/solidity/releases/tag/v0.5.10) contains the fixes to the bugs.\nAt the moment, we do not plan to publish a fix to the legacy 0.4.x series of Solidity, but we might if there is popular demand.\n\nBoth bugs should be easily visible in tests that touch the relevant code paths.\n\nDetails about the two bugs can be found below.\n\n# Signed Integer Array Bug\n\n## Who should be concerned\n\nIf you have deployed contracts which use signed integer arrays in storage and either directly assign\n\n- a literal array with at least one negative value in it (`x = [-1, -2, -3];`) or\n- an existing array of a _different_ signed integer type\n\nto it, this will lead to data corruption in the storage array.\n\nContracts that only assign individual array elements (i.e. with `x[2] = -1;`) are not affected.\n\n## How to check if contract is vulnerable\n\nIf you use signed integer arrays in storage, try to run tests where you use negative values. The effect should be that the actual value stored is positive instead of negative.\n\nIf you have a contract that meets these conditions, and want to verify whether the contract is indeed vulnerable, you can reach out to us via security@ethereum.org.\n\n## Technical details\n\nStorage arrays can be assigned from arrays of different type. During this copy and assignment operation, a type conversion is performed on each of the elements. In addition to the conversion, especially if the signed integer type is shorter than 256 bits, certain bits of the value have to be zeroed out in preparation for storing multiple values in the same storage slot.\n\nWhich bits to zero out was incorrectly determined from the source and not the target type. This leads to too many bits being zeroed out. In particular, the sign bit will be zero which makes the value positive.\n\n# ABIEncoderV2 Array Bug\n\n## Who should be concerned\n\nIf you have deployed contracts which use the experimental ABI encoder V2, then those might be affected. This means that only contracts which use the following directive within the source code can be affected:\n\n pragma experimental ABIEncoderV2;\n\nAdditionally, there are a number of requirements for the bug to trigger. See technical details further below for more information.\n\n## How to check if contract is vulnerable\n\nThe bug only manifests itself when all of the following conditions are met:\n\n- Storage data involving arrays or structs is sent directly to an external function call, to `abi.encode` or to event data without prior assignment to a local (memory) variable AND\n- this data either contains an array of structs or an array of statically-sized arrays (i.e. at least two-dimensional).\n\nIn addition to that, in the following situation, your code is NOT affected:\n\n- if you only return such data and do not use it in `abi.encode`, external calls or event data.\n\n## Possible consequences\n\nNaturally, any bug can have wildly varying consequences depending on the program control flow, but we expect that this is more likely to lead to malfunction than exploitability.\n\nThe bug, when triggered, will under certain circumstances send corrupt parameters on method invocations to other contracts.\n\n## Technical details\n\nDuring the encoding process, the experimental ABI encoder does not properly advance to the next element in an array in case the elements occupy more than a single slot in storage.\n\nThis is only the case for elements that are structs or statically-sized arrays. Arrays of dynamically-sized arrays or of elementary datatypes are not affected.\n\nThe specific effect you will see is that data is \"shifted\" in the encoded array: If you have an array of type `uint[2][]` and it contains the data\n`[[1, 2], [3, 4], [5, 6]]`, then it will be encoded as `[[1, 2], [2, 3], [3, 4]]` because the encoder only advances by a single slot between elements instead of two.\n\nThis post was jointly composed by [@axic](https://github.com/axic), [@chriseth](https://github.com/chriseth), [@holiman](https://github.com/holiman).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/08/12/solidity-0.5.11-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/08/12/solidity-0.5.11-release-announcement.json deleted file mode 100644 index a3f0414d..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/08/12/solidity-0.5.11-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.11 Release Announcement","date":"2019-08-12","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug related to calldata structs in ABIEncoderV2 and calldata decoding in V1. Several internal bugs of the SMT checker are fixed.\nFurthermore, internal types are added to the ABI output which allows you to see which struct type is behind an ABI tuple. Finally, Yul and web assembly support are progressing.\n\nWe also improved our testing framework which now allows for semantics tests to run in 4 seconds instead of 1 minute.\n\n**Language Features:**\n\n- Inline Assembly: Support direct constants of value type in inline assembly.\n\n**Compiler Features:**\n\n- ABI: Additional internal type info in the field `internalType`.\n- eWasm: Highly experimental eWasm output using `ewasm` in the commandline interface or output selection of `ewasm.wast` in standard-json.\n- Metadata: Update the swarm hash to the current specification, changes `bzzr0` to `bzzr1` and urls to use `bzz-raw://`.\n- Standard JSON Interface: Compile only selected sources and contracts.\n- Standard JSON Interface: Provide secondary error locations (e.g. the source position of other conflicting declarations).\n- SMTChecker: Do not erase knowledge about storage pointers if another storage pointer is assigned.\n- SMTChecker: Support string literal type.\n- Standard JSON Interface: Provide AST even on errors if `error-recovery` commandline switch or StandardCompiler `settings.parserErrorRecovery` is true.\n- Yul Optimizer: Do not inline function if it would result in expressions being duplicated that are not cheap.\n\n**Bugfixes:**\n\n- ABI decoder: Ensure that decoded arrays always point to distinct memory locations.\n- Code Generator: Treat dynamically encoded but statically sized arrays and structs in calldata properly.\n- SMTChecker: Fix internal error when inlining functions that contain tuple expressions.\n- SMTChecker: Fix pointer knowledge erasing in loops.\n- SMTChecker: Fix internal error when using compound bitwise assignment operators inside branches.\n- SMTChecker: Fix internal error when inlining a function that returns a tuple containing an unsupported type inside a branch.\n- SMTChecker: Fix internal error when inlining functions that use state variables and belong to a different source.\n- SMTChecker: Fix internal error when reporting counterexamples concerning state variables from different source files.\n- SMTChecker: Fix SMT sort mismatch when using string literals.\n- View/Pure Checker: Properly detect state variable access through base class.\n- Yul Analyzer: Check availability of data objects already in analysis phase.\n- Yul Optimizer: Fix an issue where memory-accessing code was removed even though `msize` was used in the program.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.11).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/10/01/solidity-0.5.12-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/10/01/solidity-0.5.12-release-announcement.json deleted file mode 100644 index 2fe5f3dc..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/10/01/solidity-0.5.12-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.12 Release Announcement","date":"2019-10-01","author":"Solidity Team","category":"Releases"},"content":"\nThis is a small bugfix release that also includes loop support for the SMT solver and some improvements to the Yul optimizer. The reason for the smaller feature set is that we are mainly working on the upcoming 0.6.0 release.\n\n**Language Features:**\n\n- Type Checker: Allow assignment to external function arguments except for reference types.\n\n**Compiler Features:**\n\n- ABI Output: Change sorting order of functions from selector to kind, name.\n- Optimizer: Add rule that replaces the BYTE opcode by 0 if the first argument is larger than 31.\n- SMTChecker: Add loop support to the CHC engine.\n- Yul Optimizer: Take side-effect-freeness of user-defined functions into account.\n- Yul Optimizer: Remove redundant mload/sload operations.\n\n**Bugfixes:**\n\n- Code Generator: Fix internal error when popping a dynamic storage array of mappings.\n- Name Resolver: Fix wrong source location when warning on shadowed aliases in import declarations.\n- Scanner: Fix multi-line natspec comment parsing with triple slashes when file is encoded with CRLF instead of LF.\n- Type System: Fix arrays of recursive structs.\n- Yul Optimizer: Fix reordering bug in connection with shifted one and mul/div-instructions in for loop conditions.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.12).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/11/14/solidity-0.5.13-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/11/14/solidity-0.5.13-release-announcement.json deleted file mode 100644 index dfac2f23..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/11/14/solidity-0.5.13-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.13 Release Announcement","date":"2019-11-14","author":"Solidity Team","category":"Releases"},"content":"\nSolidity 0.5.13 provides Istanbul-EVM compatibility (default is still set to Petersburg), is the first version to generate Ethereum-Webassembly (EWasm) binary output (not fully working yet, though), improves the developer experience by listing potential overloads when resolution fails and can output the layout of the storage variables of a contract. As with all other releases, the coverage of the SMT checker is further improved.\n\n**Language Features:**\n\n- Allow to obtain the address of a linked library with `address(LibraryName)`.\n\n**Compiler Features:**\n\n- Code Generator: Use SELFBALANCE opcode for `address(this).balance` if using Istanbul EVM.\n- EWasm: Experimental EWasm binary output via `ewasm` and as documented in standard-json.\n- SMTChecker: Add break/continue support to the CHC engine.\n- SMTChecker: Support assignments to multi-dimensional arrays and mappings.\n- SMTChecker: Support inheritance and function overriding.\n- Standard JSON Interface: Output the storage layout of a contract when artifact `storageLayout` is requested.\n- TypeChecker: List possible candidates when overload resolution fails.\n\n**Bugfixes:**\n\n- Code Generator: Fixed a faulty assert that would wrongly trigger for array sizes exceeding unsigned integer.\n- SMTChecker: Fix internal error when accessing indices of fixed bytes.\n- SMTChecker: Fix internal error when using function pointers as arguments.\n- SMTChecker: Fix internal error when implicitly converting string literals to fixed bytes.\n- Type Checker: Disallow constructor of the same class to be used as modifier.\n- Type Checker: Treat magic variables as unknown identifiers in inline assembly.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.13).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/12/09/solidity-0.5.14-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/12/09/solidity-0.5.14-release-announcement.json deleted file mode 100644 index a729cfee..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/12/09/solidity-0.5.14-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.14 Release Announcement","date":"2019-12-09","author":"Solidity Team","category":"Releases"},"content":"\nSolidity 0.5.14 sets the default EVM version to \"Istanbul\" and is targeted as the last release in the 0.5.x series.\n\nThe SMT checker supports constructors now and it is possible to directly translate EVM-flavoured Yul to Ewasm from the commandline interface.\n\n**Language Features:**\n\n- Allow to obtain the selector of public or external library functions via a member `.selector`.\n- Parser: Allow splitting string and hexadecimal string literals into multiple parts.\n- Inline Assembly: Support constants that reference other constants.\n\n**Compiler Features:**\n\n- Commandline Interface: Allow translation from yul / strict assembly to EWasm using `solc yul yul-dialect evm machine eWasm`\n- Set the default EVM version to \"Istanbul\".\n- SMTChecker: Add support to constructors including constructor inheritance.\n- Yul: When compiling via Yul, string literals from the Solidity code are kept as string literals if every character is safely printable.\n- Yul Optimizer: Perform loop-invariant code motion.\n\n**Bugfixes:**\n\n- SMTChecker: Fix internal error when using `abi.decode`.\n- SMTChecker: Fix internal error when using arrays or mappings of functions.\n- SMTChecker: Fix internal error in array of structs type.\n- Version Checker: `^0` should match `0.5.0`, but no prerelease.\n- Yul: Consider infinite loops and recursion to be not removable.\n\n**Build System:**\n\n- Update to emscripten version 1.39.3.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.14).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/12/17/solidity-0.5.15-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/12/17/solidity-0.5.15-release-announcement.json deleted file mode 100644 index 1343c315..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/12/17/solidity-0.5.15-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.15 Release Announcement","date":"2019-12-17","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug that was introduced in 0.5.14 (the previous release). You are only affected if you manually enabled the Yul optimizer (not the regular optimizer) and either used Yul stand-alone or via ABIEncoderV2. For more details, please see buglist.json.\n\n**Bugfixes:**\n\n- Yul Optimizer: Fix incorrect redundant load optimization crossing user-defined functions that contain for-loops with memory / storage writes.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.15).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/12/17/solidity-0.6.0-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/12/17/solidity-0.6.0-release-announcement.json deleted file mode 100644 index a76cd09c..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2019/12/17/solidity-0.6.0-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.0 Release Announcement","date":"2019-12-17","author":"Solidity Team","category":"Releases"},"content":"\nThis is a major breaking release of the Solidity compiler and language. Changes include explicit virtual and override keywords in inheritance, support for try/catch, splitting the fallback function into a receive Ether function and an actual fallback function and limitations on how the length of an array can be changed, among others. For a detailed explanation, please see the [documentation](https://solidity.readthedocs.io/en/latest/060-breaking-changes.html) or refer to the list below that shows every single change.\n\nFrom this release on, ABIEncoderV2 is not considered experimental any more, but you still have to activate it through the pragma.\n\nFurthermore, the Yul optimizer is automatically activated together with the regular optimizer, but you can still disable it through the detailed optimizer settings.\n\n**Breaking Changes:**\n\n- ABI: Remove the deprecated `constant` and `payable` fields.\n- ABI: The `type` field is now required and no longer specified to default to `function`.\n- AST: Inline assembly is exported as structured JSON instead of plain string.\n- C API (`libsolc`): Introduce context parameter to both `solidity_compile` and the callback.\n- C API (`libsolc`): The provided callback now takes two parameters, kind and data. The callback can then be used for multiple purposes, such has file imports and SMT queries.\n- C API (`libsolc`): `solidity_free` was renamed to `solidity_reset`. Functions `solidity_alloc` and `solidity_free` were added.\n- C API (`libsolc`): `solidity_compile` now returns a string that must be explicitly freed via `solidity_free()`\n- Commandline Interface: Remove the text-based AST printer (`ast`).\n- Commandline Interface: Switch to the new error reporter by default. `old-reporter` falls back to the deprecated old error reporter.\n- Commandline Interface: Add option to disable or choose hash method between IPFS and Swarm for the bytecode metadata.\n- General: Disallow explicit conversions from external function types to `address` and add a member called `address` to them as replacement.\n- General: Enable Yul optimizer as part of standard optimization.\n- General: New reserved keywords: `override`, `receive`, and `virtual`.\n- General: `private` cannot be used together with `virtual`.\n- General: Split unnamed fallback functions into two cases defined using `fallback()` and `receive()`.\n- Inheritance: State variable shadowing is now disallowed.\n- Inline Assembly: Only strict inline assembly is allowed.\n- Inline Assembly: Variable declarations cannot shadow declarations outside the assembly block.\n- JSON AST: Replace `superFunction` attribute by `baseFunctions`.\n- Natspec JSON Interface: Properly support multiple `@return` statements in `@dev` documentation and enforce named return parameters to be mentioned in the documentation.\n- Source mappings: Add \"modifier depth\" as a fifth field in the source mappings.\n- Standard JSON Interface: Add option to disable or choose hash method between IPFS and Swarm for the bytecode metadata.\n- Syntax: `push(element)` for dynamic storage arrays do not return the new length anymore.\n- Syntax: Abstract contracts need to be marked explicitly as abstract by using the `abstract` keyword.\n- Syntax: `length` member of arrays is now always read-only, even for storage arrays.\n- Type Checker: Resulting type of exponentiation is equal to the type of the base. Also allow signed types for the base.\n\n**Language Features:**\n\n- Allow explicit conversions from `address` to `address payable` via `payable(...)`.\n- Allow global enums and structs.\n- Allow public variables to override external functions.\n- Allow underscores as delimiters in hex strings.\n- Introduce syntax for array slices and implement them for dynamic calldata arrays.\n- Introduce `push()` for dynamic storage arrays. It returns a reference to the newly allocated element, if applicable.\n- Introduce `virtual` and `override` keywords.\n- Introduce `try`/`catch`-statement\n- Modify `push(element)` for dynamic storage arrays such that it does not return the new length anymore.\n- Yul: Introduce `leave` statement that exits the current function.\n- JSON AST: Add the function selector of each externally-visible FunctonDefinition to the AST JSON export.\n\n**Compiler Features:**\n\n- Allow revert strings to be stripped from the binary using the `revert-strings` option or the `settings.debug.revertStrings` setting.\n- ABIEncoderV2: Do not warn about enabled ABIEncoderV2 anymore (the pragma is still needed, though).\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.6.0).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/01/02/solidity-0.5.16-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/01/02/solidity-0.5.16-release-announcement.json deleted file mode 100644 index 9ee1b0ac..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/01/02/solidity-0.5.16-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.16 Release Announcement","date":"2020-01-02","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug in the Yul optimizer. You are only affected if you manually enabled the Yul optimizer (not the regular optimizer) and either used Yul stand-alone or via ABIEncoderV2. For more details, please see buglist.json.\n\n**Bugfixes:**\n\n- Yul Optimizer: Fix bug in redundant assignment remover in combination with break and continue statements.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.16).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/01/02/solidity-0.6.1-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/01/02/solidity-0.6.1-release-announcement.json deleted file mode 100644 index 89aa788f..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/01/02/solidity-0.6.1-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.1 Release Announcement","date":"2020-01-02","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug in the Yul optimizer related to `break` and `continue` statements in loops. The Yul optimizer is part of the regular optimizer since version 0.6.0. In version 0.5.x, you had to explicitly activate the Yul optimizer in addition to the regular optimizer. The Yul optimizer only operates on the code generated by ABIEncoderV2 or if you use it in a stand-alone way. The code generated by ABIEncoderV2 does not make use of `break` and `continue`, but these statements can be introduced by other optimizer steps. The Yul optimizer currently is not run on inline-assembly code.\n\n**Bugfixes:**\n\n- Yul Optimizer: Fix bug in redundant assignment remover in combination with break and continue statements.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.6.1).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/01/27/solidity-0.6.2-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/01/27/solidity-0.6.2-release-announcement.json deleted file mode 100644 index 67912421..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/01/27/solidity-0.6.2-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.2 Release Announcement","date":"2020-01-27","author":"Solidity Team","category":"Releases"},"content":"\nAfter long discussions, we finally enabled a high-level way to use the `create2` opcode introduced in Constantinople: When creating a contract, you can specify the salt as a \"function call option\": `new Contract{salt: 0x1234}(arg1, arg2)`. We took this opportunity and also extended the use of these function call options to specifying the gas and value options in external function calls: `c.f{value: 10, gas: 20000}(arg1, arg2)`.\n\nFurthermore, interfaces can now inherit from interfaces, making them even more useful for specification purposes.\n\nTo allow mutation testing and other uses, you can now export the AST, modify it and re-compile starting from the modified ast using `solc import-ast`. Note that compiling from a modified AST is not meant for production.\n\nAnd last but not least, we are now building the javascript compiler solc-js / soljson.js using webassembly which should both provide a performance boost as well as reduce compatibility issues with browsers.\n\n## Changelog:\n\n**Language Features:**\n\n- Allow accessing external functions via contract and interface names to obtain their selector.\n- Allow interfaces to inherit from other interfaces\n- Allow gas and value to be set in external function calls using `c.f{gas: 10000, value: 4 ether}()`.\n- Allow specifying the `salt` for contract creations and thus the `create2` opcode using `new C{salt: 0x1234, value: 1 ether}(arg1, arg2)`.\n- Inline Assembly: Support literals `true` and `false`.\n\n**Compiler Features:**\n\n- LLL: The LLL compiler has been removed.\n- General: Raise warning if runtime bytecode exceeds 24576 bytes (a limit introduced in Spurious Dragon).\n- General: Support compiling starting from an imported AST. Among others, this can be used for mutation testing.\n- Yul Optimizer: Apply penalty when trying to rematerialize into loops.\n\n**Bugfixes:**\n\n- Commandline interface: Only activate yul optimizer if `optimize` is given.\n- Fixes internal compiler error on explicitly calling unimplemented base functions.\n\n**Build System:**\n\n- Switch to building soljson.js with an embedded base64-encoded wasm binary.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.6.2).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/01/29/solidity-0.6-try-catch.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/01/29/solidity-0.6-try-catch.json deleted file mode 100644 index 1da454ec..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/01/29/solidity-0.6-try-catch.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: try/catch statement","date":"2020-01-29","author":"Elena Gesheva","category":"Explainers"},"content":"\n_This post was originally published on the [Ethereum blog](https://blog.ethereum.org/2020/01/29/solidity-0.6-try-catch/)._\n\nThe [try/catch syntax introduced in 0.6.0](https://solidity.readthedocs.io/en/latest/control-structures.html#try-catch) is arguably the biggest leap in error handling capabilities in Solidity, since reason strings for `revert` and `require` were released in v0.4.22. Both `try` and `catch` have been reserved keywords [since v0.5.9](https://solidity.readthedocs.io/en/v0.5.9/miscellaneous.html#reserved-keywords) and now we can use them to handle failures in `external` function calls without rolling back the complete transaction (state changes in the called function are still rolled back, but the ones in the calling function are not).\n\nWe are moving one step away from the purist \"all-or-nothing\" approach in a transaction lifecycle, which falls short of practical behaviour we often want.\n\n## Handling external call failures\n\nThe try/catch statement allows you to react on failed _external_ calls and _contract creation_ calls, so you cannot use it for _internal_ function calls. Note that to wrap a public function call within the same contract with try/catch, it can be made external by calling the function with `this.`.\n\nThe example below demonstrates how try/catch is used in a factory pattern where contract creation might fail. The following `CharitySplitter` contract requires a mandatory address property `_owner` in its constructor.\n\n```solidity\n pragma solidity ^0.6.1;\n\n contract CharitySplitter {\n address public owner;\n constructor (address _owner) public {\n require(_owner != address(0), \"no-owner-provided\");\n owner = _owner;\n }\n }\n```\n\nThere is a factory contract — `CharitySplitterFactory` which is used to create and manage instances of `CharitySplitter`. In the factory we can wrap the `new CharitySplitter(charityOwner)` in a try/catch as a failsafe for when that constructor might fail because of an empty `charityOwner` being passed.\n\n```solidity\n pragma solidity ^0.6.1;\n import \"./CharitySplitter.sol\";\n contract CharitySplitterFactory {\n mapping (address => CharitySplitter) public charitySplitters;\n uint public errorCount;\n event ErrorHandled(string reason);\n event ErrorNotHandled(bytes reason);\n function createCharitySplitter(address charityOwner) public {\n try new CharitySplitter(charityOwner)\n returns (CharitySplitter newCharitySplitter)\n {\n charitySplitters[msg.sender] = newCharitySplitter;\n } catch {\n errorCount++;\n }\n }\n }\n```\n\nNote that with try/catch, only exceptions happening inside the external call itself are caught. Errors inside the expression are not caught, for example if the input parameter for the `new CharitySplitter` is itself part of an internal call, any errors it raises will not be caught. Sample demonstrating this behaviour is the modified `createCharitySplitter` function. Here the `CharitySplitter` constructor input parameter is retrieved dynamically from another function — `getCharityOwner`. If that function reverts, in this example with `\"revert-required-for-testing\"`, that will not be caught in the try/catch statement.\n\n```solidity\n function createCharitySplitter(address _charityOwner) public {\n try new CharitySplitter(getCharityOwner(_charityOwner, false))\n returns (CharitySplitter newCharitySplitter)\n {\n charitySplitters[msg.sender] = newCharitySplitter;\n } catch (bytes memory reason) {\n ...\n }\n }\n function getCharityOwner(address _charityOwner, bool _toPass)\n internal returns (address) {\n require(_toPass, \"revert-required-for-testing\");\n return _charityOwner;\n }\n```\n\n## Retrieving the error message\n\nWe can further extend the try/catch logic in the `createCharitySplitter` function to retrieve the error message if one was emitted by a failing `revert` or `require` and emit it in an event. There are two ways to achieve this:\n\n### 1. Using `catch Error(string memory reason)`\n\n```solidity\n function createCharitySplitter(address _charityOwner) public {\n try new CharitySplitter(_charityOwner) returns (CharitySplitter newCharitySplitter)\n {\n charitySplitters[msg.sender] = newCharitySplitter;\n }\n catch Error(string memory reason)\n {\n errorCount++;\n CharitySplitter newCharitySplitter = new\n CharitySplitter(msg.sender);\n charitySplitters[msg.sender] = newCharitySplitter;\n // Emitting the error in event\n emit ErrorHandled(reason);\n }\n catch\n {\n errorCount++;\n }\n }\n```\n\nWhich emits the following event on a failed constructor require error:\n\n CharitySplitterFactory.ErrorHandled(\n reason: 'no-owner-provided' (type: string)\n )\n\n### 2. Using `catch (bytes memory reason)`\n\n```solidity\n function createCharitySplitter(address charityOwner) public {\n try new CharitySplitter(charityOwner)\n returns (CharitySplitter newCharitySplitter)\n {\n charitySplitters[msg.sender] = newCharitySplitter;\n }\n catch (bytes memory reason) {\n errorCount++;\n emit ErrorNotHandled(reason);\n }\n }\n```\n\nWhich emits the following event on a failed constructor require error:\n\n CharitySplitterFactory.ErrorNotHandled(\n reason: hex'08c379a0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000116e6f2d6f776e65722d70726f7669646564000000000000000000000000000000' (type: bytes)\n\nThe above two methods for retrieving the error string produce a similar result. The difference is that the second method does not ABI-decode the error string. The advantage of the second method is that it is also executed if ABI decoding the error string fails or if no reason was provided.\n\n## Future plans\n\nThere are plans to release support for error types meaning we will be able to declare errors in a similar way to events allowing us to catch different type of errors, for example:\n\n```solidity\n catch CustomErrorA(uint data1) { … }\n catch CustomErrorB(uint[] memory data2) { … }\n catch {}\n```\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/02/18/solidity-0.6.3-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/02/18/solidity-0.6.3-release-announcement.json deleted file mode 100644 index 64667ee7..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/02/18/solidity-0.6.3-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.3 Release Announcement","date":"2020-02-18","author":"Solidity Team","category":"Releases"},"content":"\nThis release adds reason strings for compiler-generated reverts if you specify `revert-strings debug` or use the setting `settings.debug.revertStrings = \"debug\"`. Furthermore, contract types and enums are now allowed as keys for mappings and the doxygen-style comments are better supported by the AST.\n\n**Language Features:**\n\n- Allow contract types and enums as keys for mappings.\n- Allow function selectors to be used as compile-time constants.\n\n**Compiler Features:**\n\n- AST: Add a new node for doxygen-style, structured documentation that can be received by contract, function, event and modifier definitions.\n- Code Generator: Use `calldatacopy` instead of `codecopy` to zero out memory past input.\n- Debug: Provide reason strings for compiler-generated internal reverts when using the `revert-strings` option or the `settings.debug.revertStrings` setting on `debug` mode.\n- Structured Documentation: Report source locations for structured documentation errors.\n- Yul Optimizer: Prune functions that call each other but are otherwise unreferenced.\n\n**Bugfixes:**\n\n- Assembly Output: Added missing `source` field to legacy assembly json output to complete the source reference.\n- Parser: Fix an internal error for `abstract` without `contract`.\n- Type Checker: Make invalid calls to uncallable types fatal errors instead of regular.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.6.3).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/03/10/solidity-0.6.4-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/03/10/solidity-0.6.4-release-announcement.json deleted file mode 100644 index 01f77fc0..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/03/10/solidity-0.6.4-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.4 Release Announcement","date":"2020-03-10","author":"Solidity Team","category":"Releases"},"content":"\nVersion 0.6.4 of Solidity fixes a bug that did not allow calling base contract functions directly, another bug that caused issues with variable scoping in try/catch and it allows for greater flexibility with regards to storage: It is now possible to set storage slots for storage reference variables from inline assembly. We expect this to allow new patterns in connection to delegatecall proxies and upgradable contracts. Please be careful when using this feature!\n\n**Language Features:**\n\n- General: Deprecated `value(...)` and `gas(...)` in favor of `{value: ...}` and `{gas: ...}`\n- Inline Assembly: Allow assigning to `_slot` of local storage variable pointers.\n- Inline Assembly: Perform control flow analysis on inline assembly. Allows storage returns to be set in assembly only.\n\n**Compiler Features:**\n\n- AssemblyStack: Support for source locations (source mappings) and thus debugging Yul sources.\n- Commandline Interface: Enable output of experimental optimized IR via `ir-optimized`.\n\n**Bugfixes:**\n\n- Inheritance: Fix incorrect error on calling unimplemented base functions.\n- Reference Resolver: Fix scoping issue following try/catch statements.\n- Standard-JSON-Interface: Fix a bug related to empty filenames and imports.\n- SMTChecker: Fix internal errors when analysing tuples.\n- Yul AST Import: correctly import blocks as statements, switch statements and string literals.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.6.4).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/03/17/solidity-0.5.17-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/03/17/solidity-0.5.17-release-announcement.json deleted file mode 100644 index c56c2cf3..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/03/17/solidity-0.5.17-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.17 Release Announcement","date":"2020-03-17","author":"Solidity Team","category":"Releases"},"content":"\nThis maintenance release of the 0.5.x series fixes a bug that was always present in the compiler. Some people do not even consider it a bug, though, which might explain why it was undiscovered for so long:\n\nA private function can be overridden in a derived contract by a private function of the same name and types. In other words, the virtual function calling mechanism does not respect visibility.\nThe same applies to two private functions of the same name and type that are declared in two unrelated base contracts (diamond inheritance).\n\nThis bug has been fixed in the 0.6.x series already in version 0.6.0 by making the override mechanism more strict in general.\n\n**Bugfixes:**\n\n- Type Checker: Disallow overriding of private functions.\n\nThanks to [@k06a](https://github.com/k06a) for reporting the bug!\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.5.17).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/03/23/fallback-receive-split.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/03/23/fallback-receive-split.json deleted file mode 100644 index fdedd6fa..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/03/23/fallback-receive-split.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: fallback and receive functions","date":"2020-03-26","author":"Elena Gesheva","category":"Explainers"},"content":"\nIn versions of Solidity before 0.6.x, developers typically used the [fallback function](https://solidity.readthedocs.io/en/v0.5.15/contracts.html#fallback-function) to handle logic in two scenarios:\n\n- contract received ether and no data\n- contract received data but no function matched the function called\n\nThe main use case of the pre-0.6.x fallback function is to receive ether and react\nto it, a typical pattern used by token-style contracts to reject transfers, emit\nevents or forward the ether. The function executes when a contract is called\nwithout any data e.g. via `.send()` or `.transfer()` functions. The 0.5.x\nsyntax is:\n\n```solidity\n pragma solidity ^0.5.0;\n contract Charity {\n function() external payable {\n // React to receiving ether\n }\n }\n```\n\nThe second use case was made popular by the \"delegate proxy\" pattern\nfor implementing upgradable contracts. It has a simple Proxy contract that\nonly declares a fallback function. The fallback function is invoked when no\nfunction in the contract matches the function identifier in the call data.\nThis permits the \"delegate proxy\" pattern where functionality is implemented\noutside the called contract. Sample implementation:\n\n```solidity\n pragma solidity ^0.5.0;\n contract DelegateProxy {\n address internal implementation;\n\n function() external payable {\n address addr = implementation;\n\n assembly {\n calldatacopy(0, 0, calldatasize())\n let result := delegatecall(gas(), addr, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch result\n case 0 { revert(0, returndatasize()) }\n default { return(0, returndatasize()) }\n }\n }\n }\n```\n\nCalling the contract uses assembly code that we won't go into detail here,\nbut you can read more in [Zeppelin's documentation](https://docs.openzeppelin.com/upgrades/2.6/proxies).\n\n## Splitting the fallback function\n\nWe realised that the dual-purpose of the function confused developers, which\ncould lead to potential security problems. For example, a developer typically implements a fallback function, expecting only ether transfers to call it, but\nit is also called when a function is missing from a contract. And confusingly,\nas this was expected behaviour, no error was reported. Example implementation\ndemonstrating this confusing behaviour is below.\n\n```solidity\n pragma solidity ^0.5.0;\n contract Charity {\n mapping (address => uint256) public donations;\n\n function processDonation(address user) external payable {\n donations[user] += msg.value;\n }\n }\n contract Receiver {\n event ValueReceived(address user, uint amount);\n\n function() external payable {\n emit ValueReceived(msg.sender, msg.value);\n }\n }\n contract CharitySplitter {\n function donate(Charity charity) external payable {\n charity.processDonation.value(msg.value)(msg.sender);\n }\n }\n```\n\nWhen calling `CharitySplitter.donate()` with a charity contract address,\nits `processDonation` function is correctly invoked to process the donation\nas expected. However if by mistake the `Receiver` contract address is passed,\nits fallback function ends up being called, swallowing the sent value.\n\n```solidity\n const goodCharity = await Charity.new();\n const receiver = await Receiver.new();\n const badCharity = await Charity.at(receiver.address);\n const charitySplitter = await CharitySplitter.new();\n // Charity.processDonation is executed successfully and 10 wei donation is recorded\n await charitySplitter.donate(goodCharity, { value: 10 });\n // Triggers the underlying Receiver fallback function\n // 10 wei is acquired and ValueReceived event emitted\n await charitySplitter.donate(badCharity, { value: 10 });\n```\n\nSince the EVM is untyped, Solidity is unable to check the actual type of a\ncontract from its address and has to rely on what the user supplies. The\nfunction signatures also do not provide a perfect solution against type\nconfusion but can work in many cases.\n\nThis is why in version 0.6.x, the fallback function was split into two\nseparate functions:\n\n- [receive()](https://solidity.readthedocs.io/en/latest/contracts.html#receive-ether-function) `external payable` — for empty calldata (and any value)\n- [fallback()](https://solidity.readthedocs.io/en/latest/contracts.html#fallback-function) `external payable` — when no other function matches (not even the receive function). Optionally `payable`.\n\nThis separation provides an alternative to the fallback function for\ncontracts that want to receive plain ether.\n\n### receive()\n\nA contract can now have only one `receive` function, declared with the syntax:\n`receive() external payable {…}` (without the `function` keyword).\n\nIt executes on calls to the contract with no data (`calldata`), e.g. calls made\nvia `send()` or `transfer()`.\n\nThe function cannot have arguments, cannot return anything and must have\n`external` visibility and `payable` state mutability. To replicate the example\nabove under 0.6.0, use the following code:\n\n```solidity\n pragma solidity ^0.5.0;\n contract Charity {\n receive() external payable {\n // React to receiving ether\n }\n }\n```\n\n### fallback()\n\nThe fallback function now has a different syntax, declared using\n`fallback() external [payable] {…}` (without the `function` keyword). This\nfunction cannot have arguments, cannot return anything and must have\n`external` visibility. The fallback function always receives data, but to\nalso receive Ether, you should mark it as `payable`. To replicate the example\nabove under 0.6.0, use the following code:\n\n```solidity\n pragma solidity ^0.6.0;\n\n contract DelegateProxy {\n address internal implementation;\n\n fallback() external payable {\n address addr = implementation;\n\n assembly {\n calldatacopy(0, 0, calldatasize())\n let result := delegatecall(gas(), addr, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch result\n case 0 { revert(0, returndatasize()) }\n default { return(0, returndatasize()) }\n }\n }\n }\n```\n\n### Migrated and fixed sample contract\n\nThus we translate the problematic contract to v0.6.x , having it declare a\n`receive()` function which only accepts incoming ether without data and\navoids the type confusion that led to the loss of value demonstrated above.\n\n```solidity\n pragma solidity ^0.6.0;\n contract Charity {\n mapping (address => uint256) public donations;\n\n function processDonation(address user) external payable {\n donations[user] += msg.value;\n }\n }\n contract Receiver {\n event ValueReceived(address user, uint amount);\n\n receive() external payable {\n emit ValueReceived(msg.sender, msg.value);\n }\n }\n\n contract CharitySplitter {\n function donate(Charity charity) external payable {\n charity.processDonation{value:msg.value}(msg.sender);\n }\n }\n```\n\nThe calls to the fixed contract will now revert when called with the `Receiver` contract address fails:\n\n```solidity\n // The following call now reverts\n await charitySplitter.donate(badCharity, { value: 10 });\n```\n\nWe hope you find the logical division of the fallback function clearer for your design, and welcome any feedback you have on the new syntax.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/04/06/memory-creation-overflow-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/04/06/memory-creation-overflow-bug.json deleted file mode 100644 index feb4a835..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/04/06/memory-creation-overflow-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Memory Array Creation Overflow Bug","date":"2020-04-06","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn the 28th of March, a bug in the Solidity code generator was reported through the\n[Ethereum Foundation Bounty program](https://bounty.ethereum.org/),\nby John Toman of [Certora](https://www.certora.com/). The bug is fixed with version 0.6.5,\nreleased on 2020-04-06.\nThe bug is present in all prior versions of Solidity.\n\nWe assigned a severity level of \"low\" because we found the bug to be uncommon and at the same time hard to exploit.\n\n## Who should be concerned\n\nIf you have deployed a contract which allocates a memory array of user-supplied length,\nbut does not copy or iterate over it, this can lead to memory corruption.\nIn particular, a sufficiently large length during the allocation of the memory array\nwill result in subsequent memory allocations to overlap with the memory region of the array.\nHowever, the length of the array is correctly stored, so copying or iterating over the array\n(which is what all contracts we screened do just after the allocation)\nwill terminate and revert the transation with out-of-gas in these cases.\n\n## How to check if contract is vulnerable\n\nIf you allocate dynamic memory arrays using `new T[](length)` with a length that depends\non user input, you may be vulnerable to this bug. If it is possible to supply a sufficiently\nlarge length, subsequent memory allocations will have overlapping memory regions and operations\nthat use memory scratch space can invalidate the contents of the array.\nIf you traverse or copy the array after creating it, however,\nthe transaction will revert with out-of-gas, since the array length is stored correctly.\n\nSafe example:\n\n```solidity\n contract C {\n function f(uint length) public {\n uint[] memory x = new uint[](length);\n // This is safe because the loop will run out of gas.\n for (uint i = 0; i < length; ++i) {\n x[i] = i**2;\n }\n ...\n }\n }\n```\n\nAnother safe example:\n\n```solidity\n contract C {\n uint[] x;\n function f(uint length) public {\n // This is safe because the copy from memory to storage will\n // iterate over the whole array and go out-of-gas.\n x = new uint[](length);\n ...\n }\n }\n```\n\nPotentially vulnerable example:\n\n```solidity\n contract C {\n function f(uint length, AnotherContract c, uint index) public {\n uint[] memory x = new uint[](length);\n uint[] memory y = new uint[](4);\n y[0] = c.g(x[index]);\n y[1] = c.g(x[index + 1]);\n y[2] = c.g(x[index + 2]);\n y[3] = c.g(x[index + 3]);\n c.h(y);\n }\n }\n```\n\n## Technical details\n\nSolidity did not enforce an upper length limit for dynamic array allocations at runtime.\nWhile the length of the array is stored directly as is, the amount of memory to allocate,\ni.e. the increment for the \"free memory pointer\", is calculated as 32 times the array length.\nSince this multiplication was not protected against overflows, a sufficiently large length\ncan cause an overflow, resulting in only a small amount of memory to be actually allocated\n(i.e. the free memory pointer will only be incremented by the overflowed size).\nSubsequent memory allocations will therefore use memory regions that overlap with\nthe originally allocated array.\nStarting from Solidity version 0.6.5 the maximum allocation size for dynamic memory arrays\nis `2**64-1`. Attempting to allocate larger arrays now directly reverts.\nThis effectively prevents such overflows from occurring.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/04/06/solidity-0.6.5-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/04/06/solidity-0.6.5-release-announcement.json deleted file mode 100644 index ca84d573..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/04/06/solidity-0.6.5-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.5 Release Announcement","date":"2020-04-06","author":"Solidity Team","category":"Releases"},"content":"\nVersion 0.6.5 of Solidity fixes an important bug and introduces `immutable` as a major feature.\n\nThe bug concerns the allocation of dynamic memory arrays using e.g. `new uint[](...)`. The bug is considered to have a severity level of \"low\" but is present in all prior versions of Solidity. Therefore, please read more about how check if your contract is vulnerable in this [blog post](https://blog.soliditylang.org/2020/04/06/memory-creation-overflow-bug/).\n\nThe immutable feature supports setting contract-level variables at construction time if they do not change later on. These variables are stored directly in the code instead of storage, which makes them extremely cheap to use. For now, only value types are supported.\n\n**Important Bugfixes:**\n\n- Code Generator: Restrict the length of dynamic memory arrays to 64 bits during creation at runtime fixing a possible overflow.\n\n**Language Features:**\n\n- Allow local storage variables to be declared without initialization, as long as they are assigned before they are accessed.\n- State variables can be marked `immutable` which causes them to be read-only, but assignable in the constructor. The value will be stored directly in the code.\n\n**Compiler Features:**\n\n- Commandline Interface: Enable output of storage layout with `storage-layout`.\n- Metadata: Added support for IPFS hashes of large files that need to be split in multiple chunks.\n\n**Bugfixes:**\n\n- Inheritance: Allow public state variables to override functions with dynamic memory types in their return values.\n- Inline Assembly: Fix internal error when accessing invalid constant variables.\n- Inline Assembly: Fix internal error when accessing functions.\n- JSON AST: Always add pointer suffix for memory reference types.\n- Reference Resolver: Fix internal error when accessing invalid struct members.\n- Type Checker: Fix internal errors when assigning nested tuples.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.6.5).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/04/09/solidity-0.6.6-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/04/09/solidity-0.6.6-release-announcement.json deleted file mode 100644 index b9cecba9..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/04/09/solidity-0.6.6-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.6 Release Announcement","date":"2020-04-09","author":"Solidity Team","category":"Releases"},"content":"\nThis is a small bugfix release that solves an issue with certain tuple assignments.\n\n**Important Bugfixes:**\n\n- Fix tuple assignments with components occupying multiple stack slots and different stack size on left- and right-hand-side.\n\n**Bugfixes:**\n\n- AST export: Export `immutable` property in the field `mutability`.\n- SMTChecker: Fix internal error in the CHC engine when calling inherited functions internally.\n- Type Checker: Error when trying to encode functions with call options gas and value set.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.6.6).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/04/17/Solidity-Summit-2020-Goes-Interspace.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/04/17/Solidity-Summit-2020-Goes-Interspace.json deleted file mode 100644 index c5285c5b..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/04/17/Solidity-Summit-2020-Goes-Interspace.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Summit 2020 Goes Interspace","date":"2020-04-17","author":"Franziska Heintel","category":"Announcements"},"content":"\n**Tl;dr:** As already [announced on Twitter](https://twitter.com/solidity_lang/status/1244645576735690752?s=20), we transformed the Solidity Summit, which was initially planned to be an in-person meeting in Berlin, into an online event. Today, we are excited to share that the summit will be powered by [Interspace.Chat](https://github.com/interspacechat/interspace.chat). Interspace is a virtual meeting infrastructure based on self-hosted [Jitsi](https://jitsi.org/) video chat rooms. Check out the Solidity Summit's preliminary event agenda [here](https://docs.google.com/spreadsheets/d/1ylkaTYKx9TbAifCgyH2jN9SKJKrYfzab9zzTZgSL44g/edit#gid=2065734219) and make sure to [register](https://solidity-summit.ethereum.org/) if you want to partipate!\n\n## What is the Solidity Summit?\n\nThe Solidity Summit is a free interactive forum with discussions and talks on Solidity, Yul, language design and tooling. It will take place on April 29-30.\n\nWe aim to\n\n- have useful (language design related) discussions that result in improvement proposals, leading to actual implementations\n- foster communication between teams working on similar topics\n- identify needs for the smart contract ecosystem for Ethereum\n\nWe will discuss\n\n- Change proposals and analysis around Solidity and Yul\n- Debuggers\n- Source verification\n- Upgradable contracts & libraries\n- NatSpec\n- Metadata / packages\n- Testing for smart contracts\n- Integration into existing \"larger ecosystem tools\" (e.g. vscode via Language Server, LLVM, DWARF)\n- Mechanisms / programming patterns (on the EVM) like mutexes, state machines, create2, etc.\n\n...and more!\n\nFor a sneak peak of the full agenda, click **[here](https://docs.google.com/spreadsheets/d/1ylkaTYKx9TbAifCgyH2jN9SKJKrYfzab9zzTZgSL44g/edit?usp=sharing)**.\n\n## How can you participate?\n\nIf you'd like to participate, please make sure to register upfront via the application form on the [Solidity Summit website](https://solidity-summit.ethereum.org/).\n\nWe would like to stress that this summit will be focusing especially on language design and tools/ecosystem and aims to collect community feedback on how to improve Solidity and the compiler. While developers writing Solidity contracts are very welcome to share their experience during the summit, this is probably **not** the conference where you'll learn \"how to develop dapps on Ethereum using Solidity\".\n\nThere are two options how you can participate during the summit:\n\n1. **Join the Jitsi video conference.** This option is recommended for speakers and people that would like to actively participate in the open discussion sessions.\n2. **Watch the livestream.** This option is recommended for attendees that would rather just listen in and allows to do other things at the same time (not recommended ;))/ saves CPU. Asking questions during Q&A will be possible using the chat.\n\nUnless you actively want to participate/ talk/ present during the respective session, we recommend using the livestream option to ensure a smooth experience for everyone.\n\nOnce we're live, you'll be able to find all links you need in one place:\n\n- YouTube livestream\n- Jitsi lobby room\n- Jitsi main conference room\n- Option to create Jitsi breakout rooms\n- Chat\n- Conference agenda\n- POAP badge claim\n\nTo not miss any update on the Solidity Summit, follow us on [Twitter](https://twitter.com/solidity_lang).\n\n**Can't wait to see you in(ter)space soon!**\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/05/04/solidity-0.6.7-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/05/04/solidity-0.6.7-release-announcement.json deleted file mode 100644 index f0976539..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/05/04/solidity-0.6.7-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.7 Release Announcement","date":"2020-05-04","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.6.7](https://github.com/ethereum/solidity/releases/tag/v0.6.7) introduces support for EIP-165 via `type(InterfaceName).interfaceId`.\n\n**Language Features:**\n\n- Add support for EIP 165 interface identifiers with `type(I).interfaceId`.\n- Allow virtual modifiers inside abstract contracts to have empty body.\n\n**Compiler Features:**\n\n- Optimizer: Simplify repeated AND and OR operations.\n- Option to specify optimization steps to be performed by Yul optimizer with `yul-optimizations` in the commandline interface or `optimizer.details.yulDetails.optimizerSteps` in standard-json.\n- Standard Json Input: Support the prefix `file://` in the field `urls`.\n\n**Bugfixes:**\n\n- SMTChecker: Fix internal error when fixed points are used.\n- SMTChecker: Fix internal error when using array slices.\n- Type Checker: Disallow `virtual` and `override` for constructors.\n- Type Checker: Fix several internal errors by performing size and recursiveness checks of types before the full type checking.\n- Type Checker: Fix internal error when assigning to empty tuples.\n- Type Checker: Fix internal error when applying unary operators to tuples with empty components.\n- Type Checker: Perform recursiveness check on structs declared at the file level.\n\n**Build System:**\n\n- soltest.sh: `SOLIDITY_BUILD_DIR` is no longer relative to `REPO_ROOT` to allow for build directories outside of the source tree.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.6.7).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/05/13/immutable-keyword.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/05/13/immutable-keyword.json deleted file mode 100644 index 0aa741f9..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/05/13/immutable-keyword.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: Saving Storage Costs with Immutables","date":"2020-05-13","author":"Daniel Kirchner","category":"Explainers"},"content":"\nWith [version 0.6.5](https://github.com/ethereum/solidity/releases/tag/v0.6.5), Solidity introduced the\n[`immutable` keyword](https://solidity.readthedocs.io/en/v0.6.7/contracts.html?highlight=immutable#constant-and-immutable-state-variables)\nfor state variables. Immutable state variables can only be assigned during contract creation, but will remain\nconstant throughout the life-time of a deployed contract.\nThe big advantage of immutables is that reading them is significantly cheaper than reading from regular state variables,\nsince immutables will not be stored in storage, but their values will be directly inserted into the runtime code.\n\n## How to use Immutables\n\nImmutable state variables can be declared using the `immutable` keyword. They cannot be read during contract creation,\nbut either have to be written to exactly once in the constructor or initialized directly in their declaration.\nRuntime code can only read immutables, but not write to them.\nHere is an example of `immutable` in action:\n\n```solidity\npragma solidity >=0.6.5;\ncontract SimpleDonationManager {\n uint256 immutable minDonation = 42;\n uint256 immutable maxDonation = calcMaxDonation();\n address immutable owner;\n constructor() public {\n owner = msg.sender;\n // Error: Immutables cannot be read in constructor.\n // assert(minDonation <= maxDonation);\n // Error: Immutables can only be assigned once.\n // owner = address(0);\n }\n function withdraw(uint256 amount) public {\n require(msg.sender == owner); // Requires no sload!\n msg.sender.transfer(amount);\n }\n receive() external payable {\n require(msg.value >= minDonation && msg.value <= maxDonation);\n }\n function calcMaxDonation() internal pure returns (uint256 max) {\n max = 10000 * 42;\n // Error: Cannot read from Immutables in construction context.\n // max = 10000 * minDonation;\n }\n // Error: cannot write to Immutables from runtime context.\n // function changeOwner(address newOwner) external {\n // owner = newOwner;\n // }\n}\n\n```\n\n## How Immutables Work\n\nWhile regular state variables are stored at a fixed offset in storage, this is not the case for immutables. Instead,\nimmutables are stored directly in the deployed bytecode, i.e. the runtime code will contain placeholders for every\nread of an immutable and the creation code will insert the values of the immutables into these placeholders.\nEffectively, this means that reading from an immutable at runtime will reduce to a plain `PUSH32` opcode.\n\nWhile this mechanism may change in the future, currently, during contract creation, a dedicated memory area is reserved\nfor the values of immutables. The constructor code can then store the intended values for the immutables in that memory area.\nThe compiler-generated part of the creation code that is executed after the constructor and returns the contract's\nruntime code will read back the values of the immutables and insert them into all occurrences in the runtime bytecode.\n\n## Limitations and Future Plans\n\nSo far, only immutables of value types are supported. However, this restriction might be relaxed in the future.\nThis will likely work by storing an offset into the runtime code using the same mechanism as for immutables of value-type\nand using `codecopy` to read the contents of the immutable of reference type to memory.\nPossibly, it may also be allowed to read from immutables in the creation context, in case the compiler can be sure that the\nimmutable will already have been assigned before the read.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/05/14/Solidity-068-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/05/14/Solidity-068-release-announcement.json deleted file mode 100644 index 46e1f5dc..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/05/14/Solidity-068-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.8 Release Announcement","date":"2020-05-14","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.6.8](https://github.com/ethereum/solidity/releases/tag/v0.6.8) fixes three important bugs in the code generator and introduces a recommendation to use [SPDX license identifiers](https://spdx.dev/ids/#how). Furthermore, support for WebAssembly has been extended and it is now possible to access the `min` and `max` values of an integer type directly.\n\nPlease upgrade if you are using array slices, backslashes in string literals for ABIEncoderV2 or are concerned about non-payable constructors.\n\n## Important Bugfixes\n\nPlease note that the three bugs outlined below have all been rated with a severity level of \"very low\".\n\n### Incorrect Internal Escaping of String Literals\n\n**Problem**: When ABIEncoderV2 is enabled, string literals passed directly to encoding functions or external function calls are stored as strings in the intermediate code. Characters outside the printable range are handled correctly, but backslashes are not escaped in this procedure. This leads to double backslashes being reduced to single backslashes and consequently re-interpreted as escapes potentially resulting in a different string being encoded.\n\n**Solution**: String literals containing backslash characters are now properly escaped.\n\n**Example of affected code**\n\n```solidity\npragma experimental ABIEncoderV2;\ncontract C {\n function f() public payable returns (bytes memory) {\n // The reason string should contain two backslashes,\n // but during compilation, only a single backslash\n // ends up in the message.\n require(msg.value > 0, \"back\\\\\\\\slash\");\n // This string literal is not directly passed to\n // an encoding function and is properly escaped.\n return \"back\\\\\\\\slash\";\n }\n}\n```\n\nWe especially thank Alex Groce ([@agroce](https://github.com/agroce)) who found the bug through fuzzing!\n\n### Array Slice Dynamically Encoded Base Type Bug\n\n**Problem**: For arrays with dynamically sized base types, index range accesses that use a start expression that is non-zero will result in invalid array slices. Any index access to such array slices will result in data being read from incorrect calldata offsets. Array slices are only supported for dynamic calldata types and all problematic types require ABIEncoderV2 to be enabled.\n\n**Solution**: Disallow array slices of arrays with dynamically encoded base types.\n\n**Example of affected code**\n\n```solidity\npragma experimental ABIEncoderV2;\nstruct S { uint[] data; }\ncontract C {\n function f(\n S[] calldata arrayOfStructs,\n uint[][] calldata arrayOfArrays\n ) external pure {\n // These two do not result in the correct value.\n // Both expressions are disallowed now.\n arrayOfStructs[1:];\n arrayOfArrays[1:];\n }\n}\n\n```\n\n### Implicit Constructor Callvalue Check Bug\n\n**Problem**: Starting from Solidity 0.4.5, the creation code of contracts without explicit payable constructor is supposed to contain a callvalue check that results in contract creation reverting, if non-zero value is passed. However, this check was missing in case no explicit constructor was defined in a contract at all, but the contract has a base that does define a constructor. In these cases it is possible to send value in a contract creation transaction or using inline assembly without revert, even though the creation code is supposed to be non-payable.\n\n**Solution**: We added a callvalue check to the creation code of a contract which does not define a constructor but has a base that does define a constructor.\n\n**Code example**\n\n```solidity\ncontract Base {\n constructor() public payable {}\n}\ncontract Derived is Base {\n // No constructor defined\n}\n```\n\nBefore 0.6.8, it was possible to send Ether together with the creation\ntransaction of an instance of `Derived`. At the same time - confusingly -\nthe compiler did now allow Solidity-based creation of the form\n`new Derived{value: 1}()`. We solved this discrepancy by reverting\nduring the constructor of `Derived` if Ether was provided with the creation.\n\nTo replicate the old behaviour, you can add a payable constructor to the most\nderived contract.\n\n## Other Bugfixes\n\n- **ABI**: Skip `private` or `internal` constructors.\n- **Code Generator**: Fixed an \"Assembly Exception in Bytecode\" error where requested functions were generated twice.\n- **Natspec**: Fixed a bug that ignored `@return` tag when no other developer-documentation tags were present.\n- **Type Checker**: Checks if a literal exponent in the `**` operation is too large or fractional.\n- **Type Checker**: Disallow accessing `runtimeCode` for contract types that contain immutable state variables.\n- **Yul Assembler**: Fix source location of variable declarations without value.\n\n## New Features\n\n### Language Features\n\n- Implemented `type(T).min` and `type(T).max` for every integer type T that returns the smallest and largest value representable by the type.\n\n### Compiler Features\n\n- **Commandline Interface**: Don't ignore `--yul-optimizations` in assembly mode.\n- **ABI**: Allow using abi encoding functions for calldata array slices without explicit casts.\n- **Wasm binary output**: Implement `br` and `br_if`.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.6.8).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/05/26/array-slices.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/05/26/array-slices.json deleted file mode 100644 index f1cade59..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/05/26/array-slices.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: Array Slices","date":"2020-05-26","author":"Solidity Team","category":"Explainers"},"content":"\nStarting from [version 0.6.0](https://github.com/ethereum/solidity/releases/tag/v0.6.0), Solidity supports array slices.\n[Array slices](https://solidity.readthedocs.io/en/v0.6.8/types.html#array-slices) are handy when you want to reference a\ncontiguous portion of an array but do not want to perform a full copy of that portion. For now, array slices are only\nsupported for calldata arrays.\n\n## How to use Array Slices\n\nThe expression `x[start:end]` references a portion of the calldata array `x` starting at index `start` and ending just\nbefore index `end`.\n\nBoth `start` and `end` are optional. If not provided, `start` defaults to `0` and `end` defaults to the length of\nthe respective array.\n\nPlease note that no copy from calldata to memory is performed.\n\nYou can use the slice syntax on variables, but also with `msg.data`.\n\nArray slices can be especially useful in combination with `abi.decode` in the\n[fallback function](https://blog.soliditylang.org/2020/03/26/fallback-receive-split/):\n\n```solidity\npragma solidity ^0.6.5;\n\ninterface OtherContract {\n function changeOwner(address) external;\n}\n\ncontract Proxy {\n OtherContract implementation;\n address badOwner;\n fallback() external {\n if (msg.sig == OtherContract.changeOwner.selector) {\n // Here, abi.decode directly operates on the calldata array slice.\n address newOwner = abi.decode(msg.data[4:], (address));\n require(newOwner != badOwner);\n }\n (bool success,) = address(implementation).delegatecall(msg.data);\n require(success);\n }\n}\n```\n\n## How Array Slices Work Internally\n\nCalldata arrays have always been represented by two values: A start pointer and a length value. This is exactly the same\nrepresentation we use for calldata array slices.\n\n## Limitations and Future Plans\n\nArray slices support index access and `.length` just like arrays, but do not support most copy operations.\n\nAs of now, array slices are only implemented for calldata.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans.json deleted file mode 100644 index a071e952..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Sourcify: Towards Safer Contract Interaction for Humans","date":"2020-06-02","author":"Edi Sinovčić, Franziska Heintel","category":"Announcements"},"content":"\n**tl;dr**: Building sensible blockchain applications for humans is **hard**. You can enhance the user experience of\nyour dapp today by leveraging the power of open source. Increase awareness and give more transparency on what users\nare _actually_ doing when interacting with your code on the blockchain, i.e. when signing a transaction, by publishing\nthe source code to this decentralized repository and using metadata files, which translate “random” hex strings into\nhuman-readable language. Sourcify is a tool to help you do exactly that. If you want to upload your source code, either visit [verification.komputing.org](https://verification.komputing.org/), the [Sourcify Github repo](https://github.com/ethereum/sourcify) or use the Sourcify\nplugin in Remix. And, to learn how Sourcify works and why it matters, simply keep on reading.\n\nYou might already know Sourcify under the name “Source-Verify”/ ”Source-Verifier” - don’t despair, we just decided to give\nit a nicer name!\n\n## YOLO Signing - One of Today’s Everyday Problems in Ethereum UX 🙈📝🧨\n\nThink about the following: How many developers of the dapps you are using do you know personally?\n\nLet’s imagine you want to interact with a dapp using MetaMask and it shows you this dialogue:\n\n![Yolo Signing](/img/2020/05/MetaMask_Yolosign.png)\n\n_You Only Live Once (YOLO)  Signing - confirm at your peril_\n\nWhat does all that hex data mean? You basically have no idea what you are agreeing to  - but you only live once, right?\nDo you reject or confirm? If you go ahead and sign, you are **YOLO signing**. YOLO signing is bad because even if you only\nlive once, you can probably regret some stuff forever! ;)\n\nBy confirming, you blindly trust the developers of this dapp that it will do what they promised. And while it’s great to\nhave faith in humanity, it’s even greater to have the option to verify what is happening and take an informed decision.\n\n## Source Verification & NatSpec to the Rescue\n\nTo prevent your users from having to blindly trust you and YOLO sign, you, as a dapp developer, can verify your code.\n\nBy verifying and uploading your code, you allow any other developer to recompile the source code and check it for themselves.\n\nProperly “verifying” your code involves two steps:\n\n1. Commenting the code using [NatSpec](https://solidity.readthedocs.io/en/latest/natspec-format.html). NatSpec is the\n Ethereum Natural Language Specification Format which describes functions, return values etc. in a friendly way.\n1. Publishing the dapp’s source code and its metadata to a decentralized network.\n\n## Meet Sourcify, a decentralized automated contract verifying service 📝🔍✔️\n\nSourcify tries to make the process of source verification (step 2 in the list above) easy and transparent. There are different ways\nhow you can make use of the tool.\n\nYou can either...\n\n- Use the interface hosted on [verification.komputing.org](https://verification.komputing.org/)\n- Use [Remix](https://remix.ethereum.org/) plugins (we’ll show you a play by play in one of the following posts!)\n- Publish each source code file and the metadata file to [IPFS](https://docs.ipfs.io/concepts/what-is-ipfs/) manually\n (Sourcify will then pick it up automatically around the time of deployment)\n- [Run](https://github.com/ethereum/sourcify) Sourcify yourself\n\n## How does Sourcify work under the hood? 📖\n\nSourcify is a project on the Ethereum blockchain that:\n\n- Listens for the deployment of smart contracts.\n- Checks to see if their metadata and source code is published on IPFS or Swarm.\n- Recompiles the code.\n- Checks that it is the same as the deployed code.\n- Permanently stores the source code, ABI and other metadata on IPFS.\n\n![Sourcify Flowchart](/img/2020/05/Sourcify_Flowchart.png)\n\n_Sourcify Verification Flow_\n\nSourcify has a monitoring service that listens to new blocks which are mined on an Ethereum blockchain. Currently it is\nmonitoring the Ethereum mainnet and the Rinkeby and Goerli testnets.\n\nIt takes the transactions in the blocks, derives their bytecode metadata and tries to find links in the data that go to\neither IPFS or Swarm for the source contracts and metadata files.\n\nSubsequently, it tries to fetch the files. If that is successful, the retrieved files are sent to the verifier which\nattempts to recompile the code and checks that it is the same as the deployed code. If everything went well and recompiled\nmetadata and code are a match, all of it gets indexed, pinned and stored (in a public decentralized system, currently IPFS).\n\nAnd if you’d like to verify the verifier, no problem: Simply take the files from IPFS and recompile them yourself -\nthe necessary compiler options are also stored in the system.\n\n## Verify all the Sources - Are we there yet? ⛅\n\n**The bad news:** The road towards a more secure, more aware, educated and trustless UX for Ethereum dapps is certainly\nstill long.\n\n**The good news:** There are many things we can do _right now_ to contribute towards it!\n\nWhat dapp developers can do:\n\n- Use NatSpec to comment your code\n- Upload your source code using Sourcify\n\nWhat the broader Ethereum community can do:\n\n- Expand NatSpec\n- Implement NatSpec into wallets\n- Give wallets confidence in the source of the NatSpec (e.g. via Sourcify)\n- Implement wallet support for Sourcify\n- Support dapp devs to use NatSpec, metadata, Sourcify by extending the developer tooling around it (e.g. help with\n auto-publishing tools)\n\nWith [Version 0.6.8](https://github.com/ethereum/solidity/releases/tag/v0.6.8), Solidity added a recommendation to use\nSPDX license identifiers for all source files, which is also stored in the contract metadata. This change helps tools like\nSourcify as well as deployment tools by enabling them to check for open source licenses before uploading the code.\n\nWe hope you enjoyed this first high level introduction into why source verification matters and how it could work. Feel\nfree to reach out to us with any question you might have and stay tuned for more content to follow soon.\n\n---\n\nFollow Sourcify on [Twitter](https://twitter.com/SourcifyEth).\n\nChat with us on [Gitter](https://gitter.im/ethereum/source-verify).\n\nCheck out the Sourcify code on [Github](https://github.com/ethereum/sourcify).\n\nBrowse the verified contracts [here](https://contractrepo.komputing.org/).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/05/Solidity-069-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/05/Solidity-069-release-announcement.json deleted file mode 100644 index d0d38a39..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/05/Solidity-069-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.9 Release Announcement","date":"2020-06-05","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.6.9](https://github.com/ethereum/solidity/releases/tag/v0.6.9) adds SMT-checking to solc-js,\nallows `calldata` for all variables and provides a mechanism to specify an import directory.\n\nPlease note that the solc-js / soljson binary includes the Z3 SMT solver built-in, which causes an increase in the binary size.\n\n## Notable New Features\n\n### SMTChecker\n\nThe [SMTChecker](https://solidity.readthedocs.io/en/v0.6.8/security-considerations.html#formal-verification) is a component of the Solidity compiler which has been in development for quite some time now.\n\nIts aim is to bring formal verification methods to the Solidity compiler. Solidity implements a formal verification approach based on SMT/Horn solving. The SMTChecker module automatically tries to prove that the code satisfies the specification given by `require/assert` statements. The SMTChecker also checks automatically for arithmetic underflow/overflow, trivial conditions,\nunreachable code, and popping empty storage arrays.\n\nSo far, the SMTChecker has lacked an easy and convenient way to be used.\nThe difficulty lies in the fact that it requires an SMT solver to be compiled or linked into the compiler. To aid that, we are now shipping solc-js with the SMT solver Z3 compiled in. This means you can directly use the SMTChecker with everything\nthat uses solc-js - including [Remix](https://remix.ethereum.org/)!\n\nBelow, you find a simple example contract which shows an overflow check being reported. If you copy-paste it to Remix, it will show the error.\n\n```solidity\n// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.6.9;\npragma experimental SMTChecker;\n\ncontract Token {\n mapping(address => uint) balances;\n address owner;\n constructor () public { owner = msg.sender; }\n function transfer(address recipient, uint amount) public {\n // If we comment out the next line, SMTChecker\n // will complain about underflow.\n require(balances[msg.sender] >= amount);\n balances[msg.sender] -= amount;\n // SMTChecker detects a possible overflow in the next line\n // and even provides example inputs:\n // Warning: Overflow (resulting value larger than 2**256 - 1) happens here\n // for:\n // = 2**256\n // amount = 1\n // balances[msg.sender] = 0\n // balances[recipient] = 2**256 - 1\n balances[recipient] += amount;\n }\n function mint(address recipient, uint amount) public {\n require(msg.sender == owner);\n balances[recipient] += amount;\n }\n}\n```\n\nThe component can also analyze more complex cases including possible call chains from external callers, as demonstrated in the following buggy state machine example:\n\n```solidity\n// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.6.9;\npragma experimental SMTChecker;\n\ncontract StateMachine {\n enum State { Init, End }\n State state;\n uint[] a;\n\n constructor() public {\n state = State.Init;\n a.push();\n }\n\n function move() public {\n require(state == State.Init);\n state = State.End;\n a.pop();\n }\n\n function reset() public {\n require(state == State.End);\n state = State.Init;\n a.pop();\n }\n}\n```\n\nA sequence of 3 transactions (deployment, `move`, `reset`) causes an empty array pop, where SMTChecker then reports:\n\n```solidity\nbrowser/state_machine.sol:24:9: Warning: Empty array \"pop\" detected here.\n a.pop();\n ^-----^\n```\n\nNote that the SMTChecker makes several queries to the SMT solver, which might take some time since it is a computationally expensive procedure.\n\n### Calldata Variables\n\nYou can now use `calldata` as the data location for reference variables everywhere, not only in external functions. Note that since the EVM does not allow modification of calldata, you cannot create new values in calldata or copy something to calldata.\n\n```solidity\n// SPDX-License-Identifier: GPL-3.0\npragma solidity >=0.6.9;\n\ncontract C {\n address[] owners;\n function addOwners(address[] calldata _newOwners) public {\n // We pass _newOwners on as a calldata array.\n checkUnique(_newOwners);\n for (uint i = 0; i < _newOwners.length; i++)\n owners.push(_newOwners[i]);\n }\n /// This internal function can iterate over the calldata array.\n /// Creating a copy in memory is not required.\n function checkUnique(address[] calldata _newOwners) internal pure {\n for (uint i = 0; i < _newOwners.length; i++)\n for (uint j = i + 1; j < _newOwners.length; j++)\n require(_newOwners[i] != _newOwners[j]);\n }\n}\n```\n\nThe benefit of using calldata variables is that it saves\na copy from calldata to memory and you can be sure that the\narray or struct cannot be modified.\n\nUsually, the ABI decoder performs range checks on the entire calldata when it is copied to memory to avoid malformed calldata from causing any problems.\nNote that when using calldata variables for nested calldata structs or arrays those checks will instead only be performed when you access them.\n\n### BasePath\n\nWith the introduction of the `--base-path` option to both\nsolc and solcjs, we hope that imports will be easier to use.\n\nIf you run `solc --base-path ./contracts/ ./contracts/MainContract.sol`\nand that file contains `import \"./OtherContract.sol\";`, the Solidity\ncompiler will automatically search for `./contracts/OtherContract.sol`\nand import it.\n\nWhile this sounds like a pretty trivial feature, we hope that you still like it!\n\nAlso note that if you use `--base-path`, the base path itself will\nnot be included in any metadata artefacts, you will only get relative\npaths starting from the base path.\n\n## Full Changelog\n\n### Language Features\n\n- Permit calldata location for all variables.\n- **NatSpec**: Support NatSpec comments on state variables.\n- **Yul**: EVM instruction `pc()` is marked deprecated and will be removed in the next breaking release.\n\n### Compiler Features\n\n- **Build system**: Update the soljson.js build to emscripten 1.39.15 and boost 1.73.0 and include Z3 for integrated SMTChecker support without the callback mechanism.\n- **Build system**: Switch the emscripten build from the fastcomp backend to the upstream backend.\n- **Code Generator**: Do not introduce new internal source references for small compiler routines.\n- **Commandline Interface**: Adds new option `--base-path PATH` to use the given path as the root of the source tree (defaults to the root of the filesystem).\n- **SMTChecker**: Support array `length`.\n- **SMTChecker**: Support array `push` and `pop`.\n- **SMTChecker**: General support to BitVectors and the bitwise `and` operator.\n\n## Bugfixes\n\nThis release comes with many minor, non-security relevant bugfixes. The correspoding bugs do not affect (the correctness of) the generated\nbytecode.\n\nYou can track all important, security-relevant bugs in the [Solidity bug json file](https://github.com/ethereum/solidity/blob/develop/docs/bugs.json).\n\n- **Code Generator**: Trigger proper unimplemented errors on certain array copy operations.\n- **Commandline Interface**: Fix internal error when using `--assemble` or `--yul` options with `--machine ewasm` but without specifying `--yul-dialect`.\n- **NatSpec**: DocString block is terminated when encountering an empty line.\n- **Optimizer**: Fixed a bug in BlockDeDuplicator.\n- **Scanner**: Fix bug when two empty NatSpec comments lead to scanning past EOL.\n- **SMTChecker**: Fix internal error on try/catch clauses with parameters.\n- **SMTChecker**: Fix internal error when applying arithmetic operators to fixed point variables.\n- **SMTChecker**: Fix internal error when assigning to index access inside branches.\n- **SMTChecker**: Fix internal error when short circuiting Boolean expressions with function calls in state variable initialization.\n- **Type Checker**: Disallow assignments to storage variables of type `mapping`.\n- **Type Checker**: Disallow inline arrays of non-nameable types.\n- **Type Checker**: Disallow usage of override with non-public state variables.\n- **Type Checker**: Fix internal compiler error when accessing members of array slices.\n- **Type Checker**: Fix internal compiler error when forward referencing non-literal constants from inline assembly.\n- **Type Checker**: Fix internal compiler error when trying to decode too large static arrays.\n- **Type Checker**: Fix wrong compiler error when referencing an overridden function without calling it.\n\nLast but not least, as always, we'd like to thank all contributors who helped make this release possible!\n\nYou can download the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.6.9).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/09/solidity-summit-recap.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/09/solidity-summit-recap.json deleted file mode 100644 index 89eb5cba..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/09/solidity-summit-recap.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Wrapping up the Virtual Solidity Summit 2020","date":"2020-06-09","author":"Franziska Heintel","category":"Announcements"},"content":"\nRoughly one month ago, we held the first [Solidity Summit](https://solidity-summit.ethereum.org/) - a free interactive forum with discussions and talks on Solidity, Yul, language design and tooling. It took place on April 29-30 and was powered by a virtual meeting infrastructure based on open-source, self-hosted [Jitsi](https://jitsi.org/) video chat rooms. The platform was supplied by [Interspace.Chat](https://github.com/interspacechat/interspace.chat).\n\n**Before we dive into the recap: Your input and active participation was much appreciated and we want to take this opportunity to say thank you! We hope you enjoyed the event as much as we did!**\n\nA special thanks goes out to all the speakers and moderators of the open discussions.\n\nToday, we would like to take a few moments to look at the event from a retrospective point of view, as well as share the feedback we received afterwards, what we learned ourselves and all relevant post-conference links.\n\nAnd in case you missed the event, don't worry! You can still find recordings of all talks below in the \"video archive\" section of this post.\n\n## Insights & Stats 📊\n\nInitially, the Solidity Summit was planned to be a small, language design focused in-person gathering in Berlin with a expected participant count of 100-150 people.\n\nSince the global circumstances forced us to [transform it into an online event](https://blog.soliditylang.org/2020/04/17/solidity-summit-2020-goes-interspace/), there was luckily no need for limits on participation required anymore. The event was free of charge and the livestreams were publicly accessible for anybody to join.\n\n**Solidity Summit 2020 by the numbers..**\n\n- Prior to the event, we received roughly 250 applications via the signup form.\n- During the event, the maximum combined participation of livestream and video conference room reached 150 concurrent participants, with 50-60 being the lowest concurrent participation rate.\n- Both livestreams for conference day 1 and 2 reached more than 1000 playbacks each.\n- The conference was a single track event, featured 23 talks and 13 open discussion rounds in total.\n- The talks were brought to you by 20 speakers from teams all across the Solidity ecosystem as well as from 5 members of the EF Solidity team.\n\nYou can have a look at the full agenda [here](https://docs.google.com/spreadsheets/d/1ylkaTYKx9TbAifCgyH2jN9SKJKrYfzab9zzTZgSL44g/edit#gid=0).\n\n![Solidity Summit Agenda Day 1](/img/2020/06/AgendaDay1.png)\n_Solidity Summit Agenda - Day 1_\n\n![Solidity Summit Agenda Day 2](/img/2020/06/AgendaDay2.png)\n_Solidity Summit Agenda - Day 2_\n\n## What did we learn? 💡\n\nOrganizing an online conference for the first time was an exciting and challanging task. Here are a few learnings and takeways, which we would like to share:\n\n- **Finding the right tools is essential.** Which tools can best facilitate an open and interactive discussion online? How many tools are needed for a truly interactive expereience? If possible, can we support open source tooling without sacrificing good UX?\n- **Online conferencing can be quite exhausting.** Next time we'll do more breaks!\n- **Open discussions on language design questions are hard.** Good collaboration tools, preparation and moderation are important to facilitate the sessions and help structure them.\n\n## Video Archive: Rewatch everything 📺 🍿\n\nIndividual videos of all talks are available online [in this playlist](https://www.youtube.com/playlist?list=PLaM7G4Llrb7xlGxwlYGTy1T-GHpytE3RC).\n\nIf you want to rewatch a whole day, you can do so by watching the livestream recording of the respective day. If you only want to see the talks (no discussion rounds) of Day 1 or Day 2, follow the playlist links below.\n\n- Full Day 1 [Livestream](https://www.youtube.com/watch?v=lhjo2FuU4v0&list=PLX8x7Zj6VezlP4XWSSgly6tQlb87g4Cca)\n- Talks Day 1 [Playlist](https://www.youtube.com/watch?v=eZERCEhk5lg&list=PLX8x7Zj6Vezk-AGlO3Ip_vPVwroV9aNqB)\n- Full Day 2 [Livestream](https://www.youtube.com/watch?v=U3QsM_UDah0&list=PLX8x7Zj6VezlP4XWSSgly6tQlb87g4Cca&index=2)\n- Talks Day 2 [Playlist](https://www.youtube.com/watch?v=e1_4xk9nLy8&list=PLX8x7Zj6VezkiZCiif7AcID-yNaV1EPj3)\n\nPlease note that the discussion sessions have not been uploaded individually.\n\n## Outcomes of the Feedback Survey 📮\n\nAfter the summit, we wanted to find out how you liked it, so we conducted a short participant satisfaction survey. Here's a boildown of the results:\n\nOverall, participants had a very good impression of the Solidity Summit. They especially liked the \"excitement of all participants about improving the language\" and the single track format.\n\n![Survey Results Overall Impression](/img/2020/06/surveyOverall.png)\n\nMoreover, the survey participants praised the positive energy and general organization, the online/virtual setup, the focus on technical content and the quality of the talks.\n\n![Survey Results Content Quality](/img/2020/06/surveyQuality.png)\n\nStill room for improvement was detected especially in the open discussion format. Ideas on how to improve it included:\n\n- Invite more stakeholders to lead the sessions and do the opening talks of the discussion rounds (i.e. as an advocate for a specific feature)\n- Allocate more time to selected discussion topics/ feature ideas to allow those to be specified out further\n- Enhance collaboration possibilities via an easier chat or interaction interface (chatting via Gitter got messy at some point)\n- Clearly state the goals or preferred outcomes of each discussion round beforehand\n\nFurthermore, participants wished for more breaks and some prefered a conference to take place on the weekend instead of during the week.\n\nLast but not least, we asked if you would attend Solidity Summit again: **100% said yes!**\n\n## Future Plans 🔮\n\nIn order to not have to wait until the next edition of the Solidity Summit, we are evaluating several formats and means how we can keep in touch with the Solidity community moving forward.\n\nThe big majority of survey participants stated that they would be interested in more regularly discussing new features and language design questions with us.\n\n![Survey Results Keep the Discussion Going](/img/2020/06/surveyDiscuss.png)\n\nTo do exactly that we decided to set up (for now) irregular community language design calls.\n\nEach call will discuss one language design topic. The first test balloon of such a call was launched last Wednesday (2020-06-03), where we invited community members to discuss \"SafeMath by default\". You can find the notes of this call [here](https://github.com/ethereum/solidity/issues/9054).\n\n## Wrapping It Up\n\n**A programming language is nothing without the developers that build stuff with it, that's why we would like to thank you for your continued input and support!**\n\nWe hope to see or hear many of you soon again, either in Gitter, Github issues, a community language design call or for the next iteration of the Solidity Summit. 🎉\n\nIn the meantime, please feel free to reach out to us with your ideas on how to improve the interaction between the Solidity team and the community at any time.\n\n---\n\nFollow us on [Twitter](https://twitter.com/solidity_lang)\n\nAsk us anything on [Gitter](https://gitter.im/ethereum/solidity)\n\nCheck out Solidity on [GitHub](https://github.com/ethereum/solidity)\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/11/Solidity-0610-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/11/Solidity-0610-release-announcement.json deleted file mode 100644 index 82618d4d..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/11/Solidity-0610-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.10 Release Announcement","date":"2020-06-11","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.6.10](https://github.com/ethereum/solidity/releases/tag/v0.6.10) fixes an important bug that was introduced in the previous release and adds error codes.\n\nPlease upgrade if you are using internal library functions with calldata parameters in connection with `using for`.\n\n## Important Bugfixes\n\n### Invalid Access for Calldata Parameters in Internal Library Functions\n\n**Problem**: The previous release, [Solidity 0.6.9](https://github.com/ethereum/solidity/releases/tag/v0.6.9), introduced the possibility to use `calldata` types in internal and not, as previously, only in external functions.\nThis resulted in a bug related to calling library functions with calldata parameters via `using for`.\nMore specifically, the compiler would copy all calldata arguments to memory first - like done for calls to public library functions.\nThe internal library function would then receive the memory pointer but interpret it as a calldata pointer resulting in\ncalldata reads at the wrong location and potential stack corruption. The stack corruption is caused by the fact that\ncalldata pointers can use two stack slots while memory pointers always only use one stack slot. This can in turn cause\nproblems for other variables and a wrong jump at the function return.\n\nWe assigned a severity of \"very low\" due to the fact that the bug was only introduced a week ago\nand is very easy to detect through testing.\n\n**Solution**: Upgrade to [Solidity 0.6.10](https://github.com/ethereum/solidity/releases/tag/v0.6.10), which does not perform the copy to memory.\n\n**Example of affected code**\n\n```solidity\nlibrary L {\n function helper(bytes calldata _x) internal pure returns (byte) {\n return _x[0];\n }\n}\n\ncontract C {\n using L for bytes;\n function fun(bytes calldata _x) public pure returns (byte) {\n // This would incorrectly copy ``_x`` from calldata\n // to memory and then call L.helper with this memory array,\n // but the function expects a calldata array and thus\n // reads the data from the wrong calldata offset.\n return _x.helper();\n }\n}\n```\n\nWe thank Luis from Gelato ([@gitpusha](https://github.com/gitpusha)) for reporting the bug!\n\n## Notable New Features\n\n### Error Codes\n\nA notable new feature is the introduction of error codes. In Standard JSON input/output mode\n(`--standard-json`) the error codes will always be available under the property `\"errorCode\"`.\nIn the command-line interface, you can enable error codes via the switch `--error-codes`.\n\nTwo errors that are essentially about the same thing but contain different error messages, e.g. when the error concerns two different types, will use the same error code.\n\nError codes are intended to be reasonably stable across releases.\n\nWe hope that this allows improved analysis of smart contracts without complicated and fragile checks on the error message.\n\n**Example:**\n\nThe following source code generates three error messages:\n\n```solidity\n// SPDX-License-Identifier: MIT\npragma solidity ^0.6.10;\ncontract C {\n uint8 x = 1000;\n function f(uint _y) public {\n x = _y;\n x.g();\n }\n}\n```\n\n```\n# solc --error-codes c.sol\nError (7407): Type int_const 1000 is not implicitly convertible to expected type uint8.\n --> c.sol:5:13:\n |\n5 | uint8 x = 1000;\n | ^^^^\nError (7407): Type uint256 is not implicitly convertible to expected type uint8.\n --> c.sol:7:9:\n |\n7 | x = _y;\n | ^^\nError (9582): Member \"g\" not found or not visible after argument-dependent lookup in uint8.\n --> c.sol:8:5:\n |\n8 | x.g();\n | ^^^\n```\n\nNote that the errors concerning invalid type conversions use the same code even though the text is different.\nThe error about the missing member uses a different code, though.\n\nWe currently do not plan to create a complete list of all error codes. If you would like to look them up, please take a look at the source code of the compiler.\n\nError codes are currently always four-digit decimals with no structure in the number assignments.\n\n## Full Changelog\n\n### New Features\n\n- **Commandline Interface**: Re-group help screen.\n- **Output compilation error codes** in standard-json and when using `--error-codes`.\n- **Yul**: Raise warning for switch statements that only have a default and no other cases.\n\n### Bugfixes\n\n- **SMTChecker**: Fix internal error when encoding tuples of tuples.\n- **SMTChecker**: Fix aliasing soundness after pushing to an array pointer.\n- **Type system**: Fix internal compiler error on calling externally a function that returns variables with calldata location.\n- **Type system**: Fix bug where a bound function was not found if `using for` is applied to explicit reference types.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.6.10).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/18/solidity-0.6-inheritance.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/18/solidity-0.6-inheritance.json deleted file mode 100644 index 54b66311..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/18/solidity-0.6-inheritance.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: inheritance","date":"2020-06-18","author":"Elena Gesheva","category":"Explainers"},"content":"\nSimilar to object-oriented programming in Solidity - a contract-oriented language - the inheritance and polymorphism features are as widely adopted and critical for the language evolution. There is hardly any Solidity developer who hasn't used these language features in their contracts to decouple logic and increase code reuse. With version 0.6 of the language the main improvements introduced are to make existing rules explicit in addition to introducing interface inheritance and disallowing the dangerous state variable shadowing. The compiler continues to use C3 Linearization, see [Solidity documentation](https://solidity.readthedocs.io/en/latest/contracts.html?#inheritance) for inheritance.\n\n## Explicit `virtual` and `override`\n\nFunctions are no longer virtual by default. This means that a call to a non-virtual function will always execute that function regardless of any other contract in the inheritance hierarchy. This reduces ambiguity that exists in version 0.5 where all functions are implicitly virtual, allowing to be overridden further down the inheritance structure. This is especially dangerous in big inheritance graphs where this ambiguity can lead to unintended behaviour and bugs.\n\nFor example in contract `C` below calling `setValue` calls the most derived implementation which is from contract `B`. However this is non-obvious from the implementation.\n\n```solidity\npragma solidity ^0.5.17;\ncontract A {\n uint public x;\n function setValue(uint _x) public {\n x = _x;\n }\n}\n\ncontract B {\n uint public y;\n function setValue(uint _y) public {\n y = _y;\n }\n}\n\ncontract C is A, B {\n}\n```\n\nWith version 0.6 for the example above the compiler raises a type error: `Derived contract must override function \"setValue\". Two or more base classes define functions with the same name and parameter types`. The above is an example of multiple inheritance where the same function is inherited from multiple base classes - `A` and `B`. In this case, it has to be overridden and the bases have to be listed in the override specifier. Important to note that the order in `override(A,B)` does not matter - specifically it does not change the behaviour of `super` - this is still dictated by the C3 linearization of the inheritance graph which is determined by the order in the `contract C is A, B { ... }` declaration.\n\n```solidity\npragma solidity ^0.6.10;\ncontract A {\n uint public x;\n function setValue(uint _x) public virtual {\n x = _x;\n }\n}\n\ncontract B {\n uint public y;\n function setValue(uint _y) public virtual {\n y = _y;\n }\n}\n\ncontract C is A, B {\n function setValue(uint _x) public override(A,B) {\n A.setValue(_x);\n }\n}\n```\n\nNote that you can only override functions if they are marked `virtual`. Additionally, any overriding function must be marked `override`. If that again should be overridable, it has to also be marked `virtual`.\n\n`interface` functions are implicitly `virtual` so when implementing an interface you have to explicitly override its functions in the implementation. There is an ongoing discussion on this design [here](https://github.com/ethereum/solidity/issues/8281).\n\nIt's worth noting that the keyword `super` works as it did before: It calls the function one level higher up in the flattened inheritance hierarchy. Also unchanged: `super` is still not allowed on `external` functions.\n\n## Interfaces can inherit\n\nThis functionality is new to version 0.6 and allows interface inheritance. The resulting interface is a combination of all inherited interfaces' functions which the contract has to implement.\n\n```solidity\npragma solidity ^0.6.10;\ninterface X {\n function setValue(uint _x) external;\n}\n\ninterface Y is X {\n function getValue() external returns (uint);\n}\n\ncontract Z is Y {\n uint x;\n function setValue(uint _x) external override { x = _x; }\n function getValue() external override returns (uint) { return x; }\n}\n```\n\nNote that if the contract does not implement all functions it has to be marked as `abstract`.\n\n```solidity\npragma solidity ^0.6.10;\nabstract contract Z is Y {\n uint x;\n function setValue(uint _x) external override { x = _x; }\n}\n```\n\n## Abstract contracts\n\nWith version 0.5 a contract that doesn't implement all of its functions is implicitly made abstract by the compiler:\n\n```solidity\npragma solidity ^0.5.17;\ncontract X {\n function setValue(uint _x) public virtual;\n}\n```\n\nWith 0.6 this differentiation has to be explicit with the compiler generating error `contract X should be made abstract` otherwise\n\n```solidity\npragma solidity ^0.6.10;\nabstract contract X {\n function setValue(uint _x) public virtual;\n}\n```\n\n## Public variables safer override for external functions\n\nAlthough this feature existed before 0.6 it is now safer with the added checks that the getter function of the variable (generated by the compiler) matches the parameter and return type of the overriden external function. With version 0.5 it is possible these were allowed to differ as shown in the following example:\n\n```solidity\npragma solidity ^0.5.17;\ninterface A\n{\n function f() external pure returns(uint8);\n}\n\ncontract B is A\n{\n uint256 public f = 257;\n}\n```\n\nContract `A`'s call to underlying contract `B` would return `1` as the `257` value overflows when cast to `uint8`.\n\nWith 0.6 now the above generates `TypeError: Overriding public state variable return types differ` forcing us to resolve the type conflict thus avoiding the overflow:\n\n```solidity\npragma solidity ^0.6.10;\ninterface A\n{\n function f() external pure returns(uint256);\n}\n\ncontract B is A\n{\n uint256 public override f = 257;\n}\n```\n\nNote that `public` state variables can only override `external` functions and it remains disallowed for variables to override `internal` or `public` functions.\n\n## No state variables shadowing\n\nInheriting visible state variables with the same name in version 0.5 was allowed by the compiler and is only raised as a problem by some static analysis tools. The following example demonstrates the problem with this design:\n\n```solidity\npragma solidity ^0.5.17;\ncontract A {\n uint public x;\n\n function setValue1(uint _x) public { x = _x; }\n}\n\ncontract B is A {\n uint public x;\n\n function setValue2(uint _x) public { x = _x; }\n}\n```\n\nIn this context functions in contract `A` referencing `x` are using its own instance of that state variable - `A.x` whereas for `B` it's `B.x`. Therefore the result of calling `B.setValue2(100)` would be that `B.x` will be set to `100` while calling `B.setValue1(200)` will set `A.x` to `200`.\n\nWith 0.6 this is now prohibited and raises a compiler `DeclarationError: Identifier already declared` error.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/25/sourcify-faq.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/25/sourcify-faq.json deleted file mode 100644 index 3dbd4a45..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/06/25/sourcify-faq.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"All you need to know about Sourcify","date":"2020-06-25","author":"Franziska Heintel","category":"Explainers"},"content":"\nWelcome to Sourcify's first short FAQ! If your questions around source verification haven't been answered after reading\nthis post, please feel free to drop by the [Sourcify Gitter channel](https://gitter.im/ethereum/source-verify) and ask us\nany question there. Also stay tuned on more turorials and developer focused content to follow here and on the [Remix blog](https://medium.com/remix-ide)!\n\n## Source Verification\n\n### What is source verification?\n\nSolidity contract source code can be verified by checking whether the on-chain deployed code\nis matching with published source code files. In order to allow for source verification,\nthe source and metadata files need to be published, thus enabling developers to verify that the deployed bytecode is an exact match to the\npublished files. By doing so, it can be verified that the contract code is exactly the same as when it was deployed on the\nblockchain and has not been adjusted or tampered with before deploying it.\n\n### Why is source verification important?\n\nWithout open source contracts it is hard to tell what the application you are using will actually be doing.\nOne of the decentralized web's biggest aspirations is to build a trustless infrastructure, aiming to reduce the need to\ntrust third parties and service providers and decreasing censorship opportunities. It should, by design, not be required to\n\"blindly\" trust a dapp developer or web3 project. It should always be possible to verify it for yourself,\nor if you're not tech-savvy enough, leverage the power of the crowd of other developers who can look at and call\nout malicious code once it's open source.\n\n### Why should I publish my source code / open-source it?\n\nClosed source contract code cannot easily be verified since the trustless setup is not maintained if you have to rely\non a third party which verifies the code for you. In that scenario, the verification service providers could be an attack\nvector and would need to be trusted.\n\n## Metadata\n\n### What is bytecode metadata?\n\nMetadata is data that describes and gives information about other data. [Bytecode (contract) metadata](https://solidity.readthedocs.io/en/latest/metadata.html)\nin Solidity is supported since version 0.4.7 and is automatically generated by the Solidity compiler in the form of a JSON file.\nThe metadata file contains information about the compiled contract, e.g. the used compiler version, the sources used,\nthe ABI and the NatSpec documentation. The metadata file also contains IPFS and SWARM hashes of the source code, which allows\nto retrieve them if they are available.\n\nMetadata files can also contain literal sources, which means that the actual code of the contract is present in the metadata\nfile's source section. Literal sources will be covered by the Sourcify verification [in future](https://github.com/ethereum/sourcify/issues/187), too.\n\n### What is NatSpec?\n\n[NatSpec](https://solidity.readthedocs.io/en/latest/natspec-format.html) is short for Ethereum Natural Language Specification\nFormat. Solidity contracts can use NatSpec comments to provide rich documentation for functions, return variables and more.\nThe comments are categorized into developer-focused and end-user-focused messages. The end-user-focused messages can be crucial\nto users since they describe what the contract interaction will do in plain language. It is highly recommended to fully\nannotate Solidity contracts using NatSpec for all public interfaces.\n\nNatSpec comments can be displayed to the user at the time of interaction, e.g. by being prompted in the wallet interface\nbefore signing a transaction, or later as a comment, e.g. in a list of past transactions.\n\n## Sourcify\n\n### What is Sourcify?\n\nSourcify is an initiative which aims to make interacting with smart contracts on the blockchain safer and more transparent\nfor users.\n\nTo achieve this goal, Sourcify supports several efforts to foster adoption of open-source source verification, metadata files\nand NatSpec comments.\n\nAt its core, Sourcify currently maintains\n\n- an [interface](https://sourcify.dev/) that helps developers to verify metadata and contract source code.\n- a [contract repository](https://repo.sourcify.dev/) of all verified contracts.\n- a [monitoring & verifier service](https://github.com/ethereum/sourcify) that checks for new contracts on Ethereum blockchains\n (mainnet and testnets) and tries to verify them automatically.\n\nSourcify basically provides the base layer, which allows other tools to be built on top of it. Its main purpose is to keep metadata\nand source files available via IPFS and Swarm (preventing that the links in the bytecode turn into dead links).\n\nBesides the technical infrastructure, Sourcify is also a collective movement to bring transparency and awareness to the space.\nWe try to educate and build bridges between development tools, wallets, interfaces and other components which all play an\nimportant role in demystifying interaction with smart contracts for the end user and hence making blockchain interactions safer.\n\n### How does the Sourcify monitoring & verifier service work?\n\nThe monitoring and verifier component...\n\n- listens for new blocks on blockchains and fetches transactions from them.\n- checks to see if their metadata and source code is published on IPFS or Swarm.\n- recompiles the code.\n- checks that it is the same as the deployed code.\n- permanently stores the source code, ABI and other metadata on IPFS.\n\n### How is the Sourcify verifier different to verifying my contracts on EtherScan?\n\nBefore we dive into the differences: EtherScan is doing invaluable work for the ecosystem with their\n[contract verification](https://etherscan.io/verifyContract) service, which we are very grateful for!\n\nHowever, there are some minor problems with the current setup in the EtherScan verification: EtherScan often \"flattens\" the code\nwhich makes it impossible to verify the metadata. At this point, not even EtherScan could recompile the code to the last byte.\nYou'd have to trust whoever uploaded the source code that this is the original source code with the correct NatSpec comments and variable names.\n\nSourcify adds the option to make any contract independently verifiable. It also covers another important aspect:\nthe availability of the code. Should EtherScan ever go down, there's no way to access their verified contracts anymore.\nSourcify tries to solve this by making the storage of the source files and the processes around the verification more\ndecentralized, independent and hence more resilient.\n\n### How is source verification & commenting your code with NatSpec connected and why is it more powerful if you do both?\n\nIf you verified that the code you deployed is an exact match to what you open-sourced that is great!\nDevelopers now can verify themselves that your dapp is actually doing what it promised.\n\nHowever, it will still be hard for end-users to understand what they are doing when interacting with your code.\nOnly by translating what the contract interactions mean into NatSpec you can help them comprehend what's going on under the\nhood. To ensure that you don't comment code with inadequate comments to mislead the users, all of the comments and metadata\nalso get published and verified. Malicious actors could of course still use \"wrong\" NatSpec comments, however, Sourcify would\nguarantee that the comments match those used at compilation time. Other developers could now check the NatSpec comments\nin the open-source code and verify their accuracy.\n\n#### Source Verification & NatSpec go hand-in-hand for greater transparency in contract interactions!\n\nIt's simple:\n\n- Only verifying source code: 📝🔍 + 🤔❓= ❌ (code is transparent, but end user does not understand it = bad)\n- Only using NatSpec: 🤓💡 + 📝🙈 = ❌ (end user understands, but NatSpec could be lying since code isn't verified = bad)\n- Using source verification and NatSpec: 📝🔍 + 🤓💡 = ✅ (code is transparent, end users can understand it = awesome!)\n\n### How decentralized is Sourcify?\n\n- Contract repo: The Sourcify contract repository is published both via [HTTPS](https://repo.sourcify.dev/) as well\n as on [IPFS](https://gateway.ipfs.io/ipns/QmNmBr4tiXtwTrHKjyppUyAhW1FQZMJTdnUrksA9hapS4u).\n- [Interfaces](https://sourcify.dev/): If you are using the Sourcify UI then you are\n verifying via our verification service backend. However, you could also run this service yourself. All code is available in the\n [EF Sourcify repository](https://github.com/ethereum/sourcify) and the [Sourcify GitHub organization](https://github.com/sourcifyeth).\n Additionally, the Sourcify CLI will soon be [published](https://github.com/ethereum/sourcify/pull/184).\n\n## The User Side: Improving Dapp UX with Sourcify?\n\n### What's wrong about the current UX when signing transactions?\n\nYou probably already stumbled over a transaction which had random hex string in the description. If you went ahead and\nsigned this transaction you blindly trusted the developer of the dapp to do what they promised.\n\nWouldn't it be great to have the option to verify what is happening and take an informed decision instead?\n\nSourcify aims to add that needed context to signing decisions by displaying whether the source code has been verified and what\nthe contract interaction actually means in layman's terms.\n\n### How can we improve the UX using Sourcify?\n\nDevelopers can help users take an informed decision by commenting their code using NatSpec. To verify that their NatSpec\ncomments are actually accurate, they should publish the source files to an open directory.\n\nIt's important that interface tools like wallets display the NatSpec comments to make them visible to the user before\nthe contract interaction.\n\n### How can I check whether a contract has been verified?\n\nCurrently, contracts that have been verified via Sourcify don't yet get a special label or tag on wallets or interfaces\n(like blockexplorers). It would be great it that were the case in future though!\n\nFor now, you can use the Sourcify contract repository. It can be accessed via [HTTPS](https://repo.sourcify.dev/)\nor [IPFS](https://gateway.ipfs.io/ipns/QmNmBr4tiXtwTrHKjyppUyAhW1FQZMJTdnUrksA9hapS4u).\n\nUse the contract's address and search for it in the repository. If it is there, it is a match (aka verified). 🎉\n\n### What are full matches?\n\nFull matches mean that the source files as well as the metadata files were an exact match between the deployed bytecode\nand the published files.\n\n### What are partial matches?\n\nPartial matches occur when the metadata hash does not match. This means that the source code compiles to the same bytecode\nand thus the contract behaves in the same way, but the source code can be different: Variables can have misleading names,\ncomments can be different and especially the NatSpec comments could have been modified.\n\n## The Tooling Side\n\n### What tooling is needed to make source verification more convenient?\n\nThe right support by existing and new tools can help make source verification much easier and more convenient for developers.\n\nQuick wins on the tooling side include:\n\n- Encourage auto-publishing of source files via deployment tools and make publishing the default option if license is\n specified as open source (licence identifiers are supported as of [Solidity v0.6.8](https://github.com/ethereum/solidity/releases/tag/v0.6.8)).\n- Create libraries (in different languages) that wallets can use to easily recompile bytecode.\n\n### What is needed on the wallet / UI side to make users aware of verified contracts?\n\nWallets and user interfaces are a crucial puzzle piece to bring awareness and broader adoption to source verification and\nNatSpec comments. To make users aware of verified contracts, wallets and other user interfaces could:\n\n- Show which contracts are verified and which are not during contract interaction.\n- Warn users if a contract has not been verified.\n- Always display the NatSpec comments, if available.\n- Warn users if NatSpec comments have not been verified and educate about the fact, that those explanations could potentially lie.\n- Educate users to only sign an interaction which is not NatSpec-commented if they know what they are doing.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/07/07/Solidity-0611-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/07/07/Solidity-0611-release-announcement.json deleted file mode 100644 index 1ca66e0a..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/07/07/Solidity-0611-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.11 Release Announcement","date":"2020-07-07","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.6.11](https://github.com/ethereum/solidity/releases/tag/v0.6.11) adds inheritance to NatSpec comments,\nimproves debugging data output and fixes some minor issues with opening up `calldata` for non-external functions.\n\n## Notable New Features\n\n### NatSpec Inheritance and on Events\n\nNatSpec comments are a way to describe the behaviour of a function to end-users. It also allows\nto provide more detailed information to developers.\n\nOne regular use-case is that you document the behaviour of an interface and then implement\nthe interface in a derived contract. Previously, you had to repeat the documentation in the derived\ncontract. This is now obsolete: The compiler will automatically inherit the documentation of\nthe base function if the derived function does not provide any NatSpec tag.\n\nIf you provide any of the tags (`@param`, `@dev`, ...), then nothing will be inherited.\nThe next release will provide a feature to explicitly inherit from a certain base also in that case,\nso stay tuned!\n\nFurhermore, NatSpec is now supported on events.\n\n```solidity\n// SPDX-License-Identifier: MIT\npragma solidity ^0.6.11;\ninterface Gathering {\n /// The address `participant` just registered for the gathering.\n event Registered(address participant);\n\n /// Registers `msg.sender` to take part in the gathering.\n function register() external;\n}\n\ncontract MyGathering is Gathering {\n mapping(address => bool) public participants;\n\n function register() public override {\n participants[msg.sender] = true;\n emit Registered(msg.sender);\n }\n}\n```\n\nThe derived contract `MyGathering` in the example code above will produce the following userdoc:\n\n```json\n{\n \"events\": {\n \"Registered(address)\": {\n \"notice\": \"The address `participant` just registered for the gathering.\"\n }\n },\n \"kind\": \"user\",\n \"methods\": {\n \"register()\": {\n \"notice\": \"Registers `msg.sender` to take part in the gathering.\"\n }\n },\n \"version\": 1\n}\n```\n\n### Unit Denomination `gwei`\n\nYou can now use `gwei` as a unit denomination alongside `wei`, `szabo`, `finney` and `ether`:\n\n```solidity\nreqire(msg.value >= 10 gwei);\n```\n\n## Full Changelog\n\n### Language Features:\n\n- General: Add unit denomination `gwei`\n- Yul: Support `linkersymbol` builtin in standalone assembly mode to refer to library addresses.\n- Yul: Support using string literals exceeding 32 bytes as literal arguments for builtins.\n\n### Compiler Features:\n\n- NatSpec: Add fields `kind` and `version` to the JSON output.\n- NatSpec: Inherit tags from unique base functions if derived function does not provide any.\n- Commandline Interface: Prevent some incompatible commandline options from being used together.\n- NatSpec: Support NatSpec comments on events.\n- Yul Optimizer: Store knowledge about storage / memory after `a := sload(x)` / `a := mload(x)`.\n- SMTChecker: Support external calls to unknown code.\n- Source Maps: Also tag jumps into and out of Yul functions as jumps into and out of functions.\n\n### Bugfixes:\n\n- NatSpec: Do not consider `////` and `/***` as NatSpec comments.\n- Type Checker: Disallow constructor parameters with `calldata` data location.\n- Type Checker: Do not disallow assigning to calldata variables.\n- Type Checker: Fix internal error related to `using for` applied to non-libraries.\n- Wasm backend: Fix code generation for for-loops with pre statements.\n- Wasm backend: Properly support both `i32.drop` and `i64.drop`, and remove `drop`.\n- Yul: Disallow the same variable to occur multiple times on the left-hand side of an assignment.\n- Yul: Fix source location of variable multi-assignment.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.6.11).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/07/08/solidity-turns-5.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/07/08/solidity-turns-5.json deleted file mode 100644 index de636b5a..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/07/08/solidity-turns-5.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity v0.1.0 turns 5! A walk down memory lane...","date":"2020-07-08","author":"Franziska Heintel","category":"Announcements"},"content":"\n![Solidity v0.1.0 turns 5](/img/2020/07/solidity_turns_5.jpg)\n\nWith happiness and a tad of nostalgia, we'd like to share that [Solidity v0.1.0](https://github.com/ethereum/solidity/commits/15dc5954c3a2e2a9ce96f2f77d41adef98a4cced) turns 5 years old today! (To be fair, v0.1.0 wasn't an _actual_ release, but it marks the time where the Solidity team started appointing version numbers.) We are puzzled over how fast time flew by. We'd like to use this opportunity to take a look back and walk down the Solidity memory lane together with you.\n\n**In short:** The Solidity language evolved rapidly, the ecosystem went through highs and lows, contributors came and went (but luckily most of them stuck around!) and we're still out here, still learning, still trying to push Solidity to the next, better stages.\n\nRead on for a retrospective of the last five years of language development, thoughts on the language design process, an overview of the people behind Solidity, and a short interview with Chris on the past, the present and the future of Solidity.\n\n## Thoughts on 5+ years of language design\n\n_Trivia, important milestones and views on the language development process from 5+ years of Solidity development, courtesy of Alex' recent [Solidity Summit talk](https://axic.github.io/notes/summit/musings_on_language/#/). Thank you!_\n\nDeveloping a language when everything around you is moving can be quite challenging. Here's our view on why Solidity used to and still needs to evolve rapidly - and why this is a good thing.\n\n### 1. Goals and value proposition of a programming language\n\nSolidity's initial goal was to become a friendly, easy-to-use language with the aim to attract developers and make the entry barrier to Ethereum development as low as possible.\n\nThat implied aspects like:\n\n- JavaScript-like syntax.\n- Allowing some weird implicit things.\n- Lacking features, but being easy to learn.\n\nOver the years, the goal changed. While still trying to stay as user-friendly as possible, the additional focus now rather lays on developing a much safer language.\n\nFor Solidity, that means:\n\n- Solidity is verbose.\n- Solidity is explicit.\n- Solidity tries to highlight \"risky\" constructs (gas usage).\n\n### 2. Embedding Solidity as a valuable and practicable language into the Ethereum ecosystem\n\nThe ecosystem we develop in was and continues to be a moving target. This isn't necessarily a bad thing, however, it requires some additional flexibility and adaptability:\n\n- **Ethereum** in itself is constantly evolving and learning. Protocol and EVM developers are busy coming up with new features, new restrictions, repricings, even new protocols (Eth 2.0); most of which has an impact on the Solidity language design.\n- **Developers** are still learning and frankly, sometimes trying all sorts of things. Here, from a language perspective, it's important to find the delicate balance between allowing too much, or too little.\n- **The security community** developed and matured alongside with Ethereum and it took some time for it to reach a healthy size and to build the necessary tools supporting their work.\n\nTo summarize: Building Ethereum is a (learning) journey. And so is building Solidity. Together with the broader Solidity community we're continuing to figure out:\n\n- what features are needed or are bad.\n- what is good or bad syntax.\n- what is not enough or too much verbosity.\n- how to deliver changes quickly to developers.\n\n### 3. Steadily adjusting and improving the language design process\n\nSo far, questions around new features and implementation details have mostly been discussed in [Github issues](https://github.com/ethereum/solidity/issues), the solidity-dev [Gitter channel](https://gitter.im/ethereum/solidity-dev), and during the public Solidity development team meetings.\n\nThe first [Solidity Summit](https://blog.soliditylang.org/2020/06/09/solidity-summit-recap/), which was held virtually in May this year, was the next step to further expand the language design discussions and invite and engage a broader circle of experts, ranging from tool developers to Solidity power users, contributors, security researchers and auditors.\n\nCurrently, we're exploring more ways to interact with the aforementioned groups and include them better into the language design process.\n\n- We revived the solidity-users forum, where proposals for new language features and qualities of existing aspects of the language can be discussed.\n- We're sharing (feature) feedback surveys on a semi-regular basis.\n- We are regularly hosting dedicated language design discussion calls, where one topic/issue/feature implementation is debated per call.\n\nFor the future, we could imagine evaluating a more structured process for proposals, similar to Python Enhancement Proposals (PEPs) or Vyper Improvement Proposals (VIPs), which could be introduced step-by-step. However, we think it might be a bit too early for that at this point in time.\n\nIn any case, we're happy to hear your thoughts on how we can improve the language design process to be more collaborative. If you'd like to get involved and share your ideas, feel free to join the [solidity-user forum](https://groups.google.com/g/solidity-users)!\n\n## Highlights and milestones from v0.1.0 - v0.6.10\n\nFor a collection of notable Solidity events throughout the last years check out the roadmap below!\n\n![Solidity Roadmap Part 1](/img/2020/07/solidity_roadmap_1.png)\n\n![Solidity Roadmap Part 2](/img/2020/07/solidity_roadmap_2.png)\n\n![Solidity Roadmap Part 3](/img/2020/07/solidity_roadmap_3.png)\n\n## The people behind Solidity\n\nA programming language is nothing without its community, its maintainers and developers building cool stuff with it! That’s why we would like to thank the core team and more importantly the community contributors for their continued support over all these years.\n\n### The core team\n\nThe Solidity programming language is an open-source, community project mainly developed and maintained by a core team. The core team is sponsored by the Ethereum Foundation.\n\nThis team currently consists of [@a3d4](https://github.com/a3d4), [@aarlt](https://github.com/aarlt), [@axic](https://github.com/axic), [@bshastry](https://github.com/bshastry), [@cameel](https://github.com/cameel), [@chriseth](https://github.com/chriseth), [@christianparpart](https://github.com/christianparpart), [@ekpyron](https://github.com/ekpyron), [@franzihei](https://github.com/franzihei), [@hrkrshnn](https://github.com/hrkrshnn), [@leonardoalt](https://github.com/leonardoalt), [@marenz](https://github.com/marenz), and [@mijovic](https://github.com/mijovic).\n\n### The wider community & contributors\n\nWe are incredibly grateful for all community contributions, not only via commits but also via participation in Github issues, by filing bug reports or in other community functions. Also a shout-out to our former team members!\n\nWe'd especially like to thank (in alphabetical order) [@arkpar](https://github.com/arkpar), [@asinyagin](https://github.com/asinyagin), [@benjaminion](https://github.com/benjaminion), [@bobsummerwill](https://github.com/bobsummerwill), [@chfast](https://github.com/chfast), [@ChrisChinchilla](https://github.com/ChrisChinchilla), [@Denton-L](https://github.com/Denton-L), [@djudjuu](https://github.com/djudjuu), [@elopio](https://github.com/elopio), [@erak](https://github.com/erak), [@ethers](https://github.com/ethers), [@federicobond](https://github.com/federicobond), [@fulldecent](https://github.com/fulldecent), [@gavofyork](https://github.com/gavofyork), [@ghallak](https://github.com/ghallak), [@guanqun](https://github.com/guanqun), [@jamesray1](https://github.com/jamesray1), [@jvmaia](https://github.com/jvmaia), [@LefterisJP](https://github.com/LefterisJP), [@liangdzou](https://github.com/liangdzou), [@LianaHus](https://github.com/LianaHus), [@mocamircea](https://github.com/mocamircea), [@NicolaiSoeborg](https://github.com/NicolaiSoeborg), [@pirapira](https://github.com/pirapira), [@random-internet-cat](https://github.com/random-internet-cat), [@roadriverrail](https://github.com/roadriverrail), [@sifmelcara](https://github.com/sifmelcara), [@VoR0220](https://github.com/VoR0220), [@winsvega](https://github.com/winsvega).\n\nNote that this is a non-exhaustive list. There are certainly many more great contributors, however, listing all of them would go beyond the scope of this article. 😊\n\n## The past, the present and the future of Solidity: Interview with Christian Reitwiessner\n\n**Can you tell us a bit about the beginnings of Solidity? What changed most about your work on Solidity between now and then?**\n\n_The biggest difference between now and then is that back in the days you basically did not know if somebody would ever use what we are building. Of course we maybe had the feeling it is going to be something big, but we did not know for sure. Now, Solidity is a product which we are continuing to improve while it is out there in production, being used, holding incredible amounts of value and powering some really cool decentralized applications._\n\n_Another difference is that in the beginnings, it seemed easier to get feedback. Maybe this was due to the fact that the community was much smaller. The conversations seemed more technical in a way. Now, the community became bigger and more diverse (which is a great thing!). With that it became a bit more complex in terms of collaboration and feedback especially on technical implementation details._\n\n**Looking back, what was your most memorable moment of the past 5 years of Solidity development?**\n\n_There were many - people using the compiler before it even had a command line interface, people happily picking up the newest features, seeing the ecosystem grow and especially finally meeting people in real life you have been working with for so long._\n\n**What is your favorite aspect about Solidity?**\n\n_Solidity looks rather high-level but is still very close to the EVM. At the same time, people with some background in programming usually understand what Solidity code is about._\n\n**Where do you think Solidity needs to improve the most?**\n\n_It needs to be even easier to write safe smart contracts. This means we need to work on our SMTChecker, debuggers, IDEs, templates, libraries and so on._\n\n**What does Eth2 mean for Solidity?**\n\n_On the technical level, it means we have to focus more on the Ewasm backend of Solidity, but this is a relatively straightforward task. On the conceptual level, on the other hand, it means that smart contracts will be asynchronous, which is a big challenge for everyone. The atomicity of the EVM makes many things very easy: If something is odd, just revert. Solidity needs to find a good language construct that makes the danger of asynchrony visible but also helps avoiding some pitfalls and allows the \"common use-case\" to be easy to write._\n\n**Anything else you would like to say?**\n\n_Let's continue our journey to make smart contracts as safe and accessible to everyone as possible!_\n\nWith that being said, we'd like to wrap this little birthday celebration up and close with a virtual toast:\n\n### To all the contributors over the last years: Your input, dedication and work has been incredible. THANK YOU. To the next 5 years! 🍾\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/07/22/Solidity-0612-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/07/22/Solidity-0612-release-announcement.json deleted file mode 100644 index a56a922b..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/07/22/Solidity-0612-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.12 Release Announcement","date":"2020-07-22","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.6.12](https://github.com/ethereum/solidity/releases/tag/v0.6.12) adds more flexibility\nwhen using inheritance with NatSpec comments and introduces many small improvements to the optimizer.\n\n## Notable New Features\n\n### NatSpec Inheritance\n\nAs explained in the [Solidity 0.6.11 release announcement](https://blog.soliditylang.org/2020/07/07/solidity-0611-release-announcement/),\nNatSpec comments are now inherited automatically if you do not provide any\nNatSpec in the derived function. Starting from Solidity 0.6.12, you can\nexplicitly inherit comments from a base contract using the tag `@inheritdoc`\neven if you specify some of the tags.\nThe tags that are not given will then be taken from the specified base class'\nfunction.\n\n```solidity\n// SPDX-License-Identifier: MIT\npragma solidity ^0.6.11;\ninterface Gathering {\n /// The address `participant` just registered for the gathering.\n event Registered(address participant);\n\n /// Registers `msg.sender` to take part in the gathering.\n /// @param name The name of the participant.\n function register(string calldata name) external;\n}\n\ncontract MyGathering is Gathering {\n mapping(address => string) public participants;\n uint public participantCount;\n\n /// Registers `msg.sender` to take part in the gathering\n /// unless there are already more than 10 participants.\n /// @inheritdoc Gathering\n function register(string calldata name) public override {\n require(participantCount <= 10);\n participants[msg.sender] = name;\n participantCount++;\n emit Registered(msg.sender);\n }\n}\n```\n\nThe derived contract `MyGathering` in the example code above will have\nthe documentation for the parameter \"name\" as part of its developer documentation.\n\n## Full Changelog\n\n### Language Features:\n\n- NatSpec: Implement tag `@inheritdoc` to copy documentation from a specific base contract.\n- Wasm backend: Add `i32.ctz`, `i64.ctz`, `i32.popcnt`, and `i64.popcnt`.\n\n### Compiler Features:\n\n- Code Generator: Avoid double cleanup when copying to memory.\n- Code Generator: Evaluate `keccak256` of string literals at compile-time.\n- Optimizer: Add rule to remove shifts inside the byte opcode.\n- Peephole Optimizer: Add rule to remove swap after dup.\n- Peephole Optimizer: Remove unnecessary masking of tags.\n- Yul EVM Code Transform: Free stack slots directly after visiting the right-hand-side of variable declarations instead of at the end of the statement only.\n\n### Bugfixes:\n\n- SMTChecker: Fix error in events with indices of type static array.\n- SMTChecker: Fix internal error in sequential storage array pushes (`push().push()`).\n- SMTChecker: Fix internal error when using bitwise operators on fixed bytes type.\n- SMTChecker: Fix internal error when using compound bitwise operator assignments on array indices inside branches.\n- Type Checker: Fix internal compiler error related to oversized types.\n- Type Checker: Fix overload resolution in combination with `{value: ...}`.\n\n### Build System:\n\n- Update internal dependency of jsoncpp to 1.9.3.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.6.12).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/07/28/solidity-v0.7.0-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/07/28/solidity-v0.7.0-release-announcement.json deleted file mode 100644 index e4305107..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/07/28/solidity-v0.7.0-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.0 Release Announcement","date":"2020-07-28","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity 0.7.0](https://github.com/ethereum/solidity/releases/tag/v0.7.0) is a breaking release of the Solidity compiler and language.\n\nThis release does not include many features but rather changes that require a\nbackwards-incompatible adjustment in syntax or semantics. For a detailed explanation,\nplease see the [documentation](https://solidity.readthedocs.io/en/latest/070-breaking-changes.html).\n\nMost notably, further cleanup of visibility and state mutability has been performed\nand several unpopular keywords have been removed. Types with mappings\nin memory are disallowed and shift and exponentiation operations use more reasonable types.\n\nSince we usually do not backport bugfixes, it is recommended to upgrade all code to be compatible with Solidity v.0.7.0.\nThe [solidity-upgrade tool](https://solidity.readthedocs.io/en/latest/using-the-compiler.html#solidity-upgrade) can\nhelp you to semi-automatically upgrade your contracts to breaking language changes. While `solidity-upgrade` carries\nout a large part of the work, your contracts will most likely need further manual adjustments.\n\nYou can find a guide on how to update your code [here](https://solidity.readthedocs.io/en/latest/070-breaking-changes.html#how-to-update-your-code).\n\nNote that changes listed below are the **changes between 0.6.12 and 0.7.0**. For changes introduced\nduring the 0.6.x series, please see the individual changelogs or release announcements on this blog.\n\n## Breaking Changes:\n\n- Inline Assembly: Disallow `.` in user-defined function and variable names.\n- Inline Assembly: Slot and offset of storage pointer variable `x` are accessed via `x.slot` and `x.offset` instead of `x_slot` and `x_offset`.\n- JSON AST: Mark hex string literals with `kind: \"hexString\"`.\n- JSON AST: Remove members with `null` value from JSON output.\n- Parser: Disallow `gwei` as identifier.\n- Parser: Disallow dot syntax for `value` and `gas`.\n- Parser: Disallow non-printable characters in string literals.\n- Parser: Introduce Unicode string literals: `unicode\"😃\"`.\n- Parser: NatSpec comments on variables are only allowed for public state variables.\n- Parser: Remove the `finney` and `szabo` denominations.\n- Parser: Remove the identifier `now` (replaced by `block.timestamp`).\n- Reference Resolver: `using A for B` only affects the contract it is mentioned in and not all derived contracts\n- Type Checker: Disallow `virtual` for library functions.\n- Type Checker: Disallow assignments to state variables that contain nested mappings.\n- Type checker: Disallow events with same name and parameter types in inheritance hierarchy.\n- Type Checker: Disallow shifts by signed types.\n- Type Checker: Disallow structs and arrays in memory or calldata if they contain nested mappings.\n- Type Checker: Exponentiation and shifts of literals by non-literals will always use `uint256` or `int256` as a type.\n- Yul: Disallow consecutive and trailing dots in identifiers. Leading dots were already disallowed.\n- Yul: Disallow EVM instruction `pc()`.\n\n## Language Features:\n\n- Inheritance: Allow overrides to have stricter state mutability: `view` can override `nonpayable` and `pure` can override `view`.\n- Parser: Deprecate visibility for constructors.\n- State mutability: Do not issue recommendation for stricter mutability for virtual functions but do issue it for functions that override.\n\n## Compiler Features:\n\n- SMTChecker: Report multi-transaction counterexamples including the function calls that initiate the transactions. This does not include concrete values for reference types and reentrant calls.\n- Variable declarations using the `var` keyword are not recognized anymore.\n\n## Bugfixes:\n\n- Inheritance: Disallow public state variables overwriting `pure` functions.\n- NatSpec: Constructors and functions have consistent userdoc output.\n- SMTChecker: Fix internal error when assigning to a 1-tuple.\n- SMTChecker: Fix internal error when tuples have extra effectless parenthesis.\n- State Mutability: Constant public state variables are considered `pure` functions.\n- Type Checker: Fixing deduction issues on function types when function call has named arguments.\n- Immutables: Fix internal compiler error when immutables are not assigned.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.7.0).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/09/02/solidity-0.7.1-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/09/02/solidity-0.7.1-release-announcement.json deleted file mode 100644 index 2023b173..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/09/02/solidity-0.7.1-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.1 Release Announcement","date":"2020-09-02","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.7.1](https://github.com/ethereum/solidity/releases/tag/v0.7.1) adds functions at file-level and fixes several small bugs.\n\n## Notable New Features\n\n### Functions At File-Level\n\nFunctions can now be defined at file-level. Such functions are called \"free functions\"\n(as opposed to functions bound to a specific contract).\n\nFree functions are always internal functions\nand are meant to replace internal library functions and their very special behaviour.\n\nA free function behaves like an internal function of the contract that called it.\nThe main difference is that a free function cannot directly access state variables and internal\nfunctions of contracts. Free functions can call other contracts, emit events\nand send Ether, and in this case, `msg.sender` will be the contract that called the free function.\n\nA contract's storage can only be accessed from a free function if a storage pointer is passed to the\nfunction (see the example below) or if inline assembly is used. The state mutability is checked,\nwhich means that `pure` free functions cannot access storage or send Ether.\n\nThe code of a free function is only included into the contracts that use it.\n\n```solidity\n/// @dev returns the smaller of the two values.\nfunction min(uint x, uint y) pure returns (uint) {\n return x < y ? x : y;\n}\n\n/// @dev returns the sum of the elements of the storage array\nfunction sum(uint[] storage items) view returns (uint s) {\n for (uint i = 0; i < items.length; i++)\n s += items[i];\n}\n```\n\nIf free functions are imported from another file, it is recommended to\nuse the import statement that generates a new object, so that the file's scope\nis not polluted needlessly:\n\nhelper.sol:\n\n```solidity\nfunction f() returns (uint) { /* ... */ }\n```\n\nmain.sol:\n\n```solidity\nimport \"helper.sol\" as Helper;\n\ncontract C {\n function g() public returns (uint) {\n return Helper.f();\n }\n}\n```\n\nThe ability to use `using A for B` for free functions is planned for future releases.\n\n## Full Changelog\n\n### Language Features:\n\n- Allow function definitions outside of contracts, behaving much like internal library functions.\n- Code generator: Implemented copying structs from calldata to storage.\n\n### Compiler Features:\n\n- SMTChecker: Add underflow and overflow as verification conditions in the CHC engine.\n- SMTChecker: Support bitwise or, xor and not operators.\n- SMTChecker: Support conditional operator.\n- Standard JSON Interface: Do not run EVM bytecode code generation, if only Yul IR or EWasm output is requested.\n- Yul Optimizer: LoopInvariantCodeMotion can move reading operations outside for-loops as long as the affected area is not modified inside the loop.\n- Yul: Report error when using non-string literals for `datasize()`, `dataoffset()`, `linkersymbol()`, `loadimmutable()`, `setimmutable()`.\n\n### Bugfixes:\n\n- AST: Remove `null` member values also when the compiler is used in standard-json-mode.\n- General: Allow `type(Contract).name` for abstract contracts and interfaces.\n- Immutables: Disallow assigning immutables more than once during their declaration.\n- Immutables: Properly treat complex assignment and increment/decrement as both reading and writing and thus disallow it everywhere for immutable variables.\n- Optimizer: Keep side-effects of `x` in `byte(a, shr(b, x))` even if the constants `a` and `b` would make the expression zero unconditionally. This optimizer rule is very hard if not impossible to trigger in a way that it can result in invalid code, though.\n- References Resolver: Fix internal bug when using constructor for library.\n- Scanner: Fix bug where whitespace would be allowed within the `->` token (e.g. `function f() - > x {}` becomes invalid in inline assembly and Yul).\n- SMTChecker: Fix internal error in BMC function inlining.\n- SMTChecker: Fix internal error on array implicit conversion.\n- SMTChecker: Fix internal error on fixed bytes index access.\n- SMTChecker: Fix internal error on lvalue unary operators with tuples.\n- SMTChecker: Fix soundness of array `pop`.\n- Type Checker: Disallow `using for` directive inside interfaces.\n- Type Checker: Disallow signed literals as exponent in exponentiation operator.\n- Type Checker: Disallow structs containing nested mapping in memory as parameters for library functions.\n- Yul Optimizer: Ensure that Yul keywords are not mistakenly used by the NameDispenser and VarNameCleaners. The bug would manifest as uncompilable code.\n- Yul Optimizer: Make function inlining order more resilient to whether or not unrelated source files are present.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.7.1).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/09/18/meet-the-team.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/09/18/meet-the-team.json deleted file mode 100644 index 113bf635..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/09/18/meet-the-team.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Meet the Solidity team! 🧑‍💻👩‍💻","date":"2020-09-18","author":"Solidity Team","category":"Announcements"},"content":"\nAs you might know, Solidity is an **open-source community project** mainly developed and maintained by a core team.\n\nToday, we would like to introduce some of our team members and share insights into their professional background, which components of Solidity they mostly work on, what they would like to see in Solidity and in the ecosystem in future and more! Since almost all of our work happens on Github you can find each team member's Github handle next to their name.\n\nBefore we dive in, it should be noted that we are incredibly grateful for all community contributions! Some of our core team members even started out as community contributors and it is needless to say Solidity is truly depending on its developer and contributor community for feedback, bug reports, feature requests, tooling and input on the language design. If you'd like to learn more about the wider community contributors, you can find a collection of our top contributors in the [Solidity 5th birthday post](https://blog.soliditylang.org/2020/07/08/solidity-turns-5/) as well as by browsing though the [Solidity Github repository](https://github.com/ethereum/solidity).\n\nNow, without further ado, please meet some of the faces behind Solidity! We are lucky to call this small but international group of friendly and bright minds our team:\n\n---\n\n### Alex - [@aarlt](https://github.com/aarlt)\n\n#### What is your professional background?\n\nBefore joining Solidity, I mainly worked for the automotive industry as a software engineer specialising in embedded systems. I worked on AUTOSAR - a standardised software architecture used within the automotive industry. I helped develop an AUTOSAR RTE - a runtime environment (or middleware) of AUTOSAR SWC’s (software components). I also implemented some basic AUTOSAR BSW modules. Beside this I worked on V2X based communication technologies. The term V2X is used to refer to “Vehicle to Everything” communication and includes vehicle-to-vehicle and vehicle-to-infrastructure and many more. These kind of communication technologies are particularly useful to increase safety and to support autonomous driving. With this technology vehicles are not just limited to use their own sensor data, but they can also access information sent by surrounding vehicles, infrastructure entities (e.g. traffic lights), pedestrians, etc.\n\n#### What is your role in the Solidity team? On which parts of Solidity do you work the most?\n\nI started to contribute to Solidity in my free-time from 2018 on. I joined the team in February of this year. Right now, I would not say that I’m working only on one specific part. In the past I was working on different things: I worked on the build-system, I did some work on the testing infrastructure, fixed some bugs, worked on the code-generator. Recently, I’m adding support for ewasm to our semantic tests. So additionally to executing our tests against a classic evm1 virtual machine, an ewasm virtual machine can be used to verify that the semantic of the generated evm1 code is the same as for the generated ewasm code.\n\n#### What would you like to see in Solidity in the future?\n\nI think Solidity needs to support compile-time evaluation of more complex expressions and functions as soon as possible. If a result can be already calculated at compile time, there is no need to execute that calculation in an expensive on-chain environment. Everything that could be done at compile-time should be done at compile-time.\n\n---\n\n### Alex - [@axic](https://github.com/axic)\n\n#### What is your professional background?\n\nI have a long-standing interest in open source. Before my \"professional career\" I have been an early contributor to MPlayer and [FFmpeg](https://ffmpeg.org), and thus my first paid roles also revolved around multimedia. Video encoding and streaming, mostly on embedded resource-constrained devices, to be precise. At some point I made a switch to financial software (payment systems) for a good number of years, unfortunately in a closed-source setting. This was a good background for working on Bitcoin startups before finally arriving at Ethereum late 2015 after Frontier was launched.\n\n#### What is your role in the Solidity team? On which parts of Solidity do you work the most?\n\nI keep myself busy mostly with design discussions and helping out on management related work as a _Co-Lead_. When time allows and I get the opportunity to code, then I usually find myself working on Yul or lately on the SMTChecker.\n\nSince I am involved with other parts of Ethereum, I try to bridge the gap between other technical teams and Solidity.\n\n#### What would you like to see in Solidity in the future?\n\nShort-term: Compiling the Eth2 deposit contract, Uniswap V2, and Gnosis Safe with the new Yul IR, and to being able to \"verify\" them with the SMTChecker.\n\nLong-term: It would be nice for the language to move on from the inheritance centered design. I really like some aspects of Rust after working with it, especially traits, enums, and partially the module system. Late last year I shared some example code of a hybrid Rust-Solidity language, but it would not be wise to blatantly follow Rust, considering our special requirements. We already have plenty of discussions regarding these topics, so I am very hopeful.\n\n---\n\n### Bhargava - [@bshastry](https://github.com/bshastry)\n\n#### What is your professional background?\n\nI graduated from Technische Universität Berlin with a Ph.D. in computer science. My Ph.D. thesis focused on developing techniques to find security vulnerabilities quicker in open-source software.\n\n#### What is your role in the Solidity team? On which parts of Solidity do you work the most?\n\nIn the Solidity team, my role is to help the team find bugs and security issues as soon as possible, preferably before an upcoming release. More specifically, I develop semantic fuzzers for different compiler sub-systems e.g., compiler frontend, optimiser etc.\n\n#### What do you like to do in your free time?\n\nI enjoy finding security issues with popular open-source software implementations and blogging about my experiences on my personal blog over at https://bshastry.github.io/blog. I also enjoy tapping the closest piece of furniture to the beat of electronic music that is being played.\n\n---\n\n### Chris - [@chriseth](https://github.com/chriseth)\n\n#### What is your professional background?\n\nDuring my studies, I have worked on different small open source projects related to Wikipedia and biodiversity. After my PhD in Computational Complexity Theory, where I worked on multi-objective optimization and structural complexity theory, I gathered some experience in the classical closed-source software industry. In 2014, I started the Solidity project and really enjoy the open collaboration of the professional free software world that is very similar in spirit to the research community.\n\n#### What is your role in the Solidity team? On which parts of Solidity do you work the most?\n\nWith help from Alex Beregszaszi I'm leading the Solidity team. This means that I'm doing a lot of code review and design work, but there is also enough time to write code. My favourite part of the project is the Yul optimizer because you can make a lot of impact with tiny but well-thought-out components.\n\n#### What would you like to see in Solidity in the future?\n\nTo me, the biggest reward is seeing people building something helpful to humanity on top of your own work. By extension, I think we should make it easier to re-use safe and tested Solidity code created by others. Because of that, I think that features like generics or templates should be the next big focus for Solidity.\n\n---\n\n### Christian - [@christianparpart](https://github.com/christianparpart)\n\n#### What is your professional background?\n\nOver the years, I worked in various kinds of jobs, starting as a C++ developer in the printing world, to other languages, such as C#/.NET, C (on Solaris),\nand later Ruby, but then also Linux data center related jobs, focusing on high availability related projects, and finally moving to mid-management.\nProgramming in C++ and compiler related topics is what I always enjoyed the most. So it felt natural to what was about to come next. During that path, one of the things I did is implementing a proprietary command line interpreter, as well as domain specific languages from language design to compiler implementation to custom virtual machine. I really enjoyed that, and now, I am very pleased to work on the Solidity compiler.\n\n#### What is your role in the solidity team? On which parts of Solidity to you work the most?\n\nWhile bug-fixing is always important, what I enjoy the most is the syntactical analysis. Also, the Yul IR is very interesting and I am looking forward to help pushing forward our Yul code generator. There were quite some house-keeping tickets that were fun touching,\nbut also moving the Compiler's C++ standard from C++11 to C++14, and just by the end of last year to C++17 was quite a push.\nBesides that, I developed a proof-of-concept Solidity language server that I would love to be an official part of the Solidity project some time in the future.\n\n#### What would you like to see in Solidity in the future?\n\nIn the past years, I had a dive into functional languages, especially F#. This experience deeply changed the way I am programming C++ today.\nI would like to see some of the features that are usually found in functional languages to be also be present in Solidity, too,\nsuch as: immutable-by-default, algebraic data types and pattern matching.\n\n---\n\n### Daniel - [@ekpyron](https://github.com/ekpyron)\n\n#### What is your professional background?\n\nI'm a mathematician by training, but already during my studies I started to work part-time as a software developer. Among others, I built the 3D graphics engine for an interactive real-time visualization project for live electronic music and the engine for a 3D mobile game, but also worked on large-scale molecular dynamics simulation software and in machine learning, before I joined the Solidity team (while I'm still part-time writing my Ph.D. thesis).\n\n#### What is your role in the Solidity team? On which parts of Solidity do you work the most?\n\nI think I have touched pretty much every single component of the compiler in one way or another by now. Lately, I have found myself reviewing more code than I actually write, but I still also like discussing and implementing new language features, helping in completing the new IR code generation path and in particular devising and implementing new optimizer steps for the Yul optimizer, but also basically anything else that comes up.\n\n#### What would you like to see in Solidity in the future?\n\nThe Ph.D. thesis I'm working on is in \"computational metaphysics\" (i.e. the application of automated, computerized formal reasoning techniques to abstract philosophical theories), so I'm basically doing Formal Verification for philosophers. Leo is currently pioneering the integration of formal methods directly into the Solidity compiler with the SMTChecker, but we're also considering to empower the Yul optimizer with formal reasoning and I think there lie more interesting innovations ahead in that area, both for provably correct optimization or maybe even code generation in the compiler, but also as constructs in the language that help in reasoning about it, so I'd like to see more of that. Also `copyof`. And feature-complete Yul IR codegen and Yul memory objects.\n\n---\n\n### Đorđe - [@mijovic](https://github.com/mijovic)\n\n#### What is your professional background?\n\nMy professional background is really interesting. I started at a small company developing casino games for the ItalyVLT market. Then I worked in the Microsoft Office Sway team. After that, I decided to try startup work environments in InsideMaps and Wolf3d. I have been working on computer vision algorithms in both companies. My blockchain journey started with joining the Solidity team in February 2020.\n\n#### What is your role in the Solidity team? On which parts of Solidity do you work the most?\n\nSo far, I was mostly working on the IR part of Solidity, implementing new features for translating Solidity source to intermediate representation (Yul). Recently I started working on the SMTChecker (Solidity's formal verification tool) more, which is very interesting to me. Personally, I would like to see IR and SMT finished as soon as possible, covering all Solidity features.\n\n#### What made you join the Solidity team?\n\nWorking on an open-source project for the first time was very motivating for me, especially combined with such an exciting and high potential environment like the blockchain space.\n\n---\n\n### Franzi - [@franzihei](https://github.com/franzihei)\n\n#### What is your professional background?\n\nAfter studying International Business Administration, I joined the innogy Innovation department working as a project manager and later portfolio manager with a focus on distributed technologies & blockchain (and what impact they can have on the energy sector). As part of that, I worked with several energy x blockchain projects like Co-tricity and Share&Charge. Following that, I became Head of Communications at brainbot, a blockchain development studio, after which I decided to join the Solidity team. :)\n\n#### What is your role in the Solidity team? On which parts of Solidity do you work the most?\n\nI'm supporting the team with communications and project management. This includes maintaining all communication channels like the @solidity_lang Twitter and the Solidity blog, organizing conferences and hackathons like this year's Solidity Summit and the upcoming Solidity Underhanded Contest as well as exploring all kinds of tools which facilitate a better exchange between the Solidity core-team and the wider Solidity ecosystem. These efforts mostly focus on fostering the language design process, e.g. with language design discussions and updates via the solidity-users forum.\n\n#### What would you like to see in the Solidity ecosystem in the future?\n\nWe're building a strong Solidity ecosystem of tool builders, auditors, security researchers, super users and contributors which all regularly contribute to relevant language design discussions. I would love to see this ecosystem steadily grow and hope we find good interaction modes to strengthen the exchange between the different stakeholders. I also hope that we'll manage to constantly evolve and eventually define a transparent and lightweight process for the language design, which allows for collaboration and innovation.\n\n---\n\n### Hari - [@hrkrshnn](https://github.com/hrkrshnn)\n\n#### What's your professional background:\n\nI'm a recent graduate in Math (I like Geometry, Topology, Hyperbolic Geometry, etc.). During my studies, I also used to work on a Linear-Programming solver at the Zuse Institute.\n\n#### What is your role in the Solidity team? On which parts of Solidity do you work the most?\n\nNowadays, I quite like working on the Yul optimizer. It is interesting since ultimately it's an open problem and allows for a lot of room for improvement.\n\n#### What would you like to see in the Solidity ecosystem in the future?\n\nIt would be really nice to see new programming languages created for the EVM that target Yul. This would mean that a lot of Yul tooling becomes more important. Additionally, it would be interesting to see external research on improving, say, the optimizer, among other things.\n\n---\n\n### Kamil - [@cameel](https://github.com/cameel)\n\n#### What is your professional background?\n\nOver the years I worked in a variety of software projects and I don't really have one thing I could say I specialize in. My first job was at a video post-production company rolling out its own in-house editor for video post-processing and adding special effects. It was implemented in C++ and was one of the first programs of this type to take advantage of GPGPU capabilities back when it was still a novelty. Later on, I often worked on the backend side of multiple complex Python-based web apps, involving things like statistical modeling, video processing, chemical retrosynthesis or interfacing with blockchain. Along the way I had the chance to get familiar with network programming and admin/devops-oriented technologies, including shell scripting, web servers, containers and cloud services. Recently I've been particularly interested in blockchain-related technologies. So far, the biggest project in this space I took part in was a service designed and implemented for Golem. A few years ago I co-founded a software company called Code Poets where I'm currently responsible for the technological side. I still enjoy programming more than anything though. Having worked in various roles at different scales, I find that I like the low-level challenges much more than high-level system design or managing a project as a whole. Working as a part of the Solidity team is a good way for me to use my experience in a meaningful way while being able to learn more about the Ethereum ecosystem.\n\n#### What is your role in the Solidity team? On which parts of Solidity do you work the most?\n\nMy biggest task so far was implementing the yul-phaser - an internal tool based on genetic algorithms that will help us fine-tune the Yul optimizer once the code generator is complete and supports all Solidity features. Apart from that I'm trying to get familiar with all parts of the compiler. So far, I worked mostly on IR code generator, wasm code generator and also on the supporting infrastructure for the repository, including the overhaul of the way older compiler binaries are hosted and nightly builds.\n\n#### What do you think is Solidity's biggest challenge?\n\nIn my opinion one of the biggest challenges is getting a clear and cohesive vision of what the language should eventually look like. The language is still evolving and there are many planned features, some of which could fundamentally impact the way people write smart contracts. Templates/generics, contract invariants, Rust-style enums, variables being immutable by default, range types, range based loops, fixed point variables to name just a few. There are also some widely used patterns that may end up having support in the language at some point but right now it's still not clear if and how - upgradeable contracts are one example. Finalizing the language specification requires many tough decisions about what should and what shouldn't end up in it. Getting there will involve a huge amount of design work. Until it's done, we still rely heavily on being able to regularly introduce backwards-incompatible changes to avoid being left with a fossilized stub of a language where you have to fish for \"the good parts\" and ignore the rest. Fortunately, with the bigger team this year even the older design issues are finally getting some much needed attention and hopefully this gets us closer to releasing Solidity 1.0 in not so distant future.\n\n---\n\n### Leo - [@leonardoalt](https://github.com/leonardoalt)\n\n#### What is your professional background?\n\nI have an academic background in logic and theoretical computer science. During my PhD I worked on SMT solvers and logics with applications to symbolic model checking. Before joining the Solidity team I worked on formal verification (FV) of microprocessors.\n\n#### What is your role in the Solidity team? On which parts of Solidity do you work the most?\n\nI work mostly on the SMTChecker - a FV component inside the compiler that statically checks for assertion violations and other problems - and language design. I also work on Act and other topics as part of the Ethereum Foundation's Formal Verification team.\n\n#### What do you think is Solidity's biggest challenge?\n\nOne of the main challenges is designing the language while not using it every day. Sometimes it's hard for us to get a feeling for what's wrong/bad/good in the language, and mass feedback is challenging to collect.\n\n---\n\n### Mathias - [@marenz](https://github.com/marenz)\n\n#### What is your professional background?\n\nI worked nine years for a data analytics company, mostly in the D programming language. One of my main projects was writing & maintaining a software that handled lots of data in real time and aggregated it in a database.\n\n#### What is your role in the Solidity team? On which parts of Solidity do you work the most?\n\nI don't have a fixed role. There isn't even a part I worked most on. I am touching almost all parts of Solidity except for the SMT code, that's still a new area for me.\n\n#### What would you like to see in Solidity in the future?\n\nI would love to see more attention on making the language more fun to work with while keeping it safe to use and easy to read and validate. Those two concepts sometimes clash with each other, but often they don't or a good compromise can be found.\n\n---\n\n**Want to hear more from us?** \nFollow [@solidity-lang](https://twitter.com/solidity_lang) on Twitter | Join the [solidity-users](https://groups.google.com/g/solidity-users) forum\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/09/21/solidity-underhanded-contest.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/09/21/solidity-underhanded-contest.json deleted file mode 100644 index 99951701..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/09/21/solidity-underhanded-contest.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"The Underhanded Solidity Contest is back!","date":"2020-09-21","author":"Franziska Heintel","category":"Announcements"},"content":"\nWe're excited to share that the [Underhanded Solidity Contest](https://underhanded.soliditylang.org/) is finally back!\n\nInspired by the [Underhanded C Contest](http://www.underhanded-c.org/) and the first [Underhanded Solidity Contest](https://u.solidity.cc/), organized in 2017 by Nick Johnson, we decided it is time for a much needed revival.\n\n![Underhanded Solidity Contest](/img/2020/09/Underhanded_Solidity.gif)\n\nThe goal of this contest is to write innocent-looking Solidity code, which pretends to be clear and straightforward, but actually contains malicious behavior or backdoors.\n\nBy hosting such a contest we aim to:\n\n- Raise awareness about smart contract security.\n- Uncover language design flaws.\n- Battle-test recently introduced language features and restrictions.\n- Highlight anti-patterns in smart contact development.\n- Establish new best practices for secure smart contract development.\n\n## The Theme 🚪🔑\n\n**This year's theme is upgradability of contracts, or, more specifically, upgrade mechanisms.**\n\nIn order to fix bugs in smart contracts, it is often necessary to perform upgrades. The problem with upgrades is that there is no feasible automatic mechanism to control that the new code still does what the old code intended to do. Because of that, upgrade mechanisms are often designed such that a single account has the ability to change the code arbitrarily.\n\nSince a smart contract in which a single account is authorized to arbitrarily change its implementation defeats the idea of decentralization, we would like to use this contest to find mechanisms that are better suited, be it via an opt-out mechanism, a way to split the contract or whatever else you can come up with.\n\nAt the same time, this mechanism has to have a flaw or backdoor that is not easy to discover so that in the end, there is still a single account in control, even if it does not seem like it.\n\nNote that **the flaw should be in the upgrade mechanism**, not in the main contract. Hence, the contract that is actually to be upgraded should be very small, e.g. an ERC20 contract or a simple registry. You do not need to come up with a reason to actually upgrade the contract. Of course a little story around your submission is a nice-to-have, but it's not mandatory.\n\n## The Contest Details 🧑‍💻\n\nSubmissions are open from 1st of October until the 31st of October 2020. Anybody, with the exception of judges, can participate (for details about submissions and participation please see the [contest website](https://underhanded.soliditylang.org/)).\n\nJudges will be presented with anonymised submissions. This year's submissions will be assessed by:\n\n- Alex Beregszaszi, Solidity Co-Lead at Ethereum Foundation.\n- Austin Williams, Security Researcher at OpenZeppelin.\n- Christian Reitwiessner, Solidity Co-Lead at Ethereum Foundation.\n- Gonçalo Sá, Security Engineer at ConsenSys Diligence.\n- Stefan Beyer, Lead Auditor at Solidified.\n\nWinners will be able to choose a prize of their choice from the prize pool.\n\nThe prize pool contains:\n\n- 1x Ticket to Devcon6.\n- 1x 1-year MythX Pro Plan.\n- 1x 1-year MythX Dev Plan.\n- 1x Automatic acceptance into Solidified auditor pool & a paid audit with Solidified.\n- 1x 1-year subscription to OpenZeppelin's forthcoming security product.\n\nFurthermore, the winners and all qualified submissions will receive a custom NFT.\n\n## Judging Criteria ⚖️\n\nConsider the following aspects and properties for your submissions:\n\n- **Simplicity & Briefness**: Since it's much easier to hide a vulnerability in complex and poorly written code, short and clean submissions will be scored higher than those that are lengthy and complicated.\n- **Plausibility**: Code that drops down to inline assembly without any clear reason why will look immediately suspicious, no matter how cleverly written the assembly-level flaw is.\n- **Originality**: Truly original ideas will receive more points than making use of already well known exploit/backdoor mechanisms.\n\n## Submissions 📩\n\n**License**: The entirety of your submission must be licensed under an open-source license.\n\n**Solidity Version**: Please use Solidity v0.7.0 or newer.\n\nSubmissions open on 1st of October 2020. Email your submissions before the deadline (2020-10-31) to `sol_underhanded@ethereum.org`. Entries should consist of a ZIP file containing a README describing your submission and how it works (spoilers included), and one or more Solidity files. For details of the submission process, please refer to the [contest website](https://underhanded.soliditylang.org/).\n\n## Thank you to our supporters! 🥰\n\nWe would like to thank ConsenSys Diligence, Solidified, OpenZeppelin, and the Ethereum Foundation for contributing prizes, supporting with judging and all their input and Nick Johnson for initially launching this contest in 2017!\n\nShould you have any questions or encounter problems please feel free to reach out to us via `sol_underhanded@ethereum.org` or join the [Solidity Gitter channel](https://gitter.im/ethereum/solidity).\n\n**We're looking forward to receiving many interesting submissions. Have fun!**\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/09/28/solidity-0.7.2-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/09/28/solidity-0.7.2-release-announcement.json deleted file mode 100644 index 382aed93..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/09/28/solidity-0.7.2-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.2 Release Announcement","date":"2020-09-28","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.7.2](https://github.com/ethereum/solidity/releases/tag/v0.7.2) fixes a bug in free functions, which had been introduced with v0.7.1, and adds compiler-generated utility file export. Furthermore, it comes with a considerably broadened language support of the SMTChecker.\n\n## Important Bugfixes\n\n### Free Function Overloading Checks\n\nFree functions were introduced in the previous release ([Solidity v0.7.1](https://github.com/ethereum/solidity/releases/tag/v0.7.1)). It turned out that it was possible\nto define a function with the same name multiple times, even containing the same parameter types.\nAllowing two functions with the same name, but different parameter types is called \"overloading\"\nand is useful when essentially the same functionality is implemented for different types.\nHowever, what should not be possible is allowing two functions with the same name and same parameter types.\n\nIn v0.7.1, the compiler would silently generate code that called the first definition.\n\nTo fix the bug, the missing check has been added.\n\n## Notable New Features\n\n### Utility File Export\n\nFor routines like the ABI encoder and decoder, the compiler generates additional code that\ncannot directly be attributed to specific locations in the source code. For a while now,\nthese routines are generated as Yul code that is supposed to be readable and auditable.\nSolidity 0.7.2 provides the ability to output the generated code, both in its optimized and\nin its non-optimized form.\n\nThe generated files are available in standard-json under the keys\n`evm.bytecode.generatedSources` and `evm.deployedBytecode.generatedSources`, respectively.\nFor now, there is a single file that is always called `#utility.yul`, but this can change in the future.\n\n## Full Changelog\n\n### Important Bugfixes\n\n- Type Checker: Disallow two or more free functions with identical name (potentially imported and aliased) and parameter types.\n\n### Compiler Features\n\n- Export compiler-generated utility sources via standard-json or combined-json.\n- Optimizer: Optimize `exp` when base is 0, 1 or 2.\n- SMTChecker: Keep knowledge about string literals, even through assignment, and thus support the `.length` property properly.\n- SMTChecker: Support `address` type conversion with literals, e.g. `address(0)`.\n- SMTChecker: Support `revert()`.\n- SMTChecker: Support `type(T).min`, `type(T).max`, and `type(I).interfaceId`.\n- SMTChecker: Support compound and, or, and xor operators.\n- SMTChecker: Support events and low-level logs.\n- SMTChecker: Support fixed bytes index access.\n- SMTChecker: Support memory allocation, e.g. `new bytes(123)`.\n- SMTChecker: Support shifts.\n- SMTChecker: Support structs.\n- Type Checker: Explain why oversized hex string literals can not be explicitly converted to a shorter `bytesNN` type.\n- Type Checker: More detailed error messages why implicit conversions fail.\n- Type Checker: Report position of first invalid UTF-8 sequence in `unicode\"\"` literals.\n- Yul IR Generator: Report source locations related to unimplemented features.\n- Yul Optimizer: Inline into functions further down in the call graph first.\n- Yul Optimizer: Prune unused parameters in functions.\n- Yul Optimizer: Try to simplify function names.\n\n### Bugfixes\n\n- Code generator: Fix internal error on stripping dynamic types from return parameters on EVM versions without `RETURNDATACOPY`.\n- Type Checker: Add missing check against nested dynamic arrays in ABI encoding functions when ABIEncoderV2 is disabled.\n- Type Checker: Correct the error message for invalid named parameter in a call to refer to the right argument.\n- Type Checker: Correct the warning for homonymous, but not shadowing declarations.\n- Type Checker: Disallow `virtual` for modifiers in libraries.\n- Type system: Fix internal error on implicit conversion of contract instance to the type of its `super`.\n- Type system: Fix internal error on implicit conversion of string literal to a calldata string.\n- Type system: Fix named parameters in overloaded function and event calls being matched incorrectly if the order differs from the declaration.\n- ViewPureChecker: Prevent visibility check on constructors.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.7.2).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/07/solidity-0.7.3-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/07/solidity-0.7.3-release-announcement.json deleted file mode 100644 index 9049b4fe..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/07/solidity-0.7.3-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.3 Release Announcement","date":"2020-10-07","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.7.3](https://github.com/ethereum/solidity/releases/tag/v0.7.3) fixes a bug in the dynamic-array cleanup.\nTo learn more about the bug and check if your contract is vulnerable please read this [post](https://blog.soliditylang.org/2020/10/07/solidity-dynamic-array-cleanup-bug) with further details about the bug.\nAdditionally, v0.7.3 adds the option to stop compilation after the parsing stage using `solc --stop-after parsing`.\n\n## Important Bugfixes\n\n- Code Generator: Properly cleanup after copying dynamic-array to storage for packed types. Read more [here](https://blog.soliditylang.org/2020/10/07/solidity-dynamic-array-cleanup-bug).\n\n## Notable New Features\n\n### Stop Compilation after Parsing\n\n`solc --stop-after parsing` (or `settings.stopAfter = 'parsing'` in standard-json) can now be used to instruct the compiler to do as little analysis on the code as possible. It will not even try to load imported (but not specified) files. This can be used to do a quick external analysis on the abstract syntax tree, like building an import hierarchy.\n\nIn the future, we might introduce more stages to stop compilation at, but for now, only the first stage \"parsing\" is supported.\n\n## Full Changelog\n\n### Compiler Features:\n\n- Code generator: Implemented events with function type as one of its indexed parameters.\n- General: Option to stop compilation after parsing stage. Can be used with `solc --stop-after parsing`\n- Optimizer: Optimize `exp` when base is `-1`.\n- SMTChecker: Support `addmod` and `mulmod`.\n- SMTChecker: Support array slices.\n- SMTChecker: Support type conversions.\n\n### Bugfixes:\n\n- Code Generator: Properly cleanup after copying dynamic-array to storage for packed types. Read more [here](https://blog.soliditylang.org/2020/10/07/solidity-dynamic-array-cleanup-bug).\n- Fixed internal compiler errors for certain contracts involving the `new` expression.\n- JSON AST: Fix internal error when using `--ast-json` on a function with memory arguments in ABIEncoderV2 contracts.\n- Type Checker: Add missing checks for calls using types incompatible with ABIEncoderV1 in modules where ABIEncoderV2 is not enabled.\n- Type Checker: Fix internal compiler error when calling `.push()` for a storage array with a nested mapping.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.7.3).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/07/solidity-dynamic-array-cleanup-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/07/solidity-dynamic-array-cleanup-bug.json deleted file mode 100644 index 8d53dd7f..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/07/solidity-dynamic-array-cleanup-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Dynamic Array Cleanup Bug","date":"2020-10-07","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn September 17, 2020, a bug in the Solidity code generator was found. The bug is fixed with [version 0.7.3](https://github.com/ethereum/solidity/releases/tag/v0.7.3)\nreleased on October 7, 2020. **The bug is present in all prior versions of Solidity.**\n\nWe assigned the bug a severity level of \"medium\".\n\n## Technical Details of the Bug\n\n**Summary**: For a dynamically-sized storage-array with types of size at most 16 bytes,\nassignments that require deleting slots did not zero out the deleted slots properly.\n\nConsider a dynamically-sized array in storage whose base-type is small enough such that multiple\nvalues can be packed into a single slot, such as `uint128[]`. Let us define its length to be `l`.\nWhen this array gets assigned from another array with a smaller length, say `m`, the slots between\nelements `m` and `l` have to be cleaned by zeroing them out. However, this cleaning was not\nperformed properly. Specifically, after the slot corresponding to `m`, only the first packed value\nwas cleaned up. If this array gets resized to a length larger than `m`, the indices corresponding to\nthe unclean parts of the slot contained the original value, instead of 0. The resizing here is\nperformed by assigning to the array `length`, by a `push()` or via inline assembly.\n\nAn example of the bug is the following:\n\n```solidity\n// SPDX-License-Identifier: GPL-3.0\n// The bug is present in all versions of solidity prior to 0.7.3\npragma solidity >=0.6.0 <0.7.3;\ncontract C {\n uint128[] x;\n function f() public {\n x.push(42); x.push(42); x.push(42); x.push(42);\n uint128[] memory y = new uint128[](1);\n y[0] = 23;\n // This will shrink the array x to one element.\n x = y;\n // Resizing the array to length 4.\n x.push(); x.push(); x.push();\n // After resizing the array, its contents are [23, 0, 0, 42],\n // instead of [23, 0, 0, 0]. Resizing can be also be done by\n // assigning to `.length` or by assigning to the `slot` member\n // inside inline assembly.\n }\n}\n```\n\n## How to check if contract is vulnerable\n\nIf your contract does all of the following, try to run tests to see if your contract was relying on having elements in the resized part to be zero.\n\n1. The contract has a dynamically-sized array in storage whose base-type is of size at most 16 bytes.\n2. You perform an assignment to the aforementioned array by another array of smaller\n length (from either memory, storage or calldata).\n3. You increase the length of the aforementioned array without assigning a value to the new elements.\n4. You read from one of the new elements before assigning a new value.\n\nYour contracts are not affected if you are only using `.push()` or if you assign a value (even zero) to\nthe new elements after increasing the length of the array.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/19/empty-byte-array-copy-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/19/empty-byte-array-copy-bug.json deleted file mode 100644 index 8be69852..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/19/empty-byte-array-copy-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Empty Byte Array Copy Bug","date":"2020-10-19","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn October 14, 2020, a bug in the Solidity code generator was reported by\nJohn Toman of the Certora development team. Certora's bug disclosure post can be found [here](https://medium.com/certora/the-solidity-compiler-silently-corrupts-storage-certora-bug-disclosure-b909289f0d6f).\n\nThe bug is fixed with [Solidity version 0.7.4](https://github.com/ethereum/solidity/releases/tag/v0.7.4)\nreleased on October 19, 2020. **The bug is present in all prior versions of Solidity.**\n\nWe assigned the bug a severity level of \"medium\".\n\n## Who should be concerned\n\nThis bug can cause newly created elements of `bytes` or `string` arrays in storage\nto be initialized by a non-zero value. For this to happen, the following three\nactions have to take place:\n\n- You copy an **empty** `bytes` or `string` value from `memory` or `calldata` to storage.\n- You extend the storage value by modifying `.length` or using `.push()` (not `.push(c)`).\n- You read the newly created byte array element without writing to it first.\n\nNote that the last step can also be done implicitly by reading the whole byte array\nor passing it on to somewhere.\n\nThe read operation can result in the new byte array elements being non-zero.\n\n## Example of the bug\n\n```solidity\ncontract C {\n bytes data;\n function f() public returns (bytes memory) {\n // Empty byte array\n bytes memory t;\n // Store something else in memory after it\n uint[2] memory x;\n x[0] = type(uint).max;\n // Copy the empty byte array to storage,\n // this will copy too much from memory.\n data = t;\n // Create a new byte array element,\n // this will only update the length value.\n data.push();\n // Now, `data[0]` is `0xff` instead of `0`.\n return data;\n }\n}\n\n```\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/19/solidity-0.7.4-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/19/solidity-0.7.4-release-announcement.json deleted file mode 100644 index e22c4673..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/19/solidity-0.7.4-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.4 Release Announcement","date":"2020-10-19","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.7.4](https://github.com/ethereum/solidity/releases/tag/v0.7.4) fixes a storage corruption bug of medium severity.\nTo learn more about the bug and to check if your contract is vulnerable please read this [post](https://blog.soliditylang.org/2020/10/19/empty-byte-array-copy-bug) with further details about the bug. The bug has been reported by John Toman of the Certora development team.\n\nAdditionally, v0.7.4 adds constants at file-level.\n\n## Important Bugfixes\n\n- Code Generator: Fix data corruption bug when copying empty byte arrays from memory or calldata to storage. Read more [here](https://blog.soliditylang.org/2020/10/19/empty-byte-array-copy-bug).\n\n## Notable New Features\n\n### Constants at File-Level\n\nIn order to make functions at file-level more useful, Solidity now also allows to\ndefine constant variables at file-level:\n\n```solidity\nuint constant EXPONENT = 10;\nuint constant MULTIPLIER = 2**EXPONENT;\n\nstruct Fixed { uint value; }\n\nfunction toFixed(uint x) pure returns (Fixed memory ret) {\n ret.value = x * MULTIPLIER;\n}\n```\n\nSuch constants have to follow the same rules as constants at contract-level.\nThis means, for example, the value has to be fixed at compile-time and only\nsome types are supported.\n\nYou can import constants from other source files like you import any other identifier:\n\n`import {MyConstant, MyStruct} from \"myHelper.sol\";`\n\n## Full Changelog\n\n### Language Features:\n\n- Constants can be defined at file level.\n\n### Compiler Features:\n\n- Command Line Interface: New option `--model-checker-engine` allows to choose a specific SMTChecker engine. Options are `all` (default), `bmc`, `chc` and `none`.\n- Control Flow Graph: Print warning for non-empty functions with unnamed return parameters that are not assigned a value in all code paths.\n- SMTChecker: Support `keccak256`, `sha256`, `ripemd160` and `ecrecover` in the CHC engine.\n- SMTChecker: Support inline arrays.\n- SMTChecker: Support variables `block`, `msg` and `tx` in the CHC engine.\n- Standard JSON: New option `modelCheckerSettings.engine` allows to choose a specific SMTChecker engine. Options are `all` (default), `bmc`, `chc` and `none`.\n\n### Bugfixes:\n\n- Code generator: Fix `ABIEncoderV2` pragma from the current module affecting inherited functions and applied modifiers.\n- Code generator: Fix internal compiler error when referencing members via module name but not using the reference.\n- Code generator: Fix internal error on returning structs containing mappings from library function.\n- Code generator: Use revert instead of invalid opcode for out-of-bounds array index access in getter.\n- Contract Level Checker: Add missing check against inheriting functions with ABIEncoderV2 return types in ABIEncoderV1 contracts.\n- Name Resolver: Fix shadowing/same-name warnings for later declarations.\n- Type Checker: Allow arrays of contract types as type expressions and as arguments for `abi.decode`.\n- Type Checker: Disallow invalid use of library names as type name.\n- Type Checker: Fix internal compiler error caused by storage parameters with nested mappings in libraries.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.7.4).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/28/solidity-0.8.x-preview.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/28/solidity-0.8.x-preview.json deleted file mode 100644 index 842f4494..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/10/28/solidity-0.8.x-preview.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.x Preview Release","date":"2020-10-28","author":"Solidity Team","category":"Releases"},"content":"\nWith the Solidity 0.8.x series being just around the corner, we would like to provide insights into the upcoming breaking changes that will come with it.\n\nWe want to provide a preview release binary for everyone to try out so that you can give your feedback.\n\nThe main change for 0.8.x is the switch to checked arithmetic operations by default.\nThis means that `x + y` will throw an exception on overflow. In other words: You will not need SafeMath anymore!\n\nSince the scope of 0.8.x is not yet fully specified, you still have a chance of influencing what will be included and how!\nTo do so you can either [create a new issue](https://github.com/ethereum/solidity/issues/new?template=feature_request.md)\nor voice your opinion on an [existing issue](https://github.com/ethereum/solidity/issues?q=is%3Aissue+is%3Aopen+label%3A%22breaking+change+%3Awarning%3A%22)\n\nThe current tentatively accepted changes are those in the \"Implementation Backlog\" column of our\n[project board](https://github.com/ethereum/solidity/projects/43?card_filter_query=label%3A%22breaking+change+%3Awarning%3A%22#column-9174474)\nthat are labeled as \"Breaking Change\".\n\nYou can already browse the [updated documentation](https://solidity.readthedocs.io/en/breaking/),\nwhich should be consistent with the behaviour of the compiler. If you find any errors, please\nopen an issue!\n\n### 0.8.x Preview Binaries!\n\nYou can find the preview binaries at the following locations:\n\n- [soljson.js](https://solidity-blog.s3.eu-central-1.amazonaws.com/data/08preview/soljson.js)\n- [solc-macos](https://solidity-blog.s3.eu-central-1.amazonaws.com/data/08preview/solc-macos)\n- [solc-static-linux](https://solidity-blog.s3.eu-central-1.amazonaws.com/data/08preview/solc-static-linux)\n- [solc.exe](https://solidity-blog.s3.eu-central-1.amazonaws.com/data/08preview/solc.exe)\n\nNote that all of these compilers will display a warning about them being a prerelease version, which is intentional.\n\nIf you use solc-js, just copy the binary as `soljson.js` into the root directory of the solc-js npm module.\n\nYou can also try out the 0.8.x compiler in [Remix](https://remix.ethereum.org).\nJust select the \"Solidity compiler\" tab on the left to switch to the compiler sidebar and click the\ninconspicuous `+` icon above the drop-down with the list of available compilers.\nPaste the [soljson.js](https://solidity-blog.s3.eu-central-1.amazonaws.com/data/08preview/soljson.js) URL into the\n\"URL\" field in the dialog that pops up and confirm with \"OK\". You should now see `custom` as the\nselected version and be able to use it to compile your code.\nIn case of problems please refer to [Remix documentation on the compiler module](https://remix-ide.readthedocs.io/en/latest/compile.html).\n\nMake sure to use `pragma solidity >0.7.0` - otherwise Remix might switch back to a different version.\n\nFor other ways to compile Solidity contracts, copy the binaries to the appropriate places.\n\n### Checked Arithmetic\n\nThe \"Checked Arithmetic\" feature of Solidity 0.8.x consists of three sub-features:\n\n- Revert on assertion failures and similar conditions instead of using the invalid opcode.\n- Actual checked arithmetic.\n- `unchecked` blocks.\n\n#### Revert on assertion failures and similar conditions instead of using the invalid opcode\n\nPrevously, internal errors like division by zero, failing assertions, array access out of bounds,\netc., would result in an invalid opcode being executed. The idea was to distinguish\nthese more critical errors from non-critical errors that lie outside of the domain\nof the Smart Contract programmer like invalid input, not enough balance for a token transfer,\nand so on. These non-critical errors use the `revert` opcode and optionally add an error description.\n\nThe problem with the invalid opcode is that, in contrast to the `revert` opcode, it consumes all gas available.\nThis makes it very expensive and you should try to avoid it at all cost.\n\nWe wanted to consider arithmetic overflow as a critical error, but did not want to cause it to consume all gas.\nAs a middle ground, we chose to use the `revert` opcode, but provide a different error data\nso that static (and dynamic) analysis tools can easily distinguish them.\n\nMore specifically:\n\n- Non-critical errors will revert either with empty error data or with error data that\n corresponds to the ABI-encoding of a function call to a function with the signature `Error(string)`.\n- Critical errors revert with error data that corresponds to the ABI-encoding of a function call\n to a function with the signature `Panic(uint256)`.\n\nBecause of that, we also use the term \"panic\" for such critical errors.\n\nTo distinguish the two situations, you can take a look at the first four bytes of the return data in case\nof a failure. If it is `0x4e487b71`, then it is a panic, if it is `0x08c379a0`\nor if the message is empty, it is a \"regular\" error.\n\nPanics use specific error codes to distinguish certain situations in which the panic is triggered.\nThis is the current list of error codes:\n\n1. 0x01: If you call `assert` with an argument that evaluates to false.\n2. 0x11: If an arithmetic operation results in underflow or overflow outside of an `unchecked { ... }` block.\n3. 0x12: If you divide or modulo by zero (e.g. `5 / 0` or `23 % 0`).\n4. 0x21: If you convert a value that is too big or negative into an enum type.\n5. 0x31: If you call `.pop()` on an empty array.\n6. 0x32: If you access an array, `bytesN` or an array slice at an out-of-bounds or negative index (i.e. `x[i]` where `i >= x.length` or `i < 0`).\n7. 0x41: If you allocate too much memory or create an array that is too large.\n8. 0x51: If you call a zero-initialized variable of internal function type.\n\nThis list of codes can be extended in the future.\n\n#### Actual Checked Arithmetic\n\nBy default, all arithmetic operations will perform overflow and underflow checks\n(Solidity already had division by zero checks). In case of an underflow or\noverflow, a `Panic(0x11)` error will be thrown and the call will revert.\n\nThe following code, for example, will trigger such an error:\n\n```solidity\ncontract C {\n function f() public pure {\n uint x = 0;\n x--;\n }\n}\n```\n\nThe checks are based on the actual type of the variable, so even if the result would fit\nan EVM word of 256 bits, if your type is `uint8` and if the result is larger than `255`,\nit will trigger a `Panic`.\n\nWe did not introduce checks for explicit type conversions from larger to smaller\ntypes, because we think that such checks might be unexpected. We would love to get\nyour input on that matter!\n\nThe following operations now have checks that they did not have before:\n\n- addition (`+`), subtraction (`-`), multiplication (`*`)\n- increment and decrement (`++` / `--`)\n- unary negation (`-`)\n- exponentiation (`**`)\n- division (see below) (`/`)\n\nThere are some edge cases you might not expect.\nFor example, unary negation is only available for signed types.\nThe problem is that in two's complement representation, there is one more negative number for each bit width\nthan there are positive numbers. This means that the following code will trigger a `Panic`:\n\n```solidity\nfunction f() pure {\n int8 x = -128;\n -x;\n}\n```\n\nThe reason is that `128` does not fit an 8-bit signed integer.\n\nFor the same reason, signed division can result in an assertion:\n\n```solidity\nfunction f() pure {\n int8 x = -128;\n x/(-1);\n}\n```\n\nEveryone who wanted to write a `SafeMath` function for exponentiation probably noticed\nthat it is rather expensive to do that because the EVM does not provide overflow signalling.\nEssentially you have to implement your own `exp` routine without using the `exp` opcode\nfor the general case.\n\nWe hope that we found a rather efficient implementation and would also appreciate your feedback about that!\n\nFor many special cases, we actually implemented it using the `exp` opcode instead of our own implementation.\nMore specifically, exponentiation operations that use a literal number as base will use the `exp` opcode directly.\nThere are also specialized code paths for bases that are variables with small value:\nAll bases up to 2, bases between 3 and 10 and bases between 11 and 306 get special treatment\nand should result in a cheap `exp` opcode.\n\n#### `unchecked` Blocks\n\nSince checked arithmetic uses more gas, as discussed in the previous section, and\nbecause there are times where you really want the wrapping behaviour, for example when\nimplementing cryptographic routines, we provide a way to disable the checked arithmetic and\nre-enable the previous \"wrapping\" or \"modulo\" arithmetic:\n\nAny block of the form `unchecked { ... }` uses wrapping arithmetic. You can use\nthis special block as a regular statement inside another block:\n\n```solidity\ncontract C {\n function f() public pure returns (uint) {\n uint x = 0;\n unchecked { x--; }\n return x;\n }\n}\n```\n\nAn unchecked block can of course contain any number or any kind of other statements\nand will create its own variable scope.\nIf there is a function call inside the unchecked block, the function will\nnot inherit the setting - you have to use another `unchecked` block inside the function\nif you also want it to use wrapping arithmetic.\n\nWe decided for some restrictions for the `unchecked` block:\n\n1. In modifiers you cannot use `_;` inside it, because this might lead to confusion about whether the property is inherited.\n\n2. You can only use it inside a block but not as a replacement for a block. The following code snippets, for example, are both invalid:\n\n```solidity\nfunction f() unchecked { uint x = 7; }\n```\n\n```solidity\nfunction f() pure {\n uint x;\n for (uint i = 0; i < 100; i ++) unchecked { x += i; }\n```\n\nYou have to wrap the unchecked blocks inside another block to make it work.\n\nIf you find this inconvenient, but also if you find the current behaviour good, please let us know!\n\n## Full Changelog (Subject to More Additions)\n\n**Breaking Changes:**\n\n- Assembler: The artificial ASSIGNIMMUTABLE opcode and the corresponding builtin in the \"EVM with object access\" dialect of Yul take the base offset of the code to modify as additional argument.\n- Code Generator: All arithmetic is checked by default. These checks can be disabled using `unchecked { ... }`.\n- Code Generator: Use `revert` with error signature `Panic(uint256)` and error codes instead of invalid opcode on failing assertions.\n- General: Remove global functions `log0`, `log1`, `log2`, `log3` and `log4`.\n- Parser: Exponentiation is right associative. `a**b**c` is parsed as `a**(b**c)`.\n- Type System: Disallow explicit conversions from negative literals and literals larger than `type(uint160).max` to `address` type.\n- Type System: Unary negation can only be used on signed integers, not on unsigned integers.\n\n**Language Features:**\n\n- Super constructors can now be called using the member notation e.g. `M.C(123)`.\n\n**AST Changes:**\n\n- New Node `IdentifierPath` replacing in many places the `UserDefinedTypeName`\n- New Node: unchecked block - used for `unchecked { ... }`.\n\nWe hope you find this preview releases helpful and look forward to hearing your thoughts on the implementation of the breaking changes. If you are interested in discussing language design with us, make sure to join the [solidity-users](https://groups.google.com/g/solidity-users) mailing list!\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/11/04/solidity-ama-1-recap.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/11/04/solidity-ama-1-recap.json deleted file mode 100644 index 9b35c6d4..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/11/04/solidity-ama-1-recap.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Ask the Solidity Team Anything #1 Recap","date":"2020-11-04","author":"Solidity Team","category":"Announcements"},"content":"\nWe hosted our very first Solidity team AMA on Reddit last week! We would like to take the opportunity to summarize the most interesting and most upvoted questions & answers in this post.\n\nIf you are interested in going through the full AMA thread you can do so [here](https://www.reddit.com/r/ethdev/comments/jigz5o/ask_the_solidity_team_anything_1/).\n\n### General Questions\n\n#### Roadmap Outlook: What does the Solidity team see as its most important feature goals in the medium-long term and what are the biggest blockers to achieving those goals?\n\nAs far as the compiler is concerned, currently the biggest task is getting the Yul IR to 100% coverage, something we should be able to complete towards the end of the year. Consequently, we should have two equal compiler pipelines towards mid-2021.\n\nAs far as language features are concerned we can list a few prominent topics and their current implementation hurdles: We would like to support templates (blocker: complexity), make copies and references more explicit (blocker: acceptance), move more towards functional programming (immutable by default, range-based loops, algebraic data-types, ...), make more efficient use of memory (eliminate \"stack too deep\", de-allocate memory), provide better data about internal structures for debuggers, and use SMT solvers and other powerful tools in the optimizer (blocker: ensuring correctness).\n\nIn general, the biggest difficulty is often getting proper feedback about language features and coordinating all these changes.\n\n#### Users: What things/features do you wish people would stop doing/using with Solidity?\n\nRegarding the usage of language features, people are free to do whatever they want as long as they know what they are doing. What is unfortunate is that source flattening for source verification is so popular. The flattened source is less structured and it prevents you from using the modularity of imports and other features. The [sourcify validation script](https://www.npmjs.com/package/@ethereum-sourcify/validation) can be used to extract all you need from a truffle or buidler/hardhat project directory to re-compile your smart contracts in a non-flattened form.\n\n#### Stack too deep: Is it possible to ever change the way the stack is accessed in order to get rid of the \"Stack too deep\" issues?\n\nYes! In fact, we are currently working on it.\n\nYou can check the progress [here](https://github.com/ethereum/solidity/pull/10015). This will only go into the new code generator and if you access memory from inline assembly, you will have to make some changes, but it should generally not be a problem anymore in the long term.\n\n#### Yul/Inline Assembly: Is there a document that explains in detail how each instruction in assembly works?\n\nThe [table of builtins](https://solidity.readthedocs.io/en/develop/yul.html#evm-dialect) should provide a good summary. If you need more details about the EVM, maybe try the [section on the EVM](https://solidity.readthedocs.io/en/develop/introduction-to-smart-contracts.html#index-6). If you are missing something, please feel free to open an issue in the [Solidity repo](https://github.com/ethereum/solidity/issues)!\n\n#### Rollups: What do you think of optimism's solc customisations? Is this a viable way to implement containerisation?\n\nI hope they will switch to a yul-based approach once the code generator is finished. The code generated through the IR does not contain any dynamic jumps and it can be easily rewritten by a very simple tool to do what optimism needs.\n\n### Solidity Optimizer\n\n#### What is the Solidity Optimizer optimizing for (size or cost or something else?) and how does it achieve that?\n\nThe Solidity compiler uses two different optimizer modules: The \"old\" optimizer that operates at opcode level and the \"new\" optimizer that operates on Yul IR code. The opcode-based optimizer applies simplification rules from the [list](https://github.com/ethereum/solidity/blob/develop/libevmasm/RuleList.h) to opcodes next to each other. It also combines equal code sets, removes unused code and some other things. The Yul-based optimizer is much more powerful, because it can work across function calls: In Yul it is not possible to perform arbitrary jumps, so it is for example possible to compute the side-effects of each function: If a function does not modify storage, a call to it can be swapped with a function that does. If a function is side-effect free and its result is multiplied by zero, you can remove the function call completely.\n\nThe optimizer tries to simplify complicated expressions (which reduces both size and execution cost), but it also specializes or inlines functions. Especially function inlining is an operation that can cause much bigger code, but it is often done because it results in opportunities for more simplifications.\n\nIn the opcode-based optimizer there is only one stage (the \"constant optimizer\") where the trade-offs between deploy-time and run-time costs are taken into account. This stage tries to find a \"better\" representation of each number in the source, like `0x10000000000` can be encoded as `PUSH6 0x10000000000` (7 bytes and almost zero run-time costs), but it can also be encoded as `PUSH1 1 PUSH1 40 SHL` (5 bytes and a bit more expensive at run-time). Most of the time, the difference is not too relevant.\n\nOne of the big advantages of the Yul-based optimizer is that each step can be seen in isolation: Each step receives Yul code as input and produces Yul code as output, without any tight dependency on other steps or analysis code. Furthermore, we try to keep each step as simple as possible so that bugs in those steps are very unlikely. As long as each simple step is bug-free, so is the whole Yul optimizer.\n\n#### How does it work?\n\nThere are several steps that the optimizer performs. A simple example would be evaluating expressions whose value is known at runtime, e.g., `x + 0` is evaluated to `x`, where `x` may be a parameter known only during runtime. A more complex example would be to identify expressions that remains invariant inside a loop and moving them outside the loop, thereby saving gas. Another interesting example would be avoiding accessing the same value from storage multiple times, i.e., multiple `sload` to the same slot can be reduced to a single `sload`, in certain situations.\n\nReferences:\n\n- [High level description of steps in Yul optimizer](https://github.com/ethereum/solidity/blob/develop/libyul/optimiser/README.md)\n- [List of steps in Yul optimizer](https://solidity.readthedocs.io/en/v0.7.4/yul.html?highlight=ir%20optimize#yul-optimizer)\n- [Assembly based optimizer](https://solidity.readthedocs.io/en/v0.7.4/internals/optimiser.html)\n

\n\n#### What are the typical differences between optimized and non-optimized code?\n\nGenerally, the most visible difference would be constant expressions getting evaluated. When it comes to the ASM output, one can also notice reduction of equivalent/duplicate \"code blocks\" (compare the output of the flags `--asm` and `--asm --optimize`). However, when it comes to the Yul/intermediate-representation, there can be significant differences, for example, functions can get inlined, combined, rewritten to eliminate redundancies, etc. (compare the output between the flags `--ir` and `--optimize --ir-optimized`).\n\n#### How is optimization affected by the number of runs (`--optimize-runs`) and is there a maximum number above which it stops mattering, or is `--optimize-runs=20000` less efficient than `--optimize-runs=500000`?\n\nThe parameter specifies roughly how often each opcode of the deployed code will be executed across the life-time of the contract. A \"runs\" parameter of \"1\" will produce short but expensive code. The largest value is `2**64-1`.\n\n#### When multiple small variables are packed into a single storage slot, how can we be sure accessing them both is done with a single SSTORE/SLOAD? How \"nearby\" do the accesses have to be each-other, and is there any better way to ensure this than inspecting the assembly?\n\nAs long as this still uses the non-yul code generator, it is actually rather limiting. It is best to not have any branches in between the accesses, so assigning a memory struct to storage should work best.\n\n#### Does it make sense to cache `arr.length` in a stack variable when looping over an array from front to back, or will it SLOAD/MLOAD that only once if it sees it won't change in the loop body?\n\nIn the Yul optimizer (for the new code generator), there is an optimization step called LoopInvariantCodeMotion which is designed to detect expressions that remain invariant in the loop and move them outside the loop. Take the following Solidity example that finds the sum of a dynamic integer array in storage.\n\n```solidity\nuint sum = 0;\nfor (uint i = 0; i < arr.length; ++i)\n{\n sum += arr[i];\n}\n```\n\nThe optimization step can correctly identify that the `arr.length` remains invariant and will move it outside the loop. So there is no need for manually caching the length for this example.\n\nTo understand if you need to manually cache length, or any other storage/memory value inside a loop, we'll describe how the step works.\n\n1. The step only deals with expressions that remain the same or invariant, so in the above example, `arr[i]` will not even be considered for moving.\n2. If such expressions are movable, i.e., the expression does not have any side effects, they are moved outside right away. Examples of such instructions would be arithmetic operations such as `add` or instructions that do not read/modify memory, storage or blockchain state, e.g., `address`. Non-examples would be `keccak256` (reads from memory), `sload` (reads from storage), `call` (can modify blockchain state and contract storage.)\n3. If such expressions have side effects, but only the _read_ kind, i.e., reading from storage or memory, e.g., `sload`, `mload`, `extcodesize`, etc., then they can be moved out of the loop if the loop does not write to the corresponding location. In the above example, even though `arr.length` reads from storage, since no other expression in the loop can write to storage, we can move `arr.length` outside the loop. Note that the step cannot reason about fine-grained storage or memory locations. i.e., writing to storage slot, say `0`, will mean that `sload(1)` cannot be moved outside. This may be improved in the future.\n\nIn short, for the new code generator, one does not need to cache reads from a storage (or memory) if there are no writes to storage (or memory). Manual caching will only be beneficial in the following situation: if the loop contains a write, but if the contract author can reason that the write does not modify a variable that was read. An example of this situation would be the following:\n\n```solidity\n// Copying storage arrays arr1 into arr2, assuming arr2 is big enough.\n// Example where caching is helpful:\n// uint len = arr1.length\n// and replacing arr1.length with len will save gas\nfor (uint i = 0; i < arr1.length; ++i)\n{\n arr2[i] = arr1[i];\n}\n```\n\nPlease note that the new code generator is not active yet. For the old generator, there are some inefficiencies and it is hence probably cheaper to cache the length on the stack.\n\n#### Does the compiler ever inline functions? Does it make sense for the user to be able to request the compiler to do this? Even if it's not worth it to reduce call overhead, this may allow new opportunities for constant folding.\n\nThe current code generator does not inline function, but the new one will, exactly for that purpose. We do not plan to make those user-controllable. It might also make sense to inline the function depending on how it is called, but in general, small functions are very likely to be inlined.\n\n#### Why do you think people are generally suspicious of the optimizer, and are they right to be?\n\nThe optimizer used to be very complicated some years ago. In the meantime, we disabled most of the complicated routines and fixed several bugs. While bugs can be present in the optimizer as they can be in any code, they often manifest themselves in a way that is easily detected. New compiler code like **ABIEncoderV2** focuses more on correctness instead of efficiency and is written with the assumption in mind, that the optimizer will be used. So for recent versions of Solidity, we would recommend to always use the optimizer unless you really do not care about gas costs.\n\n### Security\n\n#### What are your plans for making Solidity a safer language? (Especially with regards to arguments raised in [this article](https://blog.blockstack.org/bringing-clarity-to-8-dangerous-smart-contract-vulnerabilities/).)\n\nMost of the issues raised in the linked article have been fixed months if not years ago. In our design decisions, we have always focused on safety. Most of the work Solidity does is evening out restrictions and weirdnesses that the EVM has. One example is that a call to a non-existing contract is considered successful. Because of that, Solidity always checks that the contract to be called exists. Furthermore, the built-in SMT checker (`pragma experimental SMTChecker`) is improving on a weekly basis and can detect many problems while you are writing your code.\n\nLet's tackle the mentioned issues step-by-step:\n\n1. **Reentrancy**: The Ethereum community has no clear consensus over whether reentrancy is a feature or not. Over the years, many tools have evolved to flag code that has issues with reentrancy and blocking reentrant calls altogether is not only expensive, it also creates a new class of bugs.\n2. **Access Control**: Visibility has been solved years ago by making it explicit. In recent Solidity versions, you can even move functions to the file level (outside of contracts) where it is obvious that they cannot be called from outside and that they cannot access storage variables (unless explicitly provided as arguments).\n\n3. **Overflow and Underflow**: Safe math as a languge feature is already done and is going to become the default in the next breaking release (see [Solidity 0.8.x Preview Release](https://blog.soliditylang.org/2020/10/28/solidity-0.8.x-preview/)).\n4. **Unchecked Return Values For Low Level Calls**: The compiler has been flagging unchecked low-level calls for years.\n\n5. **Denial of Service**: With each breaking release, we are limiting more and more what can be done with objects of unlimited size. The biggest change in that direction is [making the semantics of copying more visible](https://github.com/ethereum/solidity/issues/2435) but we have not yet received much feedback whether this feature would be more annoying that helpful.\n\n6. **Bad Randomness**: This is more of a general blockchain issue rather than something to be solved in Solidity. How can you be sure that any number you see on the blockchain is actually random[?](https://xkcd.com/221/) More importantly, how do you ensure that the one who generated it does not have an unfair advantage in knowing the number ahead of time? Well, there are ways to achieve that, e.g. Verifiable Random Functions, but there are two big problems with baking it into the language. First, this is all new crypto and none of this is standardized. There are new methods being developed all the time and new vulnerabilities being found. Compared to the usual pace of cryptographic research it's all developing at a breakneck speed and there's a lot of risk in committing to any particular scheme. Second, you can't really do it on-chain. And even if you could it would be very expensive (proof generation is infamously intensive in terms of computation). You're better off relying a solution where the randomness is provided by an oracle and only doing the proof verification on-chain.\n\n7. **Time manipulation**: There's not much you can do to prevent these kinds of attacks at Solidity level. The timestamp comes from the underlying blockchain and is set by the miner. [Clock synchronization](https://en.wikipedia.org/wiki/Clock_synchronization) is hard even before you start taking malicious actors into account. The clients do have validation rules that prevent these timestamps from drifting too far apart from the clocks on the client machines but that's not enough to prevent the miner from introducing minuscule differences that are exploited in this attack. And Bitcoin is affected by it as much as Ethereum is. The additional complication in the GovernMental attack was that the contract author was the attacker. So preventing it would not just be a matter of providing better features and ergonomics but actively restricting the programmer. As a general rule we try to provide as much safety as possible at Solidity level but still let you go down to the inline assembly level and do pretty much anything you want. Block timestamp has a lot more legitimate uses than malicious ones so going so far as to stop you from using it at all would be simply unacceptable.\n\n8. **Short address attack**: Since Solidity 5.0 there's a built-in protection that will revert the transaction if the calldata is too short. If you use ABIEncoderV2 you are even protected against inputs that do not fit the provided type. Also, please note that Solidity ABI **is** strongly typed and that this alone cannot protect you if the ABI definition used by the client does not match the actual ABI of the contract or if the client has a bug and is not actually following it.\n\nWe hope you enjoyed the first AMA and are looking forward to many questions in the next edition! In the meantime, feel free to join the [language design mailing list](https://groups.google.com/g/solidity-users) or check out our newly launched [Solidity language portal](https://soliditylang.org/).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/11/18/solidity-0.7.5-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/11/18/solidity-0.7.5-release-announcement.json deleted file mode 100644 index 140cfa27..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/11/18/solidity-0.7.5-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.5 Release Announcement","date":"2020-11-18","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.7.5](https://github.com/ethereum/solidity/releases/tag/v0.7.5) adds the ability so select the ABI coder via `pragma abicoder v1` and `pragma abicoder v2` in preparation for making ABI coder v2 the default for 0.8.0 and introduces `--experimental-via-ir` which compiles via the new experimental Yul-based compiler pipeline.\n\n## Full Changelog\n\n### Language Features:\n\n- Ability to select the abi coder using `pragma abicoder v1` and `pragma abicoder v2`.\n- Inline Assembly: Use `.offset` and `.length` for calldata variables of dynamic array type to access their calldata offset and length (number of elements). Both of them can also be assigned to.\n- Immutable variables with literal number values are considered pure.\n\n### Compiler Features:\n\n- Assembler: Perform linking in assembly mode when library addresses are provided.\n- Command Line Interface: New option `--experimental-via-ir` allows switching compilation process to go through the Yul intermediate representation. This is highly experimental and is used for development purposes.\n- Command Line Interface: New option `--model-checker-timeout` sets a timeout in milliseconds for each individual query performed by the SMTChecker.\n- Command Line Interface: Report error if file could not be read in `--standard-json` mode.\n- Command Line interface: Report proper error for each output file which could not be written. Previously an exception was thrown, and execution aborted, on the first error.\n- SMTChecker: Add division by zero checks in the CHC engine.\n- SMTChecker: More precise analysis of external calls using `this`.\n- SMTChecker: Support `selector` for expressions with value known at compile-time.\n- Standard JSON: New option `modelCheckerSettings.timeout` sets a timeout in milliseconds for each individual query performed by the SMTChecker.\n- Standard JSON: New option `settings.viaIR` allows the same switch as `--experimental-via-ir` on the commandline.\n\n### Bugfixes:\n\n- Code generator: Fix missing creation dependency tracking for abstract contracts.\n- Command Line Interface: Fix write error when the directory passed to `--output-dir` ends with a slash.\n- Command Line Interface: Reject duplicate libraries in `--libraries` option instead of arbitrarily choosing one.\n- NatSpec: Fix internal error when inheriting return parameter documentation but the parameter names differ between base and inherited.\n- SMTChecker: Fix CHC false positives when branches are used inside modifiers.\n- SMTChecker: Fix false negative in modifier applied multiple times.\n- SMTChecker: Fix incorrect counterexamples reported by the CHC engine.\n- SMTChecker: Fix internal error in the BMC engine when inherited contract from a different source unit has private state variables.\n- SMTChecker: Fix internal error on conversion from string literal to byte.\n- SMTChecker: Fix internal error when `array.push()` is used as the LHS of an assignment.\n- SMTChecker: Fix internal error when assigning state variable via contract's name.\n- SMTChecker: Fix internal error when using tuples of rational literals inside the conditional operator.\n- SMTChecker: Fix lack of reporting potential violations when using only the CHC engine.\n- Standard JSON: Fix library addresses specified in `libraries` being used for linking even if the file names do not match.\n\n### AST Changes:\n\n- New member `suffix` for inline assembly identifiers. Currently supported values are `\"slot\"`, `\"offset\"` and `\"length\"` to access the components of a Solidity variable.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.7.5).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/12/03/solidity-underhanded-contest-winners.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/12/03/solidity-underhanded-contest-winners.json deleted file mode 100644 index 65ea1f97..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/12/03/solidity-underhanded-contest-winners.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Announcing the Winners of the Underhanded Solidity Contest 👨‍💻🏅","date":"2020-12-03","author":"Franziska Heintel","category":"Announcements"},"content":"\nAfter thorough assessment of all submissions, we are happy to share the winners of this year's [Underhanded Solidity Contest](https://underhanded.soliditylang.org/)!\n\nIf you are not familiar with it, please read [the announcement](https://blog.soliditylang.org/2020/09/21/solidity-underhanded-contest/) from September.\n\nBefore we dive into the winning submissions, we'd like to thank all participants for taking part. In total, we received 16 qualifying submissions which you can find in [this repo](https://github.com/ethereum/solidity-underhanded-contest/tree/master/submissions_2020). All 16 submissions are eligible for a \"qualified submission\" Underhanded Solidity POAP NFT - winners will receive an additional \"Winners\" POAP NFT.\n\nWe will be in touch with all participants shortly with details on the claiming process for the NFTs as well as the main prizes.\n\nNow, let's have a look at this year's winners, starting from the 5th place!\n\n## Underhanded Solidity Contest 2020 Winners\n\n### 5️⃣ th Place: [Marius van der Wijden](https://github.com/ethereum/solidity-underhanded-contest/tree/master/2020/submissions_2020/submission14_MariusVanDerWijden)\n\n_commentary by [Alex Beregszaszi](https://twitter.com/alexberegszaszi)_\n\nThis submission highlights the need for clearly distinguishing error conditions from return values. The `ecrecover` precompile has a single output, the address, which is set to zero in case of errors. While [some](https://gist.github.com/axic/5b33912c6f61ae6fd96d6c4a47afde6d) high-level wrappers for this precompile made a distinction, many introduce new error conditions, but still reuse the same mechanic of returning a “zero address” on error. This was the case with OpenZeppelin’s version [prior](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v2.5.0/contracts/cryptography/ECDSA.sol) to the 3.0 series.\n\nUsing this validation shortcoming, the submission allows anyone to create unlimited \"vote accepted\" transactions.\n\nSolidity has always supported multiple return values which allows returning a status/error code and data separately, but more importantly the established best practice is to use `require` statements for validation, which most `ecrecover` use cases follow today.\n\nWhile the submission is written clearly and the issue is not obvious without dissecting both the `closeVote` and the _trusted_ `ECDSA.recover` functions, in our opinion there are two shortcomings raising suspicion:\n\n1. Append only data structures are not commonly used.\n2. Awareness about `ECDSA.recover` was raised recently, and thus one would expect a more thorough review of its applications. The submission used the version from OpenZeppelin 2.5.0.\n\n### 4️⃣ th Place: [Richard Moore](https://github.com/ethereum/solidity-underhanded-contest/tree/master/2020/submissions_2020/submission8_RichardMoore)\n\n_commentary by [Stefan Beyer](https://twitter.com/beyer_st)_\n\nThe submission exploits `CREATE2` to hijack a multisig contract that controls upgradability. Whilst this is a known issue, the scenario demonstrates the impact of `CREATE2` in combination with self-destruct and shows the importance of assessing the contracts deployment procedure in a security analysis.\n\n### 3️⃣ rd Place: [Cory Dickson](https://github.com/ethereum/solidity-underhanded-contest/tree/master/2020/submissions_2020/submission1_CoreyDickson)\n\n_commentary by [Goncalo Sá](https://twitter.com/GNSPS)_\n\nThis submission highlights the perils of validating non-EOA (Externally Owned Accounts) addresses within the EVM. Even though assessing whether an account interacting with a certain system is not a contract has been the source of many production hacks on mainnet and therefore is a well-studied, bad-practice pattern, the one where a user \"DoS-es\" a system by self-destructing their contract is not.\n\nIn a nutshell, this attack demonstrates the possibility of a lock-up scenario in a governance system that depends on composability and expects the existence of a smart contract at a certain address to be a time-independent function.\nSince the OpenZeppelin library used to check if an account is a contract or not returns true even though a contract might self-destruct at the end of a transaction, the attacker is able to lock-up following governance votes to change the delegated contract.\n\n**Any drawbacks?**\n\nAs a result of its extreme simplicity, the submission is a bit lacking in framing an actual real-life scenario where this might happen.\nImprovements in either the storytelling or the smart contract system would have been welcomed.\n\n**Why did we chose this submission to be one of the winners?**\n\nIts simplicity is really good. The attack could not have been more straight-forward than it was and still relevant in today’s security landscape of the EVM.\n\nReiterating the answer to the previous question, this extreme simplicity is also a reason for it to not be the strongest of submissions. Some more context would’ve been welcomed.\n\n### 2️⃣ nd Place: [Jaime Iglesias](https://github.com/ethereum/solidity-underhanded-contest/tree/master/2020/submissions_2020/submission4_JaimeIglesias)\n\n_commentary by [Austin Williams](https://twitter.com/onewayfunction)_\n\nIn this submission, an [EIP-1967](https://eips.ethereum.org/EIPS/eip-1967) proxy is used for upgradability of an [ERC-20](https://eips.ethereum.org/EIPS/eip-20) token contract. There are two key roles here: an admin and an owner. There is an `_optIn` storage variable that indicates whether or not the owner has consented to an upgrade. The admin should not be able to upgrade unless the owner has set the `_optIn` value to `true`.\n\nThe `_optIn` storage variable is stored in storage slot `0x7b191067458f5b5c0c36f2be8ceaf27679e7ea94b6964093ce9e5c7db2aff82a`, which the code comments claim is derived via \"the keccak-256 hash of 'eip1967.proxy.optIn' subtracted by 1\". However, the storage location actually points to the location in storage where the token balance of an admin-known address is stored. This means the admin can set `_optIn` to `true` without the owner's consent simply by sending some tokens to the admin-known address -- thereby changing the value at the `_optIn` storage location from `0` to a truthy value.\n\nIn this way, the back door can be unlocked and locked simply by sending tokens to and from some address that is controlled by the admin.\n\n### 1️⃣ st Place: [Robert M C Forster](https://github.com/ethereum/solidity-underhanded-contest/tree/master/2020/submissions_2020/submission11_RobertMCForster)\n\n_commentary by [Chris Reitwiessner](https://twitter.com/ethchris)_\n\nThis submission implements a nicely structured and very simple timelock upgrade: The owner proposes a new implementation of the delegate which will get active one month after it has been proposed.\n\nThe only suspicious part about it is that the point in time where the upgrade is performed is stored as month and day instead of a timestamp.\nThe exploit is very well hidden and makes use of special unicode symbols that change the text flow direction. Such symbols are of course invalid in code, but they are accepted in comments.\n\nSince multi-line comments work in the same way when read from left to right as well as from right to left, the submission is able to terminate the comment \"from right to left\" and switches into code mode which is then displayed in the \"wrong\" order. This causes the day and month variables to be swapped unnoticed and the upgrade is performed much earlier than expected.\n\nYou can see (_or not, depending on your editor 😬_) the direction change in action by selecting [part of line 65](https://github.com/ethereum/solidity-underhanded-contest/blob/master/submissions_2020/submission11_RobertMCForster/contracts/TimelockUpgrade.sol#L65) in the submission.\n\nThis is a flaw that can be prevented at the level of Solidity by disallowing text direction changes to flow across comments ([issue tracker](https://github.com/ethereum/solidity/issues/10254)), but I would also call this to the attention of IDE, highlighter and linter developers. I am not sure how a linter would handle such a situation, but if a linter marks superfluous whitespace at the end of a line, it should certainly mark a text direction change flowing out of a comment.\n\n## Honorable Mentions\n\n### 🦇 [Chris Whinfrey](https://github.com/ethereum/solidity-underhanded-contest/tree/master/2020/submissions_2020/submission15_ChrisWhinfrey)'s VampireSwap\n\nProps for the witty and detailed storytelling and documentation!\n\nThis submission shows the social aspect of trusting “audited” upgradable contracts: unless someone verifies every single on-chain executed upgrade (plus the initialization), none of the audits matter. _Not even the one from Open Trail of Diligence! ;)_\n\n### 🐛 [Luiz Soares & Boris Breslav](https://github.com/ethereum/solidity-underhanded-contest/tree/master/2020/submissions_2020/submission9_LuizSoares)'s Superior Proxy\n\nThis submissions exploits a Solidity compiler bug, namely the [Solidity Dynamic Array Cleanup Bug](https://blog.soliditylang.org/2020/10/07/solidity-dynamic-array-cleanup-bug/), which was fixed with Solidity v0.7.3. Using this bug is a great idea in theory, however, the implementation is suspicious and would raise eyebrows.\n\n## See you at the next Underhanded Solidity Contest!\n\nWe would like to thank ConsenSys Diligence, Solidified, OpenZeppelin, and the Ethereum Foundation for contributing prizes and our judges Alex Beregszaszi, Austin Williams, Christian Reitwiessner, Gonçalo Sá, and Stefan Beyer for their assessments and support!\n\nWould you like to propose a topic for the next Underhanded Solidity Contest, provide feedback, sponsor a prize, or help with judging the next time? Then feel free to reach out to us at sol_underhanded@ethereum.org!\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/12/09/solidity-developer-survey-2020.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/12/09/solidity-developer-survey-2020.json deleted file mode 100644 index 654a269c..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/12/09/solidity-developer-survey-2020.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Launching the Solidity Developer Survey 2020","date":"2020-12-09","author":"Franziska Heintel","category":"Announcements"},"content":"\nToday we are launching the [Solidity Developer Survey 2020](https://docs.google.com/forms/d/e/1FAIpQLSdcTPsWxuXmyG74t_zUI4pYQk1Y7mFcz03Owg4wJqrvRh7SsA/viewform?usp=sf_link). It is the first time we share a proper language survey and we hope to turn this into an annual tradition moving forward.\n\nYou might remember the small feedback survey we did this year as part of the Solidity Summit registration in which we asked you for the most liked and dreaded Solidity features. If you're curious to revisit the results of that click [here](https://twitter.com/solidity_lang/status/1258432533286584322?s=20).\n\n## Help shape the future of Solidity 🔮\n\nSo why should you care and take 10 mins of your time to repsond to this survey? Easy: Your replies will help the Solidity project understand your needs, the current strengths and weaknesses of the language and will contribute towards establishing development priorities for the future. This will ultimatively result in improving the Solidity developer experience as a whole.\n\nThe survey consists of several chapters:\n\n- Demographics\n- Your Solidity Learning Journey\n- Your Developer Profile\n- The Solidity Developer Experience\n- Your Solidity Usage\n- Solidity Developer Community\n\nNone of the questions are mandatory, if you don't feel like responding to one or more chapters you can skip them. However, please note that of course the more information you share with us the better we will be able to understand your needs and work on further improving Solidity according to your needs.\n\n## Support us by spreading the word 🗣️\n\nLast but not least, please support us by spreading the word about the survey! Share it on Twitter, your preferred developer forum, in dev chats or with your coworkers and developer friends.\n\nThanks a bunch! We will be back with the results in the beginning of next year!\n\n✨📋 [Click here to start the survey now!](https://docs.google.com/forms/d/e/1FAIpQLSdcTPsWxuXmyG74t_zUI4pYQk1Y7mFcz03Owg4wJqrvRh7SsA/viewform?usp=sf_link) 📋✨\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/12/16/solidity-0.7.6-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/12/16/solidity-0.7.6-release-announcement.json deleted file mode 100644 index b27a838a..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/12/16/solidity-0.7.6-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.6 Release Announcement","date":"2020-12-16","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.7.6](https://github.com/ethereum/solidity/releases/tag/v0.7.6) adds better support for calldata types. Furthermore, the fallback function can now have a parameter and explicitly return data.\n\n## Notable New Features\n\n### Detection of Overflowing Unicode Direction Markers\n\nThe winning entry in the\n[Solidity Underhanded Contest](https://blog.soliditylang.org/2020/12/03/solidity-underhanded-contest-winners/)\nused a clever combination of Unicode direction markers to deceive the reader about\nthe semantics of a time-locked upgrade mechanism. Starting from Solidity 0.7.6, the parser will reject\ncomments and Unicode strings where the text direction is not properly reset before the end of the\ncomment or string.\n\n### Better Support for Calldata Types\n\nSince Solidity 0.6.9 you can use `calldata` as a data location specifier for variables other than\nparameters of external functions. This release finally adds important missing internal routines that\nmake this feature even more useful:\n\n- copying dynamically encoded structs and nested arrays from calldata to memory\n- copying array slices from calldata to memory and storage\n\nThe first part for example allows calling external functions or internal functions that require complex memory types:\n\n```solidity\n// SPDX-License-Identifier: MIT\npragma solidity ^0.7.6;\npragma abicoder v2;\n\nstruct Job {\n uint priority;\n string name;\n bool executed;\n}\n\ncontract Scheduler {\n function schedule(Job[] calldata _jobs) public {\n for (uint i = 0; i < _jobs.length; i++)\n // This internal function call performs\n // a copy from calldata to memory.\n // The copy in memory will be writable.\n executeJob(_jobs[i]);\n }\n function executeJob(Job memory _job) internal {\n _job.executed = true;\n }\n}\n```\n\nThe second part allows better access to calldata arrays, even though the implementation for\nmore complex slice types is not finished yet:\n\n```solidity\nfunction msgDataArguments() pure returns (bytes memory) {\n // This creates a calldata slice starting at the\n // fourth byte and converts it to a memory byte array\n // when returning it.\n return msg.data[4:];\n}\n```\n\n### Parameters and Return Variables for the Fallback Function\n\nThe fallback function can now have a single parameter and a return variable to operate on the low-level data without using inline assembly.\nThe input paramater is essentially an alias for `msg.data` while the return variable\nwill be returned as a raw byte array without abi encoding.\n\n```solidity\n// SPDX-License-Identifier: MIT\npragma solidity ^0.7.6;\npragma abicoder v2;\n\ncontract Proxy {\n address target;\n fallback(bytes calldata _input) external returns (bytes memory) {\n (bool success, bytes memory result) = target.delegatecall(_input);\n if (success)\n // A byte array returned from the fallback function will\n // not be ABI-encoded. If you want to return structured\n // data, you can use ``return abi.encode(x, y)``;\n return result;\n else\n revert(result);\n }\n}\n```\n\n### Dynamically Load Z3 if Available\n\nThe \"static\" Linux binary is now linked dynamically with `glibc >=2.14` (released 2011)\nwhich allows it to load `libz3.so.4.8` if it is available in your system or simply disable SMTChecker if it is not.\nUntil this release the Linux binary was completely static and came with the SMTChecker features permanently disabled.\n\n## Full Changelog\n\n### Language Features:\n\n- Code generator: Support conversion from calldata slices to memory and storage arrays.\n- Code generator: Support copying dynamically encoded structs from calldata to memory.\n- Code generator: Support copying of nested arrays from calldata to memory.\n- Scanner: Generate a parser error when comments or unicode strings contain an unbalanced or underflowing set of unicode direction override markers (LRO, RLO, LRE, RLE, PDF).\n- The fallback function can now also have a single `calldata` argument (equaling `msg.data`) and return `bytes memory` (which will not be ABI-encoded but returned as-is).\n- Wasm backend: Add `i32.select` and `i64.select` instructions.\n\n### Compiler Features:\n\n- Build System: Optionally support dynamic loading of Z3 and use that mechanism for Linux release builds.\n- Code Generator: Avoid memory allocation for default value if it is not used.\n- SMTChecker: Apply constant evaluation on binary arithmetic expressions.\n- SMTChecker: Create underflow and overflow verification targets for increment/decrement in the CHC engine.\n- SMTChecker: Report struct values in counterexamples from CHC engine.\n- SMTChecker: Support early returns in the CHC engine.\n- SMTChecker: Support getters.\n- SMTChecker: Support named arguments in function calls.\n- SMTChecker: Support struct constructor.\n- Standard-Json: Move the recently introduced `modelCheckerSettings` key to `settings.modelChecker`.\n- Standard-Json: Properly filter the requested output artifacts.\n\n### Bugfixes:\n\n- Code generator: Do not pad empty string literals with a single 32-byte zero field in the ABI coder v1.\n- NatSpec: Fix segfault when inheriting return parameter documentation for modifiers with no parameters.\n- SMTChecker: Fix cast string literals to byte arrays.\n- SMTChecker: Fix internal compiler error when doing bitwise compound assignment with string literals.\n- SMTChecker: Fix internal error when trying to generate counterexamples with old z3.\n- SMTChecker: Fix segmentation fault that could occur on certain SMT-enabled sources when no SMT solver was available.\n- SMTChecker: Fix internal error when `bytes.push()` is used as the LHS of an assignment.\n- Type Checker: `super` is not available in libraries.\n- Type Checker: Disallow leading zeroes in sized-types (e.g. `bytes000032`), but allow them to be treated as identifiers.\n- Yul Optimizer: Fix a bug in NameSimplifier where a new name created by NameSimplifier could also be created by NameDispenser.\n- Yul Optimizer: Removed NameSimplifier from optimization steps available to users.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.7.6).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/12/16/solidity-v0.8.0-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/12/16/solidity-v0.8.0-release-announcement.json deleted file mode 100644 index 6effe697..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2020/12/16/solidity-v0.8.0-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.0 Release Announcement","date":"2020-12-16","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity 0.8.0](https://github.com/ethereum/solidity/releases/tag/v0.8.0) is a breaking release of the Solidity compiler and language.\n\nSome of the new features of this release have been elaborated in the [0.8.x preview release post](https://blog.soliditylang.org/2020/10/28/solidity-0.8.x-preview/). Please consider the preview release binary superseded and do not use it anymore.\n\n## Notable New Features and Changes\n\nAs per ususal, this breaking release does not include many features but rather changes that require a\nbackwards-incompatible adjustment in syntax or semantics. For a detailed explanation,\nplease see the [documentation](https://docs.soliditylang.org/en/latest/080-breaking-changes.html).\n\nThe change that will affect most users is that arithmetic operations are now checked by default,\nwhich means that overflow and underflow will cause a revert. This feature can be disabled locally by using an `unchecked` block.\n\nThe second change that is very visible is that the ABI coder v2 is activated by default. You can\nactivate the old coder using `pragma abicoder v1`, or explicitly select v2\nusing `pragma abicoder v2` - which has the same effect as `pragma experimental ABIEncoderV2` had.\nABI coder v2 is more complex than v1 but also performs additional checks on the input and supports\na larger set of types than v1.\n\nFurthermore, internal errors like division by zero, assertion failure and others\ndo not use the invalid opcode anymore, but use `revert` with a special error message,\nin order to not waste gas in such situations.\n\nAnother important change is that we restricted the possibilities of explicit conversions\nto avoid ambiguities. All conversions that were possible before are still possible, but\nyou might have to perform two conversions to get there - which does not affect the generated code, though.\n\nThese are only some of the important breaking changes in 0.8.0, please refer to the changelog below for the full list!\n\n### Checked Arithmetic\n\nThe \"Checked Arithmetic\" feature of Solidity 0.8.x consists of three sub-features:\n\n- Revert on assertion failures and similar conditions instead of using the invalid opcode.\n- Checked arithmetic, i.e., revert on overflows, underflows etc.\n- `unchecked` blocks.\n\n#### Revert on assertion failures and similar conditions instead of using the invalid opcode\n\nPreviously, internal errors like division by zero, failing assertions, array access out of bounds,\netc., would result in an invalid opcode being executed. The idea was to distinguish\nthese more critical errors from non-critical errors that lie outside of the domain\nof the Smart Contract programmer like invalid input, not enough balance for a token transfer,\nand so on. These non-critical errors use the `revert` opcode and optionally add an error description.\n\nThe problem with the invalid opcode is that, in contrast to the `revert` opcode, it consumes all gas available.\nThis makes it very expensive and you should try to avoid it at all cost.\n\nWe wanted to consider arithmetic overflow as a critical error, but did not want to cause it to consume all gas.\nAs a middle ground, we chose to use the `revert` opcode, but provide different error data\nso that static (and dynamic) analysis tools can easily distinguish them.\n\nMore specifically:\n\n- Non-critical errors will revert either with empty error data or with error data that\n corresponds to the ABI-encoding of a function call to a function with the signature `Error(string)`.\n- Critical errors revert with error data that corresponds to the ABI-encoding of a function call\n to a function with the signature `Panic(uint256)`.\n\nBecause of that, we also use the term \"panic\" for such critical errors.\n\nTo distinguish the two situations, you can take a look at the first four bytes of the return data in case\nof a failure. If it is `0x4e487b71`, then it is a panic, if it is `0x08c379a0`\nor if the message is empty, it is a \"regular\" error.\n\nPanics use specific error codes to distinguish certain situations in which the panic is triggered.\nThis is the current list of error codes:\n\n1. 0x01: If you call `assert` with an argument that evaluates to false.\n2. 0x11: If an arithmetic operation results in underflow or overflow outside of an `unchecked { ... }` block.\n3. 0x12: If you divide or divide modulo by zero (e.g. `5 / 0` or `23 % 0`).\n4. 0x21: If you convert a value that is too big or negative into an enum type.\n5. 0x22: If you access a storage byte array that is incorrectly encoded.\n6. 0x31: If you call `.pop()` on an empty array.\n7. 0x32: If you access an array, `bytesN` or an array slice at an out-of-bounds or negative index (i.e. `x[i]` where `i >= x.length` or `i < 0`).\n8. 0x41: If you allocate too much memory or create an array that is too large.\n9. 0x51: If you call a zero-initialized variable of internal function type.\n\nThis list of codes can be extended in the future.\n\nNote that you currently cannot use `try ... catch Panic(uint _code) { ... }` to catch a panic,\nbut this is planned for the near future.\n\n#### Checked arithmetic, i.e., revert on overflows, underflows etc.\n\nBy default, all arithmetic operations will perform overflow and underflow checks\n(Solidity already had division by zero checks). In case of an underflow or\noverflow, a `Panic(0x11)` error will be thrown and the call will revert.\n\nThe following code, for example, will trigger such an error:\n\n```solidity\ncontract C {\n function f() public pure {\n uint x = 0;\n x--;\n }\n}\n```\n\nThe checks are based on the actual type of the variable, so even if the result would fit\nan EVM word of 256 bits, if your type is `uint8` and if the result is larger than `255`,\nit will trigger a `Panic`.\n\nWe did not introduce checks for explicit type conversions from larger to smaller\ntypes, because we think that such checks might be unexpected. We would love to get\nyour input on that matter!\n\nThe following operations (including their compound assignment versions like `+=`) now have checks that they did not have before:\n\n- addition (`+`), subtraction (`-`), multiplication (`*`)\n- increment and decrement (`++` / `--`)\n- unary negation (`-`)\n- exponentiation (`**`)\n- division (see below) (`/`)\n\nThere are some edge cases you might not expect.\nFor example, unary negation can trigger a panic on signed types.\nThe problem is that in two's complement representation, there is one more negative number for each bit width\nthan there are positive numbers. This means that the following code will trigger a panic:\n\n```solidity\nfunction f() pure {\n int8 x = -128;\n -x;\n}\n```\n\nThe reason is that `128` does not fit an 8-bit signed integer.\n\nFor the same reason, signed division can result in a panic:\n\n```solidity\nfunction f() pure {\n int8 x = -128;\n x/(-1);\n}\n```\n\nEveryone who wanted to write a `SafeMath` function for exponentiation probably noticed\nthat it is rather expensive to do that because the EVM does not provide overflow signalling.\nEssentially you have to implement your own `exp` routine without using the `exp` opcode\nfor the general case.\n\nWe hope that we found a rather efficient implementation and would also appreciate your feedback about that!\n\nFor many special cases, we actually implemented it using the `exp` opcode instead of our own implementation.\nMore specifically, exponentiation operations that use a literal number as base will use the `exp` opcode directly.\nThere are also specialized code paths for bases that are variables with small value. For bases up to 306,\nif the exponent is smaller than a hard-coded safe upper bound, it will use the `exp` opcode directly.\nIf the base or the exponent is too large, it might fall back to the loop-based implementation.\n\n#### `unchecked` Blocks\n\nSince checked arithmetic uses more gas, as discussed in the previous section, and\nbecause there are times when you really want the wrapping behaviour, for example when\nimplementing cryptographic routines, we provide a way to disable the checked arithmetic and\nre-enable the previous \"wrapping\" or \"modulo\" arithmetic:\n\nAll operations inside a block of the form `unchecked { ... }` use wrapping arithmetic. You can use\nthis special block as a regular statement inside another block:\n\n```solidity\ncontract C {\n function f() public pure returns (uint) {\n uint x = 0;\n unchecked { x--; }\n return x;\n }\n}\n```\n\nAn unchecked block can contain any number or any kind of statement\nand will create its own variable scope.\nIf there is a function call inside the unchecked block, the function will\nnot inherit the setting - you have to use another `unchecked` block inside the function\nif you also want it to use wrapping arithmetic.\n\nWe decided for some restrictions for the `unchecked` block:\n\n1. In modifiers you cannot use `_;` inside an `unchecked` block, because this might lead to confusion about whether the property is inherited.\n\n2. You can only use it inside a block but not as a replacement for a block. The following code snippets, for example, are both invalid:\n\n ```solidity\n function f() unchecked { uint x = 7; }\n ```\n\n ```solidity\n function f() pure {\n uint x;\n for (uint i = 0; i < 100; i++) unchecked { x += i; }\n }\n ```\n\n You have to wrap the unchecked blocks in another block to make it work.\n\n### Explicit Conversions\n\nExplicit conversions are only possible when there\nis at most one change in sign, width, payability or type-category (`int`, `address`, `bytesNN`, etc.).\n\nFor example, converting `int8` to `uint16` is only possible, if you go through `uint8` or `int16`.\nSince the choice of the intermediate conversion will have an effect on the result\nwe wanted to make it explicit:\n\n- `uint16(int16(int8(-1)))` results in `0xffff`, while\n- `uint16(uint8(int8(-1)))` is `0xff`.\n\nThere are more such changes in relation to payable addresses, literals, enums and contracts. For the full list\nof changes, please see the [documentation](https://docs.soliditylang.org/en/latest/080-breaking-changes.html).\n\n## General Remarks\n\nSince we usually do not backport bugfixes, it is recommended to upgrade all code to be compatible with Solidity v0.8.0.\n\nYou can find a guide on how to update your code [here](https://docs.soliditylang.org/en/latest/080-breaking-changes.html#how-to-update-your-code).\n\nNote that changes listed below are the **changes between 0.7.6 and 0.8.0**. For changes introduced\nduring the 0.7.x series, please see the individual changelogs or release announcements on this blog.\n\n## Full Changelog\n\n### Breaking Changes:\n\n- Code Generator: All arithmetic is checked by default. These checks can be disabled using `unchecked { ... }`.\n- Code Generator: Cause a panic if a byte array in storage is accessed whose length is encoded incorrectly.\n- Code Generator: Use `revert` with error signature `Panic(uint256)` and error codes instead of invalid opcode on failing assertions.\n- Command Line Interface: JSON fields `abi`, `devdoc`, `userdoc` and `storage-layout` are now sub-objects rather than strings.\n- Command Line Interface: Remove the `--old-reporter` option.\n- Command Line Interface: Remove the legacy `--ast-json` option. Only the `--ast-compact-json` option is supported now.\n- General: Enable ABI coder v2 by default.\n- General: Remove global functions `log0`, `log1`, `log2`, `log3` and `log4`.\n- Parser: Exponentiation is right associative. `a**b**c` is parsed as `a**(b**c)`.\n- Scanner: Remove support for the `\\b`, `\\f`, and `\\v` escape sequences.\n- Standard JSON: Remove the `legacyAST` option.\n- Type Checker: Function call options can only be given once.\n- Type System: Declarations with the name `this`, `super` and `_` are disallowed, with the exception of public functions and events.\n- Type System: Disallow `msg.data` in `receive()` function.\n- Type System: Disallow `type(super)`.\n- Type System: Disallow enums with more than 256 members.\n- Type System: Disallow explicit conversions from negative literals and literals larger than `type(uint160).max` to `address` type.\n- Type System: Disallow the `byte` type. It was an alias to `bytes1`.\n- Type System: Explicit conversion to `address` type always returns a non-payable `address` type. In particular, `address(u)`, `address(b)`, `address(c)` and `address(this)` have the type `address` instead of `address payable` (Here `u`, `b`, and `c` are arbitrary variables of type `uint160`, `bytes20` and contract type respectively.)\n- Type System: Explicit conversions between two types are disallowed if it changes more than one of sign, width or kind at the same time.\n- Type System: Explicit conversions from literals to enums are only allowed if the value fits in the enum.\n- Type System: Explicit conversions from literals to integer type is as strict as implicit conversions.\n- Type System: Introduce `address(...).code` to retrieve the code as `bytes memory`. The size can be obtained via `address(...).code.length`, but it will currently always include copying the code.\n- Type System: Introduce `block.chainid` for retrieving the current chain id.\n- Type System: Support `address(...).codehash` to retrieve the codehash of an account.\n- Type System: The global variables `tx.origin` and `msg.sender` have type `address` instead of `address payable`.\n- Type System: Unary negation can only be used on signed integers, not on unsigned integers.\n- View Pure Checker: Mark `chainid` as view.\n- Yul: Disallow the use of reserved identifiers, such as EVM instructions, even if they are not available in the given dialect / EVM version.\n- Yul: The `assignimmutable` builtin in the \"EVM with objects\" dialect takes the base offset of the code to modify as an additional argument.\n\n### Language Features:\n\n- Super constructors can now be called using the member notation e.g. `M.C(123)`.\n\n### Bugfixes:\n\n- Type Checker: Perform proper truncating integer arithmetic when using constants in array length expressions.\n\n### AST Changes:\n\n- New AST Node `IdentifierPath` replacing in many places the `UserDefinedTypeName`.\n- New AST Node `UncheckedBlock` used for `unchecked { ... }`.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.0).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/01/26/solidity-developer-survey-2020-results.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/01/26/solidity-developer-survey-2020-results.json deleted file mode 100644 index 18d69fd5..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/01/26/solidity-developer-survey-2020-results.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2020 Results","date":"2021-01-26","author":"Franziska Heintel","category":"Announcements"},"content":"\nBefore we dive into the results we want to extend a big thank you to all of the Solidity developers that participated in the very first Solidity Developer Survey, which we [conducted at the end of last year](https://blog.soliditylang.org/2020/12/09/solidity-developer-survey-2020/)!\n\nWe were overwhelmed by the high quality of the submissions and are happy to extract important insights from your input.\n\nIn this post, we'll be summarizing and commenting on the results of the survey.\n\nPlease note that none of the questions in the survey were mandatory. Hence, the amount of replies may vary per question.\n\n### Summary & Notable Insights\n\n- **Survey Audience**: 193 developers from all over the world replied to this survey, calling 48 different countries their current home. With roughly 20%, the big majority of respondents live in the United States of America, followed by India (8%) and Germany (7%). The majority of respondents speaks English at work.\n- **Developer Profiles**: Roughly 65% of respondents have been using Solidity for more than a year, with 43% being \"Solidity pros\" with 2 or more years of experience with the language. Looking at the overall coding seniority of the respondents it appears that a significant number of Solidity users are experienced in other programming languages, as opposed to learning to program for the first time using Solidity.\n- **Solidity Experience**: 43% of respondents rate themselves as Solidity experts with an expertise level of 8 (out of 10) or higher.\n- **Solidity Developer Experience**: While noting many things that could still improve, there was an overall positive/good sentiment towards Solidity. Most respondents believed that the Solidity developer experience had some or much improvement over the last year.\n- **Solidity's Challenges**: The biggest challenge in developer experience for most respondents is the availability and quality of tooling. Also seen as critical aspects in order to foster adoption are error handling, IDE integrations and better documentation.\n- **Most Liked, Dreaded and Anticipated**: Topics with room for improvement that came up a lot: Error handling, debugging, the need for more tools and libraries, and breaking dependencies.\n- **Contributing and Language Design**: There was surprisingly little interest and engagement in language design topics, partly because developers didn't know how to get involved, or because they were not interested. (We will work on this! Efforts to foster collaborative language design are under way, we'll share more soon.)\n- **Community**: Almost 17% of participants in this survey do not interact with other Solidity developers at all!\n\n### (1) Survey Audience and Developer Profiles\n\nFirst, let's have a look at the developers that participated in the survey. In total, we received **193 responses from 48 different countries**.\n\n![Survey Participants World Map](/img/2021/01/World.png)\n\n#### Residency\n\n⚠️ _Note that the fact that this survey has only been shared in English is an important factor to consider when interpreting results regarding language and country of residency._\n\nThe respondents stated to live in Algeria, Argentina, Australia, Austria, Belgium, Brazil, Bulgaria, Canada, China, Costa Rica, Denmark, Finland, France, Germany, Ghana, Greece, Honduras, Hong Kong, India, Indonesia, Iran, Ireland, Israel, Italy, Japan, Lithuania, Malaysia, Mexico, Netherlands, New Zealand, Nigeria, Pakistan, Philippines, Poland, Portugal, Romania, Russia, Serbia, Singapore, South Africa, Spain, Switzerland, Taiwan, Thailand, Timor-Leste, Ukraine, United Kingdom and United States of America.\n\nWith roughly 20%, the big majority of respondents live in the United States of America, followed by India (8%) and Germany (7%).\n\n![Survey Participants List of Countries](/img/2021/01/Residency.png)\n\n#### Language\n\nThe developers speak a wide variety of different languages as their primary language, with English being by far the most popular one. German, Spanish, Russian and French follow with similar levels.\n\n![Primary Language](/img/2021/01/LangPrimary.png)\n\nWith 86%, the vast majority of respondents speak English at work.\n\nAlmost 90% of respondents are okay with reading the Solidity documentation in English while roughly 10% would prefer it to be translated into their native language. Some of the respondents who chose \"native language\" stated English as their primary spoken language though, which results in 95% of participants preferring English for the documentation.\n\nBear in mind that this survey has only been conducted in English, which heavily influences the outcome of this question. This result will hence not have too much influence on the revamped translation efforts for the Solidity documentation and we will further investigate this topic.\n\n![Language at Work](/img/2021/01/LangSpeak.png)\n\n![Documentation Language](/img/2021/01/DocumentationLang.png)\n\n#### Employment\n\n82% of all respondents stated that they are currently employed. 4% identified as students, while 14% stated to not work at the moment.\n\n![Employment Status](/img/2021/01/Employment.png)\n\n#### Industry\n\nThe majority of respondents (68%) said they work in the technology industry. 14% work in the financial services industry. Less dominant, but also selected several times, were the energy sector, health care, creative, media & gaming and transportation.\n\n![Industry Overview](/img/2021/01/Industry.png)\n\n#### Coding Experience\n\nThe overall, non-Solidity-related, professional coding experience of respondents was impressive. Around 48% of respondents said they coded as part of their jobs for 6 years or more. Only roughly 7% stated that they have less than 1 year of coding experience.\n\n![Professional Coding Experience](/img/2021/01/CodingExperience.png)\n\n#### Operating System\n\nInterestingly, Linux and macOS seem equally popular, both getting roughly 40% of the repondents' votes. Around 18% use Windows, although a part of these users also state to use another OS in addition to Windows. There are also several developers using both Linux and macOS, or even all three operating systems.\n\n![Operating System](/img/2021/01/OperatingSystem.png)\n\n#### Solidity Usage\n\nAlmost all of the respondents use Solidity for personal projects outside of work (93%). More than half of the respondents (68%) also say they use Solidity at work and/or code in another programming language at work.\n\n27% of respondents stated to be managing a programming team while 8% are students.\n\n![Solidity Usage](/img/2021/01/SolidityUse.png)\n\n#### Open-Source Code\n\nStrikingly, the majority of respondents (61%) only infrequently or even never contribute to open-source projects written in Solidity. 21% claim to do it as part of their daily routine.\n\n![Open-Source Coding](/img/2021/01/OpenSource.png)\n\n#### Coding Preferences\n\nWe've asked the participants what is most important to them when choosing a programming language. The question had a free text reply field, hence we clustered the responses into overarching categories.\n\nThe most important aspect, stated by many respondents, was the fact that the programming language has to fit the task, and it has to \"get the job done\".\n\nAlso ranked very highly were tooling, documentation and community, followed by security of the language, libraries, availability of good resources and learning material as well as a clear or familiar syntax.\n\nLess frequently mentioned, but still relevant, were descriptive error messages / good debugging, readability, performance and strong types.\n\nOther aspects that were brought up several times were usability, productivity/efficiency, convenience, expressiveness, maintenance & support, simplicity, good developer experience and robustness (at scale).\n\n![Coding Preferences](/img/2021/01/ChooseProgrammingLang.png)\n\n#### Favorite Programming Language\n\nWhen asked what their favorite programming language was, most respondents said JavaScript (40), followed by Python (33) and Solidity (30). Other popular programming languages were TypeScript (19), Go (15) and Rust (14).\n\n![Favorite Programming Language](/img/2021/01/FavProgrammingLang.png)\n\n#### Most Used Programming Language\n\nThe majority of respondents use JavaScript (36%) the most, followed by Solidity (21%) and TypeScript (11.5%). Also mentioned several times: Python (9%), Go (5%), C++ (3%) and Java (3%).\n\n![Most Used Programming Language](/img/2021/01/ProgrammingLanguageUsed.png)\n\n### (2) Solidity Learning Journeys\n\nAs the next step, we wanted to learn more about the individual learning journey of each respondent. While most respondents managed to feel productive in less than half a year, a quite big share (17%) does not feel productive at this point yet.\n\n![Productivity Learning](/img/2021/01/Productivity.png)\n\n#### Learning\n\nThe [Solidity documentation](https://docs.soliditylang.org/en/latest/) is the most prominent learning material and primary resource for most respondents to learn Solidity.\n\nThe practices of reading the open-source Solidity code of big projects as well as watching coding tutorial videos were frequently mentioned.\n\nAnother prominent way to get started learning Solidity is the [CryptoZombies](https://cryptozombies.io/) coding game.\n\nMany respondents used the [Ethereum StackExchange](https://ethereum.stackexchange.com/) to find answers to their questions.\n\nMassive open online courses (MOOCs) like Udacity, Udemy and university courses were mentioned by several respondents followed by active coding approaches like \"learning by coding\" using [Remix](https://remix.ethereum.org/) and the [OpenZeppelin contracts](https://openzeppelin.com/contracts/) as well as by going through the [ConsenSys Academy](https://consensys.net/academy).\n\n![Primary Learning Resources](/img/2021/01/PrimaryResource.png)\n\n#### Problem Solving\n\nWhen getting stuck on a Solidity problem, most Solidity developers visit Ethereum StackExchange for help.\n\nOther popular solutions are asking friends or coworkers for help, watching tutorial videos or doing other work and trying to solve the problem later.\n\n![Problem Solving](/img/2021/01/SolidityProblem.png)\n\nWhen asked if developers encounter similar issues repeatedly, most responded with \"no\" or explained that with experience and usage, once they knew how to solve the problem they did not encounter the same issues repeatedly.\n\nThe following issues have been mentioned to still pop up regularly or to be annoying:\n\n- Stack too deep errors.\n- Error messages that don't point to the cause of the issue.\n- Out of gas errors.\n- Compilation errors.\n- Tooling problems.\n- Verification difficulties.\n- Breaking changes and broken dependencies.\n\n### (3) Understanding the Solidity Developer Experience\n\n#### Solidity Usage\n\nRoughly 65% of respondents have been using Solidity for more than a year, with 43% being real Solidity pros with more than 2 years of experience with the language.\n\nIt's interesting to see that a fair share of 35% is just getting started with Solidity and has only been using it for under 12 months.\n\nLooking at the overall coding seniority of the respondents, this data shows us that a majority of Solidity developers are developers with experience in other programming languages, rather than someone learning to program for the first time in Solidity.\n\n![Solidity Usage](/img/2021/01/UsingSol.png)\n\n43% of respondents rate themselves Solidity experts with an expertise level of 8 (out of 10) or higher. Only 10% rank themselves at the beginner stages with an expertise level of 3 or lower.\n\n![Expertise](/img/2021/01/SolExpertise.png)\n\nThe majority of respondents use Solidity on a weekly (31%) or even daily basis (41%). Almost 18% use it monthly, while the remaining 9% stated that they rarely code in Solidity.\n\n![Frequency of Usage](/img/2021/01/HowOftenSol.png)\n\nMost respondents are currently using 0.6.x or 0.7.x versions of Solidity. A smaller share still uses 0.5.x versions or has been trying out the recently released 0.8.0 already.\n\nA few people are not aware of the version they are using or are still using very old versions from the 0.4.x series.\n\n🚨 Please make sure to frequently update your code since [several important bug fixes](https://github.com/ethereum/solidity/blob/develop/docs/bugs_by_version.json#L922) and security improvements have been added since 0.4.x!\n\n![Versions Used](/img/2021/01/SolidityVersion.png)\n\n#### IDEs / Tooling\n\n50% of respondents stated they are using VSCode as a preferred editor to write Solidity. The second favorite editor was Vim (12.6%), followed by Remix (9.2%), IntelliJ (8.8%) and Atom (7.1%).\n\n![IDEs / Tooling](/img/2021/01/IDE.png)\n\nWhen asked if they are using an Ethereum-specific development environment, 5% say that they are not using one. [Truffle](https://www.trufflesuite.com/truffle) is the most prominent with almost 60%, closely followed by [Remix](https://remix.ethereum.org/) (50.3%) and [Hardhat](https://hardhat.org/) (38.6%).\n\n![Ethereum-specific IDEs / Tooling](/img/2021/01/EthIDE.png)\n\n#### Overall Solidity Developer Experience\n\nAround 62% believe that the Solidity developer experience had some or even a lot of improvement in the last year. 15% saw a slight improvement while only 9% thought that there was no change or that the Solidity developer experience got worse.\n\n![Overall Developer Experience](/img/2021/01/DevExperience.png)\n\nThe biggest challenge in developer experience for most respondents is the availability and quality of tooling.\n\nOther aspects seen as critical in fostering language adoption are: Error handling, IDE integrations and better documentation.\n\nLess often voted for but still relevant are the increasing complexity of the language, availability of generics, improvements in compilation time and debugging as well as improvements in gas cost, storage handling and security.\n\n![Solidity's Challenges](/img/2021/01/Challenges.png)\n\n#### Importance Ranking of Future Features\n\nWe've asked the participants of the survey to rank selected features under discussion according to their importance.\n\nGas optimizations were ranked as most important, followed by interfaces to external debugging tools. The SMTChecker, generics and fixed point types were ranked similarly important.\n\nExplicitly copying semantics, enums with data, functions at file level and WebAssembly output were evaluated as less critical by the participants.\n\n![Future Features Ranking](/img/2021/01/FutureFeatures.png)\n\n### (4) Most Liked, Dreaded and Anticipated Features\n\nWe've asked survey participants what they like and dislike most about Solidity and what they would like to see the most in upcoming Solidity versions. Those questions had free-form reply fields so we've summarized the replies and are listing the most mentioned features and aspects below.\n\n#### Most Liked Features\n\nSimplicity and cleanliness has been the number one aspect that the participants value about Solidity.\n\nFurthermore, the developers appreciated the improvements in available tooling, especially highlighting Remix and Hardhat several times.\n\nAnother aspect the respondents appreciate is that Solidity is \"easy to learn\" and \"simple to code\".\n\nSeveral people stated that Solidity is the right tool for what they are working on and that they like the focus on smart contracts and Solidity being a \"special purpose tool\" for it.\n\nOther features and aspects that have been mentioned repeatedly as cherished and appreciated are:\n\n- Mappings.\n- Human-readability.\n- Structs.\n- Modifiers.\n- Strong-typing.\n- JS-likeness.\n- Assembly access.\n- SafeMath by default.\n- Good library support.\n- C++-likeness.\n- SMTChecker.\n- Composability.\n- Immutability.\n- ABI Encoder V2.\n- Explicitness.\n- Inheritance.\n- Compact code size.\n- Syntax.\n- Steady improvement of the language.\n\n#### Most Dreaded or Disliked Features\n\nThe currently most dreaded aspect of Solidity is clearly debugging, followed by a lack of Solidity libraries.\n\nRespondents also complain about inheritance conflicts and the need to write more specific code in assembly / low-level code.\n\nOther aspects and features that have been mentioned repeatedly as dreaded or disliked are:\n\n- Error handling.\n- Memory management.\n- Frequency of breaking changes and dependencies breaking.\n- Contract & stack size limits.\n- Inconsistency with other languages.\n- ABI encoding.\n- Unclear gas usage / gas inefficiency.\n- Tooling.\n- Complexity.\n- Recompiles failing due to metadata.\n- Verbosity.\n- Dynamic array handling.\n- Testing.\n\n#### Most Anticipated Features\n\nThe most anticipated feature by far was \"no more SafeMath\". SafeMath by default has been [introduced with 0.8.0](https://blog.soliditylang.org/2020/12/16/solidity-v0.8.0-release-announcement/) and hence is not an issue anymore. 🥳\n\nThe second most anticipated feature was better debugging and more debugging tools.\n\nAlso ranked high was better documentation, especially with a focus on more tutorials and code examples.\n\nOther anticipated and frequently mentioned features were:\n\n- Gas efficiency optimization features.\n- Generics.\n- console.log().\n- Dynamic arrays.\n- Better tooling.\n- Better IDEs.\n- LSP support.\n- Rich revert reasons / error codes.\n- Standard library.\n- Custom optimization features.\n- Release v1.0.0.\n- SMTChecker.\n- Stable ABIEncoderV2.\n- No more stack too deep.\n- Decimals / fixed point types.\n- WASM.\n\n### (5) Community\n\nMore than 55% of respondents interact with other Solidity developers on a regular basis, while 27% claim to do so only rarely. Almost 17% do not interact with other Solidity developers at all.\n\n![Developer Interaction](/img/2021/01/DevInteraction.png)\n\nThe majority of respondents feels welcome in the Solidity community and is confident in the work of the Solidity core team.\n\n71% agree or somewhat agree to feeling welcome to contributing to Solidity.\n\nOnly 22% fully agree that the Solidity team understands their needs. 14% state that they do not agree and don't feel understood by the Solidity team with regards to their needs.\n\nThe process of how to contribute to Solidity is clear or somewhat clear to 41% of respondents while 32% do not agree and hence say that the contribution process is unclear to them.\n\n⚠️ _Note that there was a comparatively high share of \"I don't know\" replies to the last three statements._\n\n![Community Statements](/img/2021/01/CommunityStatements.png)\n\n#### Language Design\n\nAlmost 85% of respondents state that they have never participated in any Solidity language design related activity. Around two thirds of them say they didn't do so because they don't know how, while one third is simply not interested in it.\n\n7-8% said that they are part of the language design mailing list, have joined one or more language design discussion calls and/or have proposed features or changes to the language by filing GitHub issues.\n\n![Language Design](/img/2021/01/LangDesignParticipation.png)\n\n#### Staying Up-To-Date\n\n57% prefer Twitter to stay up-to-date about things. 21% like mailing lists, 14% prefer Reddit and 6% are in favor of forums.\n\n![Staying Up-To-Date](/img/2021/01/UpToDate.png)\n\nTo stay in the loop with Solidity updates like new releases, security alerts and announcements, most respondents said they follow [Solidity on Twitter](https://twitter.com/solidity_lang), follow the [Solidity GitHub release page](https://github.com/ethereum/solidity/releases) and/or the [Solidity blog](https://blog.soliditylang.org/). Also mentioned but less popular are the [r/ethdev Reddit](https://www.reddit.com/r/ethdev/), the [Solidity documentation](https://docs.soliditylang.org/en/latest/) and the [Week in Ethereum newsletter](https://weekinethereumnews.com/).\n\nSome of the participants claiming to not do any of the above explained that they mostly get informed by colleagues or friends or simply don't stay up-to-date at all.\n\n![Staying Up-To-Date 2](/img/2021/01/UpToDateSol.png)\n\n### THANK YOU! 💙\n\nAs a wrap up question we asked participants if there was anything else that they’d like to tell us. We did not expect that amount of good vibes and want to say thank you to each of you! Reading your uplifting and warm comments was pure joy.\n\nWe will continue our quest to further enhance and shape Solidity and are looking forward to the next survey to check in with you again!\n\nFeel free to reach out to us [via email](mailto:solidity@ethereum.org) or [chat with us](https://gitter.im/ethereum/solidity-dev) should you have any further questions about details of the survey results.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/01/27/solidity-0.8.1-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/01/27/solidity-0.8.1-release-announcement.json deleted file mode 100644 index 34f7eba4..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/01/27/solidity-0.8.1-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.1 Release Announcement","date":"2021-01-27","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.1](https://github.com/ethereum/solidity/releases/tag/v0.8.1) introduces\nmany new features for the SMTChecker (see below), updates the\nemscripten version for building soljson.js to 2.0.12,\nallows to catch panic errors and adds other small improvements.\n\n## Notable New Features\n\n### SMTChecker Counterexamples and Synthesis of External Functions\n\nThe SMTChecker already reports transaction traces as counterexamples to failing verification\ntargets, but 0.8.1 adds internal calls, `msg.value` and synthesized unknown code called\nexternally in the form of reentrant calls to counterexamples.\nA [recent blog post](https://fv.ethereum.org/2021/01/18/smtchecker-and-synthesis-of-external-functions/)\npresents that topic in more detail.\n\n### How to select SMTChecker targets\n\nPrior to 0.8.1, the SMTChecker would automatically create verification targets for all types.\nNow the user can choose which verification targets should be checked via the CLI option\n`--model-checker-targets`, or the standard JSON setting `modelCheckerSettings.targets`.\nThe valid target strings are `underflow`, `overflow`, `divByZero`, `constantCondition`,\n`balance`, `popEmptyArray` and `assert`. Multiple targets can be chosen simultaneously\nseparated by a comma, without spaces: `underflow,overflow,assert`.\nFor a detailed description of the verification targets, please see the [SMTChecker docs](https://docs.soliditylang.org/en/v0.8.0/security-considerations.html#formal-verification).\n\n### Catch Panic\n\nThe `Panic(uint)` revert error was introduced with 0.8.0, but there was not yet a way\nto catch and decode such an error in a `try/catch` statement. This has been added\nnow:\n\n try otherContract.f() { }\n catch Panic(uint _code) {\n if (_code == 0x01) { revert(\"Assertion failed\"); }\n else if (_code == 0x11) { revert (\"Underflow/overflow\"); }\n // We ignore the other errors.\n }\n\nIf you neither have a `catch Panic(uint)` clause nor a catch clause without error type in your `try/catch` statement,\nthe revert will \"bubble up\", i.e. the calling contract will revert.\n\nRegardless of whether or not you catch the error, the effects of the call will always be reverted.\n\nNote that you cannot know whether the error happened in the called contract (`otherContract`)\nitself or in a contract called from `otherContract`.\n\n### Code Length Shortcut\n\nFrom v0.8.0 on, the size of the code at address `a` could be accessed by\nusing `a.code.length`. However, this involved copying the code to memory,\neven if you did not use `a.code`.\nIn this release, a shortcut was implemented that directly returns the\nvalue of `extcodesize(
)` and avoids copying code to memory.\n\n## Full Changelog\n\n### Language Features:\n\n- Possibility to use `catch Panic(uint code)` to catch a panic failure from an external call.\n\n### Compiler Features:\n\n- Code Generator: Reduce the cost of `
.code.length` by using `extcodesize` directly.\n- Command Line Interface: Allow `=` as separator between library name and address in `--libraries` commandline option.\n- Command Line Interface: New option `--model-checker-targets` allows specifying which targets should be checked. The valid options are `all`, `constantCondition`, `underflow`, `overflow`, `divByZero`, `balance`, `assert`, `popEmptyArray`, where the default is `all`. Multiple targets can be chosen at the same time, separated by a comma without spaces: `underflow,overflow,assert`.\n- Command Line Interface: Only accept library addresses with a prefix of `0x` in `--libraries` commandline option.\n- Optimizer: Add rule to replace `iszero(sub(x,y))` by `eq(x,y)`.\n- Parser: Report meaningful error if parsing a version pragma failed.\n- SMTChecker: Output internal and trusted external function calls in a counterexample's transaction trace.\n- SMTChecker: Show `msg.value` in counterexample transaction traces when greater than 0.\n- SMTChecker: Show contract name in counterexample function call.\n- SMTChecker: Support ABI functions as uninterpreted functions.\n- SMTChecker: Support try/catch statements.\n- SMTChecker: Synthesize untrusted functions called externally.\n- SMTChecker: Use checked arithmetic by default and support `unchecked` blocks.\n- Standard JSON: New option `modelCheckerSettings.targets` allows specifying which targets should be checked. The valid options are `all`, `constantCondition`, `underflow`, `overflow`, `divByZero`, `balance`, `assert`, `popEmptyArray`, where the default is `all`. Multiple targets can be chosen at the same time, separated by a comma without spaces: `underflow,overflow,assert`.\n\n### Bugfixes:\n\n- Code Generator: Fix length check when decoding malformed error data in catch clause.\n- Control Flow Graph: Fix missing error caused by read from/write to uninitialized variables.\n- SMTChecker: Fix false negatives in overriding modifiers and functions.\n- SMTChecker: Fix false negatives in the presence of inline assembly.\n- SMTChecker: Fix false negatives when analyzing external function calls.\n- SMTChecker: Fix internal error on `block.chainid`.\n- SMTChecker: Fix internal error on pushing string literal to `bytes` array.\n- SMTChecker: Fix missing type constraints for block variables.\n- Type Checker: Fix infinite loop when accessing circular constants from inline assembly.\n- Type Checker: Fix internal error caused by constant structs containing mappings.\n- Type System: Disallow implicit conversion from `uintN` to `intM` when `M > N`, and by extension, explicit conversion between the same types is also disallowed.\n\n### Build System:\n\n- Update the soljson.js build to emscripten 2.0.12 and boost 1.75.0.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.1).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/02/01/launching-the-solidity-forum.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/02/01/launching-the-solidity-forum.json deleted file mode 100644 index 6b6afdf2..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/02/01/launching-the-solidity-forum.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Launching the Solidity Forum 🗃️","date":"2021-02-01","author":"Franziska Heintel","category":"Announcements"},"content":"\nIn our effort to foster exchange of information, encourage more developers to give feedback about Solidity and join the discussions on language design and future direction of the compiler, we are happy to launch the [Solidity forum](https://forum.soliditylang.org/) today!\n\nMoving forward the Solidity forum will be the dedicated place to discuss topics and questions related to…\n\n- The design of the Solidity programming language.\n- The Solidity compiler.\n- Useful Solidity tips and code snippets.\n- Solidity documentation and its translation.\n- Discussions and announcements about Solidity releases.\n\nIt will **not** be the place for…\n\n- Ad-hoc or specific support questions. For urgent Solidity support questions, please use the [Solidity Gitter chat](https://gitter.im/ethereum/solidity) or consider checking out the [Ethereum StackExchange](https://ethereum.stackexchange.com/).\n- Solidity bugs, vulnerabilities or issues. To report a bug, please use the [GitHub issues tracker](https://github.com/ethereum/solidity/issues) and refer to this guide on [how to report issues](https://docs.soliditylang.org/en/latest/contributing.html#how-to-report-issues).\n- Generic Ethereum discussion. For that visit [r/ethereum](https://www.reddit.com/r/ethereum).\n- Ethereum research specific discussion. For that, please refer to the [ethresear.ch](https://ethresear.ch/) forum.\n- EIP specific discussion. For that visit the [Ethereum Magicians](https://ethereum-magicians.org/) forum.\n\nThe Solidity forum is based on [Discourse](https://www.discourse.org/about), an open-source software for civilized discussions. :)\n\nIf you are new to Discourse consider having a look at this [“Unofficial Discourse User Reference Guide”](https://forum.digikey.com/t/an-unofficial-discourse-user-reference-guide/1125), which summarizes useful tips on how to use Discord, text formatting, images, LaTeX and more.\n\n### A Quick Guide to the Solidity Forum Categories 🔖\n\nWe are launching the forum with an initial selection of categories which can be adjusted and extended over time. To propose a new category, or the change of an existing one, please post your suggestions in the [“Site Feedback”](https://forum.soliditylang.org/c/site-feedback/2) category.\n\n#### → Announcements\n\n[”Announcements”](https://forum.soliditylang.org/c/announcements/5) is a low-traffic category for important announcements about the Solidity language and compiler.\n\n📮 Subscribe to this category if you want to be kept in the loop about releases, security updates and Solidity-relevant feedback surveys, news and events.\n\n#### → Language Design\n\n[“Language Design”](https://forum.soliditylang.org/c/language-design/9) is the dedicated place for proposals and discussion on new language features and their implementation in the early stages of ideation or modifications of existing features. This is the place to discuss the soundness of proposals and define them further. As soon as proposals get more tangible their implementation will also be discussed in the Solidity GitHub organisation in the form of GitHub issues.\n\nA vague \"I don't like how X is working\" might get a discussion started, but keep in mind that more specific the proposed solutions are, the more likely they are to be adopted into the language.\n\nExamples of topics that could fit the Language Design category:\n\n- \"Change the way inheritance works\"\n- \"Introduce a `switch` statement\"\n\nℹ️ You can follow the implementation status of new features in the [Solidity Github project](https://github.com/ethereum/solidity/projects/43). Issues in the design backlog need further specification and will either be discussed in a language design call or in a regular team call. You can see the upcoming changes for the next breaking release by changing from the default branch (develop) to the [breaking branch](https://github.com/ethereum/solidity/tree/breaking).\n\n#### → Tools & Infrastructure\n\n[“Tools & Infrastructure”](https://forum.soliditylang.org/c/tooling-infrastructure/10) is the category for discussion about developer tooling, e.g. IDEs, debuggers, development frameworks, security tools, and infrastructure with a focus on the interactions and improvements between tooling and Solidity.\n\nℹ️ This category is not meant for reporting bugs in tools or proposing new tooling features. To do that, please refer to the respective GitHub organisations of the individual projects.\n\n#### → Documentation\n\nDiscussions about the documentation and its translations can take place in the [“Documentation”](https://forum.soliditylang.org/c/documentation/8) category.\n\n⚠️ Again, please do not use the forum to report issues (e.g. typos or broken links in the documentation). Please report issues directly via the [Solidity Issue Tracker](https://github.com/ethereum/solidity/issues/new/choose) in Github.\n\n#### → Code Wizards\n\nIn [\"Code Wizards\"](https://forum.soliditylang.org/c/code-wizards/7) you can share useful tips or code snippets you came up with that are worth spreading. You can also discuss experimental Solidity implementations and get feedback on it.\n\nℹ️ The Solidity forum will not the place for ad-hoc support questions. For urgent Solidity support questions, please use the [Solidity Gitter chat](https://gitter.im/ethereum/solidity) or consider checking out the [Ethereum StackExchange](https://ethereum.stackexchange.com/). It's also not the place for audit requests, although it is the right place to ask for feedback on a specific mechanism or construct.\n\n### Important Solidity Announcements to Your Mailbox 📮\n\nTo stay up-to-date about things without the need to constantly check the forum, you can get notifications via email! To edit your email preferences and enable the mailing list feature, visit your Profile → Preferences and scroll to Email. In the email settings you can define how often you’d like to receive emails. You can mute all topics and categories you are not interested in.\n\n### See You There! 👋\n\nWithout further ado, let’s kick off some discussions in the [forum](https://forum.soliditylang.org/). We're looking forward to seeing you there!\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach.json deleted file mode 100644 index 5f600458..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"An Introduction to Solidity's Fuzz Testing Approach","date":"2021-02-10","author":"Bhargava Shastry","category":"Explainers"},"content":"\nSecurity vulnerabilities and bugs detract from software quality.\nTo discover them early, at best before they are released, we have adopted fuzz testing: feeding randomly generated programs to the Solidity compiler and observing the compilation runtime and code generated.\n\nSince Q1 2019, the Solidity compiler is fuzz tested via Google's [open-source software fuzz][1] (oss-fuzz) framework.\n\nIn this post, we briefly describe the work that has been done on this front, and work that is currently in progress.\n\n### Fuzzer Overview\n\nBroadly speaking, we have developed two classes of fuzzers:\n\n- Front-end fuzzers that test the compiler front-end (parser/analyser).\n- Back-end fuzzers that test the compiler back-end (optimiser).\n\n### Front-end Fuzzers\n\nWe have developed front-end fuzzers in order to test if programs are parsed and analysed correctly.\nFront-end fuzzing comprises mutating existing test cases (most often unit tests) in order to test how parsing and program analysis respond to corner case input.\n\nFuzzing is effective because the Solidity compiler makes heavy use of assertions both during the input program parsing/analysis phase as well as the code generation phase.\nInputs generated by front-end fuzzers may fail such assertions, signalling an error in the compiler.\n\n#### Example bug found by front-end fuzzer\n\nSolidity implements the [NatSpec format][3] for code documentation.\nThe front-end fuzzer generated the following program that led to an assertion failure in the compiler (see Notes for more information):\n\n```\ncontract C {\n ///@return\n modifier m22 {}\n}\n\ncontract D is C {\n modifier m22 {}\n}\n```\n\nThe program was presumably mutated from the following perfectly valid test program.\n\n```\ncontract C {\n modifier m22 { _; }\n}\ncontract D is C {\n}\n```\n\nThe mutations prepended the `///@return` line to the modifier declaration and copied the modifier declaration to the derived contract.\n\nA natural question is the following: How did the fuzzer \"know\" that this particular mutation will lead to an error?\nThe answer is that it does not know; the fuzzer simply mutates existing input to create new inputs and it just so happened that this mutation discovered a bug.\nA follow-up question could be: How are mutations created?\nBroadly speaking, mutations fall into one of the following categories:\n\n- Flipping bits at certain positions in the input stream.\n- Adding bits possibly supported by a hand-written dictionary.\n- Shuffling bits.\n- Removing bits.\n\nSince Solidity programs are strings, it may be useful to think of the mutation classes in terms of characters (e.g., `a-z`) than bits.\n\nA second follow-up question could be: Wait a minute! Random mutations are rarely useful? In which case, how can they find bugs?\nThe short answer is yes, they are rarely useful if the end-goal is to create a valid program.\nFor example it is a lot more likely to mutate `if (true) {}` into `iff (true) {}` (suffix `f` to the `if` keyword) than `if (false) {}`.\nThe likely mutation is simply going to lead to a parsing error which is rather uninteresting.\nBut please bear in mind that the goal here is to test the compiler front-end, and to this end, random mutations are rather useful.\nEspecially programs generated by a mix of randomness and human support (dictionary of Solidity keywords).\nThis is borne out by the test case generated by the fuzzer by, among other things, prepending the `///@return` NatSpec comment.\n\nIf you are curious as to how the fuzzer may have \"synthesised\" the NatSpec comment, one of the ways (caution: pure speculation) is the following:\n\n- In some fuzzer run `N`, adding dictionary token \"//\" (i.e., comment syntax in Solidity).\n- In run `N' > N`, adding dictionary token \"return\".\n- Finally, arriving at `///@return` through a sequence of additions/shuffling.\n\nThe Solidity fuzzing dictionary [may be found here][5].\nIf you spot omissions (especially those that may yield interesting mutants), please let us know.\nPRs welcome. :-)\n\nWe would like to thank external contributors Alex Groce and Charalambos Mitropoulos for independently fuzzing the Solidity compiler and reporting bugs.\n\n**Notes**:\n\nThis [issue][4] is a few months old and has been fixed in `0.7.6`.\nThe issue is that Solidity modifiers don't have return variables, and hence a `@return` NatSpec tag does not make sense.\nThe program above should have resulted in a parsing error (which is what the fix ensures) but instead resulted in a failed assertion.\n\n### Back-end Fuzzers\n\nIn order to test if code generation is sound, a valid program (input) needs to be fed to the compiler.\nIf the program contains syntactic (`iff` instead of `if`) or semantic (use undeclared identifier) errors, it won't be accepted by the compiler.\nSemantic fuzzers are designed to ensure program input does not contain such errors.\n\nTo implement semantic fuzzers, we rely on Google's [libprotobuf-mutator][2] library.\nBroadly speaking, writing a semantic fuzzer involves the following steps:\n\n- Write a (context-free) grammar for Solidity in the protobuf interface definition language.\n- Implement a converter interface that accepts a generation of the protobuf grammar and converts into target language.\n\nWe have implemented one such semantic fuzzer for testing the correctness of the Yul optimiser.\nThe fuzzer randomly generates Yul programs whose behavior is tracked pre and post optimisation in order to flag stateful divergence.\nThis helps us determine if a bug was introduced into the optimiser.\n\n#### Example bug found by back-end fuzzer\n\nThe redundant assignment eliminator is a Yul optimiser step that (surpise!) removes redundant assignments to a variable.\nThe back-end fuzzer generated the following example that demonstrated an error in this step:\n\n```\n{\n for {let i:= 0} lt(i,2) {i := add(i,1)}\n {\n // x is declared and implicitly\n // initialized to zero.\n let x\n // This assignment is not redundant\n // since it is used by the mstore statement\n // after the if statement\n x := 1337\n if lt(i,1) {\n // This assignment is redundant because of the `continue`\n x := 42\n continue\n }\n mstore(0, x)\n }\n}\n```\n\nThe redundant assignment eliminator eliminated all assignments to `x` leading to `mstore(0, x)`, thereby optimising the program to one containing `mstore(0, 0)` instead of `mstore(0, 1337)`.\nThis [bug][8] has been [fixed in `0.6.1`][9].\n\nHow does the fuzzer generate such programs?\nThe answer, in a nutshell, is the following. In each fuzzing iteration:\n\n- Libprotobuf-mutator creates a generation of the protobuf grammar for Yul.\n- Libprotobuf parses this generation to ensure it is a valid protobuf message.\n- If valid, the protobuf message is accepted by the converter that we have written.\n- The converter converts this protobuf message into a yul program.\n\nIf you are interested in taking a look at the protobuf grammar for Yul and the converter, please take a look [here][6] and [there][7].\nContributions for improving the grammar/converter are welcome as always.\n\n### Work in Progress\n\nCurrently, we are working on a new Solidity program generator that is independent of libprotobuf and libprotobuf-mutator.\nThe main reason for this is that the protobuf IDL is hardly suited to capturing programming language semantics.\nMoreover, it is quite laborious to write context-free grammar for high-level programming languages.\n\nThe end goal of the new fuzzer generator is to be able to automatically generate a well-formed Solidity program.\nOnce this is implemented, we plan to compile/optimise and potentially execute the resulting bytecode on the EVM virtual machine.\nThis will help us discover otherwise difficult-to-find bugs introduced by the compiler that show up only when EVM state is examined.\n\nWatch this space for more updates on Solidity fuzzing!\n\n[1]: https://github.com/google/oss-fuzz\n[2]: https://github.com/google/libprotobuf-mutator\n[3]: https://docs.soliditylang.org/en/develop/natspec-format.html\n[4]: https://github.com/ethereum/solidity/issues/10433\n[5]: https://www.github.com/ethereum/solidity/blob/develop/test/tools/ossfuzz/config/solidity.dict\n[6]: https://www.github.com/ethereum/solidity/blob/develop/test/tools/ossfuzz/yulProto.proto\n[7]: https://www.github.com/ethereum/solidity/blob/develop/test/tools/ossfuzz/protoToYul.cpp\n[8]: https://github.com/ethereum/solidity/issues/8072\n[9]: https://github.com/ethereum/solidity/pull/8082\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/02/15/contributing-to-solidity-101.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/02/15/contributing-to-solidity-101.json deleted file mode 100644 index a63ff194..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/02/15/contributing-to-solidity-101.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Contributing to Solidity 101","date":"2021-02-15","author":"Franziska Heintel","category":"Explainers"},"content":"\nThe Solidity programming language is an open-source project governed by a core team. We rely on the community’s feedback, input and contributions to make the language as effective, safe and useful as possible.\n\nIn this post, we will walk you through the various different ways how you can get involved contributing to Solidity! Do not hesitate to contact us in case anything is left unclear after reading the post.\n\n### Overview of Contribution Opportunities\n\nThere are plenty of options how you can contribute to Solidity.\n\nIn particular, we appreciate support in the following areas:\n\n- **Issues**: Help with reporting or fixing issues.\n- **Testing**: Test new versions and provide feedback.\n- **Documentation**: Improve or translate the documentation.\n- **Community**: Help others by answering their questions.\n- **Language Design**: Propose language changes or new features and provide feedback.\n\nWe’ll dig deeper into each of these categories in the following sections.\n\n### (1) Contribute to Issues\n\nYou can help us by either reporting issues that you encounter with Solidity or by fixing issues.\n\n#### How to Report Solidity Issues\n\nTo report an issue, please use the [GitHub issues tracker](https://github.com/ethereum/solidity/issues). When reporting issues, please mention the following details:\n\n- Solidity version.\n- Source code (if applicable).\n- Operating system.\n- Steps to reproduce the issue.\n- Actual vs. expected behaviour.\n\nReducing the source code that caused the issue to a bare minimum is always very helpful and sometimes even clarifies a misunderstanding.\n\n#### How to Fix Solidity Issues\n\nIf you want to fix or respond to Solidity’s GitHub issues, we recommend to get started by looking into issues tagged as [`good first issue`](https://github.com/ethereum/solidity/labels/good%20first%20issue), which are meant as introductory issues for external contributors. In order to contribute, please fork off the `develop` branch and make your changes there. Then, please follow the [workflow for pull requests](https://docs.soliditylang.org/en/latest/contributing.html#workflow-for-pull-requests) as outlined in the Solidity documentation.\n\n### (2) Test New Solidity Versions\n\nYou can help us finding issues by testing out new compiler versions, preferrably the nightly development builds, on your code and reporting any issues you might encounter.\n\nYou can find all information on how to access the nightly builds in the [\"Installing the Solidity Compiler\"](https://docs.soliditylang.org/en/latest/installing-solidity.html) chapter of the documentation.\n\n### (3) Improve the Documentation\n\nYou can contribute to the documentation by either fixing typos, improving the content by adding relevant information and more examples, or by helping translate it into more languages.\n\nIf you want to add more content please make sure to follow the [documentation style guide](https://docs.soliditylang.org/en/latest/contributing.html#documentation-style-guide).\n\nIf you are interested in translating the documentation, join the Solidity forum and check the relevant topics in the [documentation category](https://forum.soliditylang.org/c/documentation/8) covering the new translation workflow.\n\n### (4) Support the Community\n\nIf you are experienced with Solidity and want to share your wisdom with the community consider contributing by...\n\n- Responding to questions from other users on [Ethereum StackExchange](https://ethereum.stackexchange.com/?tags=solidity) and the [Solidity Matrix/Gitter Chat](https://gitter.im/ethereum/solidity).\n- Sharing useful code bits in the [“Code Wizards” category](https://forum.soliditylang.org/c/code-wizards/7)\n- Spreading the word about Solidity and sharing relevant Solidity announcements and updates in your social networks and with your peers.\n\n### (5) Take Part in Language Design\n\nTo actively get involved in the language design process and share your ideas concerning the future of Solidity, please join the [Solidity forum](https://forum.soliditylang.org/), where existing properties of the language and proposals for new features can be discussed.\n\nIn the `language design`category, you can propose and discuss new language features and their implementation in the early stages of ideation or modifications of existing features. The forum serves as the place to discuss the initial soundness of the ideas/proposals and to define them further. As soon as proposals get more tangible their implementation will also be discussed in the [Solidity GitHub repository](https://github.com/ethereum/solidity) in the form of issues.\n\nIn addition to the forum and issue discussions, we regularly host language design discussion calls, in which selected topics, issues or feature implementations are debated in detail. The invitation to those calls is shared via the forum.\n\nWe are also sharing feedback surveys and other language design relevant content in the forum.\n\nIf you want to know where the team is standing in terms or implementing new features, you can follow the implementation status in the [Solidity Github project](https://github.com/ethereum/solidity/projects/43). Issues in the `design backlog` need further specification and will either be discussed in a language design call or in a regular team call. You can see the upcoming changes for the next breaking release by changing from the default branch (develop) to the [breaking branch](https://github.com/ethereum/solidity/tree/breaking).\n\n### Get Involved Now!\n\nIf you have questions, issues or pull requests to discuss, or are interested in hearing what the team and contributors are working on, you can join our public team calls. Both calls take place on [Google Meet](https://meet.google.com/mrq-kbwv-edg).\n\n- Mondays at 3pm CET/CEST.\n- Wednesdays at 2pm CET/CEST.\n\n🚨 Please note that the Solidity project is released with a [Contributor Code of Conduct](https://raw.githubusercontent.com/ethereum/solidity/develop/CODE_OF_CONDUCT.md). By participating in this project - in the issues, pull requests, chats or the forum - you agree to abide by its terms.\n\n📖 You can find a maintained overview of the content covered in this post in the [contributing section](https://docs.soliditylang.org/en/latest/contributing.html) of the Solidity documentation.\n\nLooking forward to seeing many of you contributing in one way or another!\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/03/02/saving-gas-with-simple-inliner.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/03/02/saving-gas-with-simple-inliner.json deleted file mode 100644 index b597324d..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/03/02/saving-gas-with-simple-inliner.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Saving Gas with Simple Inlining","date":"2021-03-02","author":"Christian Reitwiessner","category":"Explainers"},"content":"\n[Solidity v0.8.2](https://github.com/ethereum/solidity/releases/tag/v0.8.2) adds a simple inliner to the [low-level optimizer](https://docs.soliditylang.org/en/latest/internals/optimiser.html) of Solidity. In this post, we examine how it works and take a look at synergies with other steps of the optimizer.\n\n### Low-Level Inliner\n\nThe Low-Level Inliner is a component of the low-level optimizer of the Solidity compiler.\nTo save gas, it can inline short functions that do not contain control-flow branches or\nopcodes with side-effects.\n\nThe decision to inline or not is based on the trade-off parameter \"runs\":\nThe combined code deposit cost and execution cost is computed with the\nassumption that the code is executed \"runs\" times. If the inlined version\nis estimated to be cheaper overall than the non-inlined version, the function call is inlined.\n\nIn particular, the optimizer analyzes code of the form\n\n```\nPUSH \nJUMP\n...\n:\n[ROUTINE]\nJUMP\n```\n\nIf the sequence of opcodes in `[ROUTINE]` is short and simple enough, the first `JUMP`\nis replaced by a copy of this code to result in the following:\n\n```\n[ROUTINE]\nJUMP\n...\n:\n[ROUTINE]\nJUMP\n```\n\nIf all references to the tag are eliminated in that way, then also the tag itself\nand the original routine can be removed, saving even more gas.\n\n### Step-by-step Walkthrough and Synergies with Other Optimizer Steps\n\nYou might ask what it means for `[ROUTINE]` to be \"simple\" and why it has to terminate\nin a `JUMP` opcode. The idea behind this\nrestriction is that we want the inliner to just be the first step towards further optimizations.\n\nTake a look at the following code:\n\n```solidity\nfunction unsafeAdd(uint x, uint y) pure returns (uint) {\n unchecked { return x + y; }\n}\nfunction doSomthing(uint x) pure returns (uint) {\n ...\n uint z = unsafeAdd(x, 7);\n ...\n}\n```\n\nWe of course want the call to `unsafeAdd` to be inlined. Internally, Solidity translates\nthe function call roughly to the following assembly code:\n\n```\n...\nPUSH \nPUSH 7\nDUP3 // fetch x\nPUSH \nJUMP\nreturnTag:\n...\n\nunsafeAdd:\nADD\nSWAP1\nJUMP\n```\n\nFor the call, the stack looks as follows (top of the stack on the right):\n\n```\n \n```\n\nSo the last `JUMP` in the code jumps back to the call site.\n\nAfter inlining the code looks like this:\n\n```\n...\nPUSH \nPUSH 7\nDUP3 // fetch x\nADD\nSWAP1\nJUMP\nreturnTag:\n...\n\nunsafeAdd:\nADD\nSWAP1\nJUMP\n```\n\nThere is another optimizer stage in the Solidity compiler called the\n\"Common Subexpression Eliminator\". Despite its name, it is actually a symbolic reasoning engine\nthat transforms code into an internal representation, simplifies it and tries to generate\ncode with the same semantics but fewer instructions. This stage notices that the\n`PUSH ` lies unused on the stack until the very end (it is consumed by the\n`JUMP`) and re-arranges the code in the following way:\n\n```\n...\nPUSH 7\nDUP2 // fetch x\nADD\nPUSH \nJUMP\nreturnTag:\n...\n\nunsafeAdd:\nADD\nSWAP1\nJUMP\n```\n\nNow the code is in a form where the target of the `JUMP` opcode\ncan be determined without a potentially costly stack analysis, since it is pushed\nright above the opcode. Furthermore, it is a jump to a tag that is just the\nnext opcode. This is a perfect opportunity for another stage in the optimizer called the\n\"Peephole Optimizer\": It tries to find simple patterns of sequences of opcodes without\ndoing a full semantic or symbolic analysis. It will remove the \"jump to next\"\nopcode triple and turn the code into this:\n\n```\n...\nPUSH 7\nDUP2 // fetch x\nADD\n...\n\nunsafeAdd:\nADD\nSWAP1\nJUMP\n```\n\nAnd of course finally, there is an unreachable code remover that can eliminate the \"unsafeAdd\" routine\n(unless it is referenced from somewhere else):\n\n```\n...\nPUSH 7\nDUP2 // fetch x\nADD\n...\n```\n\nNow to get back to the point why we require the routine to be simple:\nAs soon as you do more complicated things like for example branching, calling external contracts,\nthe Common Subexpression Eliminator cannot re-construct the code anymore or does not\ndo full symbolic evaluation of the expressions. Furthermore, it can only fully inline the\nfunction if there is a `JUMP` at the end.\n\n### Conclusion and Future Outlook\n\nIn our repository, this simple routine was able to reduce the gas costs of many tests.\nIn order to prevent bugs, we always strive to keep individual optimizer stages as simple as possible\nso that their full potential is mainly realized in combination with other stages.\nBecause it is situated in the low-level optimizer, this new inliner can realize optimization\nopportunities that the high-level inliner cannot, because it does not operate on the level\nof individual jumps and cannot split functions.\n\nThere is one downside in this routine that we carefully considered before implementing it\nthe way it is now: Since it can split functions, it might lead to debuggers being confused\nabout where a function starts and where the actual call is - to a point where a function\nis removed altogether, which actually is the main point here.\n\nWith more and more radical optimizations, the debuggability of Smart Contracts deteriorates.\nThis can be helped by the compiler maintaining debugging information that is transformed\ntogether with the optimizer step and exporting it to help analysis. This is one task we\nwant to tackle in the future.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/03/02/solidity-0.8.2-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/03/02/solidity-0.8.2-release-announcement.json deleted file mode 100644 index e61c3e33..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/03/02/solidity-0.8.2-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.2 Release Announcement","date":"2021-03-02","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.2](https://github.com/ethereum/solidity/releases/tag/v0.8.2) adds an optimizer stage that can inline small amounts of code to save gas and\nprovides more means to work with code documentation by exporting inline comments\nand allowing custom natspec tags.\n\n## Notable New Features\n\n### Inliner\n\nThis release adds a simple inliner to the low-level optimizer of Solidity.\nIt can inline short functions that do not contain control-flow branches or\nopcodes with side-effects. If you want to learn more about the inliner, read [this post](https://blog.soliditylang.org/2021/03/02/saving-gas-with-simple-inliner/).\n\n### Custom Natspec and Exported Documentation\n\nIt is now possible to use documentation tags outside of the set of those\nrecognized by the compiler. These custom tags have to start with `@custom:`\nfollowed by lowercase characters or hypens. How these tags are used is application-defined,\nbut we imagine this to be useful for formal verification or special documentation needs.\nExamples could be `@custom:since v2.3` or `@custom:invariant sum(m_balances)`.\n\nThese custom tags are included in the NatSpec export in the \"developer documentation\".\n\nIt is possible to also use triple-slash documentation inside functions. These are\nexported by the compiler as part of the Json AST as the `\"documentation\"`\nproperty of the following statement.\n\n## Full Changelog\n\n### Compiler Features:\n\n- AST: Export NatSpec comments above each statement as their documentation.\n- Inline Assembly: Do not warn anymore about variables or functions being shadowed by EVM opcodes.\n- NatSpec: Allow and export all tags that start with `@custom:`.\n- NatSpec: Provide source locations for parsing errors.\n- Optimizer: Simple inlining when jumping to small blocks that jump again after a few side-effect free opcodes.\n\n### Bugfixes:\n\n- AST: Added referencedDeclaration for enum members.\n- Code Generator: Fix internal error when functions are passed as parameters of other callables, when the function types can be implicitly converted, but not identical.\n- Parser: Properly parse .address in some situations.\n- SMTChecker: Fix missing type constraints on block and transaction variables in the deployment phase.\n- Type Checker: Fix internal error when override specifier is not a contract.\n- Type Checker: Make function-hash collision errors into fatal type errors.\n\n### AST Changes:\n\n- Adds nameLocation to declarations to represent the exact location of the symbolic name.\n- Removed the redundant function type \"bytearraypush\" - replaced by \"arraypush\".\n- Support field documentation to hold NatSpec comments above each statement.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.2).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/03/23/keccak-optimizer-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/03/23/keccak-optimizer-bug.json deleted file mode 100644 index 976be190..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/03/23/keccak-optimizer-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Optimizer Keccak Caching Bug","date":"2021-03-23","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn March 20, 2021, a bug in Solidity's bytecode optimizer was found by differential fuzzing. The bug\nis fixed with [version 0.8.3](https://github.com/ethereum/solidity/releases/tag/v0.8.3) released on\nMarch 23, 2021. **The bug is present in all prior versions of Solidity.**\n\nWe assigned the bug a severity level of \"medium\".\n\n## Technical Details\n\n**Summary**: The bytecode optimizer incorrectly re-used previously evaluated Keccak-256 hashes. You\nare unlikely to be affected if you do not compute Keccak-256 hashes in inline assembly.\n\nSolidity's bytecode optimizer has a step that can compute Keccak-256 hashes, if the contents of the\nmemory, over which the Keccak-256 built-in function is invoked, are known during compilation time.\nThis step also has a mechanism to determine that two Keccak-256 hashes are equal even if the values\nin memory are not known during compile time. This step had a bug where Keccak-256 hashes of the\nsame memory content, but of different sizes were considered equal. The following is a simple example\nthat illustrates the bug:\n\n```solidity\ncontract C {\n function bug() public returns (uint a, uint b) {\n assembly {\n mstore(0, 0)\n // The optimizer computes the value at compile time:\n // 0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563\n a := keccak256(0, 32)\n // The optimizer incorrectly uses the cached value\n // and transforms the next line to\n // b := 0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563\n // instead of\n // b := 0xe2b9f9f9430b05bfa9a3abd3bac9a181434d23a707ef1cde8bd25d30203538d8\n b := keccak256(0, 23)\n }\n }\n}\n```\n\nIn the above example, both the Keccak-256 hashes can be computed at compile time. Here are two other\ncases where the hashes cannot be computed at compile time, yet the optimizer considered them equal\nand thus modified the semantics:\n\n```solidity\ncontract C {\n function bug(string memory s) public returns (bool ret) {\n assembly {\n let a := keccak256(s, 32)\n let b := keccak256(s, 8)\n // Here `a` and `b` were considered equal,\n // leading to `ret` being incorrectly set to true.\n ret := eq(a, b)\n }\n }\n}\n```\n\n```solidity\ncontract C {\n function bug() public view returns (bool ret) {\n assembly {\n let x := calldataload(0)\n mstore(0, x)\n mstore(0x20, x)\n let a := keccak256(0, 4)\n // even though the memory location is different,\n // the 32-byte content is the same.\n let b := keccak256(0x20, 8)\n // Here `a` and `b` were considered equal,\n // leading to `ret` being incorrectly set to true.\n ret := eq(a, b)\n }\n }\n}\n```\n\nSpecifically, `keccak256(mpos1, length1)` and `keccak256(mpos2, length2)` in some cases were\nconsidered equal if `length1` and `length2`, when rounded up to nearest multiple of 32 were the\nsame, and when the memory contents at `mpos1` and `mpos2` can be deduced to be equal.\n\nYou may be **affected** if you compute multiple Keccak-256 hashes of the same content, but with\ndifferent lengths inside inline assembly, and enabled the optimizer.\n\n### Unaffected Cases\n\nYou are unaffected if your code:\n\n- uses `keccak256` with a length that is not known at compile time,\n- only uses `keccak256` with a length that is always a multiple of 32. In particular,\n for storage slot computation, the Solidity compiler always computes Keccak-256 hash over memory\n regions whose lengths and offsets are multiples of 32,\n- contains pairs of `keccak256` hashes that are separated by certain instructions such as:\n - an instruction that breaks the control flow, e.g., `jumpi`, `jump` etc. In high level code, this\n would be function calls, if statements, loops, etc,\n - an instruction that writes to memory other than a very simple `mstore`, e.g., `call`,\n `returndatacopy`, etc.\n\nNote that, apart from the builtin function `keccak256`, the compiler internally generates code that\nmakes use of the Keccak-256 hash. For example,\n\n- in certain indexed event arguments,\n- in the function `abi.encodeWithSignature`,\n- when using `string` or `bytes` as keys in mappings,\n- when accessing the data location of `mapping` and `array` types.\n\n### Severity\n\nMost usages of `keccak256` fall under one of the unaffected cases mentioned in the previous section.\nIn particular, this can only affect pairs of `keccak256` opcodes without an intermediate jump or an\nexternal call, which makes the likelyhood of the bug being present in existing code very low. This\nis also be validated by the fact that the bug has been present in the optimizer for so long without\nbeing detected. Therefore, we assigned the bug a \"medium\" severity level.\n\n### Fuzzing\n\nThe bug was discovered by differentially testing the current code-generation and the upcoming Yul\nbased code-generation with fuzzer generated input. Essentially, the example in\n[solidity#11131](https://github.com/ethereum/solidity/issues/11131) produced different results, when\ncompiled using different code-generation paths; this is because the bytecode optimizer, in which the\nbug was present, is only activated in the old code-generation, and the Yul based codegen currently\nonly uses the Yul-optimizer that does not contain this bug.\n\nThis bug discovery is part of ongoing fuzzing related work. You can read more about Solidity's\napproach to fuzzing in this introductory [blog\npost.](https://blog.soliditylang.org/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach/)\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/03/23/solidity-0.8.3-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/03/23/solidity-0.8.3-release-announcement.json deleted file mode 100644 index a24ad6d0..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/03/23/solidity-0.8.3-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.3 Release Announcement","date":"2021-03-23","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.3](https://github.com/ethereum/solidity/releases/tag/v0.8.3) fixes the [Solidity Optimizer Keccak Caching Bug](https://blog.soliditylang.org/2021/03/23/keccak-optimizer-bug/), which is present in all prior versions of Solidity, and, in addition, includes two improvements to the optimizer which can provide a big gas benefit when writing structs that cover a full storage slot to storage.\n\n## Important Bugfixes\n\n### Solidity Optimizer Keccak Caching Bug\n\nOn March 20, 2021, a bug in Solidity’s bytecode optimizer was found by differential fuzzing. The bug is fixed with this version. The bug is present in all prior versions of Solidity and has a severity level of \"medium\". To learn more about the bug and check if your code is affected by it, please read the corresponding [Security Alert](https://blog.soliditylang.org/2021/03/23/keccak-optimizer-bug/).\n\n## Notable New Features\n\n### Optimizer Improvements\n\nThere are two optimizer improvements included in this release, namely improving storage writes for small types and replacing multiplications and divisions with powers of two by shifts. The former will make writing packed structs more gas efficient. In the following example, writing to the struct avoids reading from storage, i.e., the optimizer would be able to remove the redundant `sload`:\n\n```solidity\nstruct S {\n address a;\n uint96 b;\n}\n\ncontract C {\n S s;\n function f(uint96 _b) public {\n s.a = msg.sender;\n s.b = _b;\n }\n}\n```\n\nIn the EVM, the shift operations (`shl`, `shr` and `sar`) are cheaper than the arithmetic operations `mul` and `div`. We added an optimization rule that converts multiplication and division by powers of two into `shl` and `shr` respectively. On top of the small gas saving from this simple rule, the rule also chains well with other shift operations. For example: `shl(10, mul(x, 256)) -> shl(10, shl(8, x)) -> shl(18, x)`.\n\n## Full Changelog\n\n### Important Bugfixes:\n\n- Optimizer: Fix bug on incorrect caching of Keccak-256 hashes.\n\n### Compiler Features:\n\n- Command Line Interface: Drop experimental support for `--machine evm15`.\n- Optimizer: Try to move `and` with constant inside `or` to improve storage writes of small types.\n- Optimizer: Replace multiplications and divisions with powers of two by shifts.\n\n### Bugfixes:\n\n- AST Import: For constructors, a public visibility is ignored during importing.\n- Error Reporter: Fix handling of carriage return.\n- SMTChecker: Fix internal error in BMC on resolving virtual functions inside branches.\n- SMTChecker: Fix internal error on `array.pop` nested inside 1-tuple.\n- SMTChecker: Fix internal error on `FixedBytes` constant initialized with string literal.\n- SMTChecker: Fix internal error on array slices.\n- SMTChecker: Fix internal error on calling public getter on a state variable of type array (possibly nested) of structs.\n- SMTChecker: Fix internal error on pushing to `string` casted to `bytes`.\n- SMTChecker: Fix bug in virtual functions called by constructors.\n\n### AST Changes:\n\n- ModifierInvocation: Add `kind` field which can be `modifierInvocation` or `baseConstructorSpecifier`.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.3).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/04/01/announcing-solidity-collectibles.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/04/01/announcing-solidity-collectibles.json deleted file mode 100644 index 5bebd454..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/04/01/announcing-solidity-collectibles.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Announcing Solidity Version Collectibles & Community Governance 💎","date":"2021-04-01","author":"Franziska Heintel","category":"Announcements"},"content":"\n> **⚠️ Attention: This post is an April Fools' Day joke. Please consume it at your own risk. We will not distribute any Solidity NFTs in the foreseeable future. Stay safe.**\n\nToday, we are excited to announce a little surprise we’ve been working on silently for the last couple of weeks. We heard that you really like crypto-related collectibles and we listened.\n\nYou will soon be able to own a digital piece of Solidity’s history: We’re tokenizing each Solidity version as an NFT! 🥳\n\nEvery release will be minted exactly one time only and hence will be truly unique. You’ll be able to bid on each version’s NFT. The means collected from this process will go into a dedicated pool which will be used to fund Solidity-related development that the owner of the NFTs, will be able to vote on (more on this below!).\n\nIf you’re as excited about this initiative as we are and curious to learn more, have a look at the short FAQ we compiled for you!\n\n### How can I get Solidity collectibles of previous versions?\n\nWe are first going to mint all previous versions of Solidity. Since we shipped quite a lot of releases throughout the last 6 years, the auctioning process will be conducted in several tranches.\n\nEach week, another tranche of NFTs will be released for bidding. Auctions will run for one week.\n\n- Solidity 0.1.x - 0.3.x (16 versions): April 5, 2021\n- Solidity 0.4.x (27 versions): April 12, 2021\n- Solidity 0.5.x (18 versions): April 19, 2021\n- Solidity 0.6.x (13 versions): April 26, 2021\n- Solidity 0.7.x (7 versions): May 3, 2021\n- Solidity 0.8.x (4 versions): May 10, 2021\n- Solidity 0.9.x (3 versions): May 17, 2021\n\nIn total, there are 88 previous Solidity versions, which will be minted as an NFT (including the current version of Solidity, which is Solidity 0.9.2).\n\n### Will upcoming versions be tokenized?\n\nYes, upcoming Solidity versions will be tokenized as well! For upcoming versions of Solidity we will include the NFT minting and selling process into the release process and will share the respective auction link alongside the release announcement on Twitter.\n\n### Which Solidity version NFT should I choose?\n\nYou can take a few data points into consideration when choosing your Solidity collectible:\n\n- Do you have a favorite Solidity version or do you have an emotional connection to one of them (e.g. the first version you got started with, the version that implemented a feature you wanted)?\n- You can browse through the [Solidity release page](https://github.com/ethereum/solidity/releases) on GitHub and check the release notes. Some versions fixed important bugs and others added great new features! In the bigger picture, some versions will appear more and some less relevant.\n- Breaking releases (0.x.0 ones) could be considered special.\n- The first releases might be considered special due to their historical relevance.\n- Versions like 0.4.0 where we introduced a serious bug and created a fixing release the next day may also be considered special.\n\n### What will the Solidity version collectibles look like?\n\nThe image connected to the Solidity version collectibles will come with a different style for every version series. The styles will be revealed with every new tranche going live. Since the artistic aspect is not at the center of this collectible please expect them to be rather clean. It’s about owning a piece of history of Solidity and a governance experiment after all! :)\n\n### How can I be sure that this is the **real** NFT and not a copycat or scam?\n\nEspecially when trading on the secondary market, please always verify the origin of the collectible! You can easily do that by checking the history of the NFT and verifying that the initial owner of the NFT was the official Solidity collectible address. The address will be cross-shared over various Solidity channels and in the Solidity GitHub repository before the auction of the first tranche. In the future, `solc --collectible-address` will also output that address.\n\nAdditionally, to leverage the synergies between multiple technologies, we decided to go for a cross-chain validation and verification process to make the NFTs extra secure. We didn’t shy away from efforts nor costs and are proud to share that the Solidity version collectibles will be cross-verified on no less than five (5) blockchains. (Actually, one of them is technically not a “real” blockchain, but who cares!)\n\n### What will I be able to do with a Solidity NFT?\n\nInspired by recent governance and voting experiments like [sybil.org](https://sybil.org/) and [POAP.vote](https://poap.vote/) we would like to give the Solidity version collectibles a special purpose and allow NFT holders to decide over the usage of the funds raised via the NFT auctions. The funds shall be used for Solidity-related development or community work, which is not directly involved with the Solidity compiler, but is closely related to it. Examples for such efforts include work on tools, libraries, but could also be educational resources like creating a “Tour of Solidity” or tutorials.\n\nWe are currently evaluating different existing governance platforms and are open to proposals.\n\n### Where will I be able to bid on a Solidity NFT?\n\nThe auction platform link and details about the contract will be released with the first tranche of collectibles. Please be patient and do not bid on anything unless you were able to cross-verify the contract on the [Solidity Twitter account](https://twitter.com/solidity_lang), on the [Solidity blog](https://blog.soliditylang.org/) and in the [Solidity Github repository](https://github.com/ethereum/solidity).\n\n### What’s up next?\n\nAs a next step on our tokenization and decentralization journey we are considering selling warnings! We assigned numeric values to the errors already which paved the way for individually minting and selling Solidity error NFTs.\n\nOwning a warning will allow you to set the warning text. In addition to that, only the owner will be able to disable the warning in the compiler.\n\nFollow us on [Twitter](https://twitter.com/solidity_lang) to not miss the [alpha leak](https://www.youtube.com/watch?v=dQw4w9WgXcQ)! 😉\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/04/21/custom-errors.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/04/21/custom-errors.json deleted file mode 100644 index 05e1cc5e..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/04/21/custom-errors.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Custom Errors in Solidity","date":"2021-04-21","author":"Solidity Team","category":"Explainers"},"content":"\nStarting from [Solidity v0.8.4](https://github.com/ethereum/solidity/releases/tag/v0.8.4), there is\na convenient and gas-efficient way to explain to users why an operation failed through the use of\ncustom errors. Until now, you could already use strings to give more information about failures\n(e.g., `revert(\"Insufficient funds.\");`), but they are rather expensive, especially when it comes to\ndeploy cost, and it is difficult to use dynamic information in them.\n\nCustom errors are defined using the `error` statement, which can be used inside and outside of\ncontracts (including interfaces and libraries).\n\n## Example\n\nThe following contract shows an example usage of an error:\n\n```solidity\n// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.4;\n\nerror Unauthorized();\n\ncontract VendingMachine {\n address payable owner = payable(msg.sender);\n\n function withdraw() public {\n if (msg.sender != owner)\n revert Unauthorized();\n\n owner.transfer(address(this).balance);\n }\n // ...\n}\n```\n\nThe syntax of errors is similar to that of\n[events](https://docs.soliditylang.org/en/latest/contracts.html#events). They have to be used\ntogether with the [revert\nstatement](https://docs.soliditylang.org/en/latest/control-structures.html#revert-statement) which\ncauses all changes in the current call to be reverted and passes the error data back to the caller.\nUsing errors together with `require` is not yet supported (see below).\n\n## Errors with Parameters\n\nIt is also possible to have errors that take parameters. For example,\n\n```solidity\n// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.4;\n\n/// Insufficient balance for transfer. Needed `required` but only\n/// `available` available.\n/// @param available balance available.\n/// @param required requested amount to transfer.\nerror InsufficientBalance(uint256 available, uint256 required);\n\ncontract TestToken {\n mapping(address => uint) balance;\n function transfer(address to, uint256 amount) public {\n if (amount > balance[msg.sender])\n // Error call using named parameters. Equivalent to\n // revert InsufficientBalance(balance[msg.sender], amount);\n revert InsufficientBalance({\n available: balance[msg.sender],\n required: amount\n });\n balance[msg.sender] -= amount;\n balance[to] += amount;\n }\n // ...\n}\n```\n\nThe error data would be encoded identically as the ABI encoding for function calls, i.e.,\n`abi.encodeWithSignature(\"InsufficientBalance(uint256,uint256)\", balance[msg.sender], amount)`.\n\nWe hope that frameworks will provide direct support for custom errors. The following is an example on\ndecoding error data using the current version of [ethers.js](https://docs.ethers.io/v5/):\n\n```javascript\nimport { ethers } from 'ethers'\n\n// As a workaround, we have a function with the\n// same name and parameters as the error in the abi.\nconst abi = [\n 'function InsufficientBalance(uint256 available, uint256 required)',\n]\n\nconst interface = new ethers.utils.Interface(abi)\nconst error_data =\n '0xcf479181000000000000000000000000000000000000' +\n '0000000000000000000000000100000000000000000000' +\n '0000000000000000000000000000000000000100000000'\n\nconst decoded = interface.decodeFunctionData(\n interface.functions['InsufficientBalance(uint256,uint256)'],\n error_data\n)\n// Contents of decoded:\n// [\n// BigNumber { _hex: '0x0100', _isBigNumber: true },\n// BigNumber { _hex: '0x0100000000', _isBigNumber: true },\n// available: BigNumber { _hex: '0x0100', _isBigNumber: true },\n// required: BigNumber { _hex: '0x0100000000', _isBigNumber: true }\n// ]\nconsole.log(\n 'Insufficient balance for transfer. ' +\n `Needed ${decoded.required.toString()} but only ` +\n `${decoded.available.toString()} available.`\n)\n// Insufficient balance for transfer. Needed 4294967296 but only 256 available.\n```\n\nThe compiler includes all errors that a contract can emit in the contract's\n[ABI-JSON](https://docs.soliditylang.org/en/latest/abi-spec.html?#json). Note that this will not\ninclude errors forwarded through external calls. Similarly, developers can provide\n[NatSpec](https://docs.soliditylang.org/en/latest/natspec-format.html) documentation for errors\nwhich would then be part of the user and developer documentation and can explain the error in much more detail at no cost.\n\nPlease be careful when using error data since its origin is not tracked. The error data by default bubbles up through the chain\nof external calls, which means that a contract may forward an error not defined in any of the\ncontracts it calls directly. Furthermore, any contract can fake any error by returning data that\nmatches an error signature, even if the error is not defined anywhere.\n\nCurrently, there is no convenient way to catch errors in Solidity, but this is planned, and progress\ncan be tracked in issue [#11278](https://github.com/ethereum/solidity/issues/11278). Also,\n`require(condition, \"error message\")` should be translated to `if (!condition) revert\nCustomError()`.\n\n## Errors in Depth\n\nIn the [first example](#example), `revert Unauthorized();` is equivalent to the following Yul code:\n\n```\nlet free_mem_ptr := mload(64)\nmstore(free_mem_ptr, 0x82b4290000000000000000000000000000000000000000000000000000000000)\nrevert(free_mem_ptr, 4)\n```\n\nThis is the same as the ABI encoding of a function call with the name `Unauthorized()`. Here\n`0x82b42900` is the 'selector' for `Unauthorized()`. In contrast, using a revert string, i.e.,\n`revert(\"Unauthorized\");` leads to the following Yul code:\n\n```\nlet free_mem_ptr := mload(64)\nmstore(free_mem_ptr, 0x08c379a000000000000000000000000000000000000000000000000000000000)\nmstore(add(free_mem_ptr, 4), 32)\nmstore(add(free_mem_ptr, 36), 12)\nmstore(add(free_mem_ptr, 68), \"Unauthorized\")\nrevert(free_mem_ptr, 100)\n```\n\nHere `0x08c379a0` is the 'selector' of `Error(string)`. In this comparison, one can see that custom\nerrors decrease both deploy and runtime gas costs. Note that runtime gas cost is only relevant when\nthe revert condition is met.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/04/21/decoding-from-memory-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/04/21/decoding-from-memory-bug.json deleted file mode 100644 index 403d08f6..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/04/21/decoding-from-memory-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity ABI Decoder Bug For Multi-Dimensional Memory Arrays","date":"2021-04-21","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn April 5th, 2021, a bug in the Solidity ABI decoder v2 was reported by\nJohn Toman of the Certora development team. Certora's bug disclosure post\ncan be found here: [Memory Isolation Violation in Deserialization Code](https://medium.com/certora/memory-isolation-violation-in-deserialization-code-certora-bug-disclosure-aece7cd00562).\n\nThe bug is fixed with [Solidity version 0.8.4](https://github.com/ethereum/solidity/releases/tag/v0.8.4)\nreleased on April 21st, 2021. **The bug is present in all prior versions of ABI coder v2.**\n\nWe assigned the bug a severity level of \"very low\", mainly due to the\nfact that it is very hard to exploit the bug.\n\nWe are very grateful to John for his continuing efforts to discover bugs in the Solidity compiler.\n\n## Who Should Be Concerned\n\nYou could be affected if you are using ABI coder v2 (which is the default starting from 0.8.0) and\nespecially the function `abi.decode` on memory (as opposed to calldata) arrays\nwith multi-dimensional arrays or arrays that contain structs.\n\nThe impact of the bug is that if the encoded data is specially crafted,\nthen the decoded value can depend on values in memory outside of the data to be decoded.\n\nThis means that two calls to `abi.decode` with the same data can result in different values.\n\nIt is not possible to exploit this bug in a way that results in invalid memory write\noperations.\n\nUsing `abi.decode` on calldata byte arrays or the implicit use of `abi.decode`\nfor function parameters is unaffected.\n\n## Details of the Bug\n\nThe ABI specification uses pointers to data areas for everything that is dynamically-sized.\nWhen decoding data from memory (instead of calldata), the ABI decoder did not properly validate\nsome of these pointers. More specifically, it was possible to use large values for the pointers\ninside arrays such that computing the offset resulted in an undetected overflow.\nThis would lead to these pointers targeting areas in memory outside of the actual area to be decoded.\nThis way, it was possible for `abi.decode` to return values taken from other areas in memory.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/04/21/solidity-0.8.4-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/04/21/solidity-0.8.4-release-announcement.json deleted file mode 100644 index 78b43e4a..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/04/21/solidity-0.8.4-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.4 Release Announcement","date":"2021-04-21","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.4](https://github.com/ethereum/solidity/releases/tag/v0.8.4) adds custom structured errors, `bytes.concat(...)`, allows more flexible\nconfiguration of the SMT checker and fixes a bug in the Solidity ABI decoder v2.\n\n## Important Bugfixes:\n\nOn April 5th, 2021, a bug in the Solidity ABI decoder v2 was reported by John Toman of the Certora development team. For two-dimensional arrays and specially crafted data in memory, the result of `abi.decode` can depend on data elsewhere in memory. Calldata decoding is not affected. The bug is present in all prior versions of ABI coder v2 and was assigned a severity level of \"very low\". Read all details on the bug and who should be concerned in the corresponding [security alert](https://blog.soliditylang.org/2021/04/21/decoding-from-memory-bug).\n\n## Notable New Features\n\n### Custom Errors\n\nErrors can now be defined inside and outside of contracts (including interfaces and libraries). This provides a convenient\nand gas-efficient way to explain to users why an operation failed. Read more details on Custom Errors in this [explainer post](https://blog.soliditylang.org/2021/04/21/custom-errors/).\n\n### SMTChecker\n\nWe are starting to deprecate `pragma experimental SMTChecker;`. From Solidity 0.8.4 on the standard way to activate the SMTChecker is by either using the\nCLI option `--model-checker-engine {all,chc,bmc}` or the JSON option `settings.modelChecker.engine={all,chc,bmc}`. The pragma version will still work\nuntil the next breaking release, where it will be removed completely.\nFurthermore, the SMTChecker now also verifies whether index accesses are safe, and allows users to choose precisely which contracts should be analyzed,\npotentially reducing the complexity of the generated symbolic model and increasing proving power.\n\n## Full Changelog\n\n### Important Bugfixes:\n\n- ABI Decoder V2: For two-dimensional arrays and specially crafted data in memory, the result of `abi.decode` can depend on data elsewhere in memory. Calldata decoding is not affected.\n\n### Language Features:\n\n- Assembly / Yul: Allow hex string literals.\n- Possibility to use `bytes.concat` with variable number of `bytes` and `bytesNN` arguments which behaves as a restricted version of `abi.encodePacked` with a more descriptive name.\n- Support custom errors via the `error` keyword and introduce the `revert` statement.\n\n### Compiler Features:\n\n- Analysis: Properly detect circular references to the bytecode of other contracts across all function calls.\n- Commandline Interface: Model checker option `--model-checker-targets` also accepts `outOfBounds`.\n- Commandline Interface: New model checker option `--model-checker-contracts` allows users to select which contracts should be analyzed as the most derived.\n- Low-Level Inliner: Inline ordinary jumps to small blocks and jumps to small blocks that terminate.\n- NatSpec: Allow `@notice` tag on non-public state variables and local variable declarations. The documentation will only be part of the AST, under the field `documentation`.\n- SMTChecker: Deprecate `pragma experimental SMTChecker;` and set default model checker engine to `none`.\n- SMTChecker: Report local variables in CHC counterexamples.\n- SMTChecker: Report out of bounds index access for arrays and fixed bytes.\n- SMTChecker: Support file level functions and constants.\n- Standard JSON: Model checker option `settings.modelChecker.targets` also accepts `outOfBounds`.\n- Standard JSON: Model checker option `settings.modelChecker.targets` takes an array of string targets instead of string of comma separated targets.\n- Standard JSON: New model checker option `settings.modelChecker.contracts` allows users to select which contracts should be analyzed as the most derived.\n- Yul EVM Code Transform: Stack Optimization: Reuse slots of unused function arguments and defer allocating stack slots for return variables until after expression statements and assignments that do not reference them.\n- Yul Optimizer: Added a new step FunctionSpecializer, that specializes a function with its literal arguments.\n\n### Bugfixes:\n\n- Antlr Grammar: Fix parsing of import paths involving properly distinguishing between empty and non-empty string literals in general.\n- AST Output: Fix `kind` field of `ModifierInvocation` for base constructor calls.\n- Commandline interface: Fix internal error when printing AST and using `--base-path` or `file://` prefix in imports.\n- Commandline interface: Fix standard input bypassing allowed path checks.\n- Natspec: Fix internal error related to the `@returns` documentation for a public state variable overriding a function.\n- SMTChecker: Fix false positive and false negative on `push` as LHS of a compound assignment.\n- SMTChecker: Fix false positive in contracts that cannot be deployed.\n- SMTChecker: Fix internal error on public getter returning dynamic data on older EVM versions where these are not available.\n- SMTChecker: Fix internal error on try-catch with function call in catch block.\n- Type Checker: Fix missing error when events are used without an emit statement.\n\n### AST Changes:\n\n- New property for `ContractDefinition` nodes: `usedErrors` lists AST IDs of all errors used by the contract (even if defined outside).\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.4).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/05/03/soliditylangorg-umbrella-domain.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/05/03/soliditylangorg-umbrella-domain.json deleted file mode 100644 index e8be1f5e..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/05/03/soliditylangorg-umbrella-domain.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"What Happened with Solidity-related Domains?","date":"2021-05-03","author":"Franziska Heintel","category":"Explainers"},"content":"\nSome time ago we decided to get a domain that the Solidity team has easy access to in\norder to streamline efforts and initiatives that were hosted on other domains before.\n\nAnd so `soliditylang.org` was born! 🎉\n\nWe announced most of these domain changes individually [on Twitter](https://twitter.com/solidity_lang/status/1329031139495964673?s=20), but we want to take a moment to\nalso officially announce it here on the blog\nand explain the various subdomains we have now, what they are for and which older\ndomains may be deprecated in the future.\n\nIn short, we currently maintain the following sites under the soliditylang.org umbrella:\n\n- Solidity Portal: [soliditylang.org](https://soliditylang.org/)\n- Documentation: [docs.soliditylang.org](https://docs.soliditylang.org/)\n- Blog: [blog.soliditylang.org](https://blog.soliditylang.org/)\n- Compiler Binaries: [binaries.soliditylang.org](https://binaries.soliditylang.org/)\n- Forum: [forum.soliditylang.org](https://forum.soliditylang.org/)\n- Solidity Summit: [summit.soliditylang.org](https://summit.soliditylang.org/)\n- Solidity Underhanded Contest: [underhanded.soliditylang.org](https://underhanded.soliditylang.org/)\n\n## Solidity Portal\n\nThe Solidity language portal at [soliditylang.org](https://soliditylang.org/) is a one-stop-shop for all important links and high-level information around Solidity. It includes information on the latest Solidity release, how to get started, information on language design and features recent blog posts and news.\n\n## Documentation\n\nThe Solidity documentation was originally available at `solidity.readthedocs.io`. Now, the readthedocs domain redirects to its new home: [docs.soliditylang.org](https://docs.soliditylang.org/). Since it's a permanent redirection ([HTTP 301](https://en.wikipedia.org/wiki/HTTP_301)), all old links are still working and will take you directly to the correct section in the docs on the new domain.\n\n## Blog\n\nThe Solidity blog was originally available at `solidity.ethereum.org`. Now, the blog is at home at [blog.soliditylang.org](https://blog.soliditylang.org/) and similarly to how it is handled with the docs, the transition should have felt seamless to users. All old links still work and redirect to the corresponding equivalent on the new domain.\n\n## Compiler Binaries / Solc-Bin\n\nWe maintain a repository containing static builds of past and current compiler versions for all supported platforms at `solc-bin`. This is also the location where you can find the nightly builds.\n\n`solc-bin` is available at two locations:\n\n- [binaries.soliditylang.org](http://binaries.soliditylang.org/)\n- [solc-bin.ethereum.org](http://solc-bin.ethereum.org/)\n\nOriginally, the Solidity binaries were hosted at `ethereum.github.io/solc-bin/` and `solc-bin.ethereum.org` was pointing at it. Since we didn't communicate clearly enough at the time that we recommend users to use the `solc-bin.ethereum.org` domain, some users referred to the `github.io` page directly instead.\n\nThe `github.io` hosting has a 10 GB size limit and we exceeded it so we had to switch to a different one. For people who were using the `ethereum.org` domain the transition should have been seamless but there was nothing we could do about `github.io` and we had to just deprecate it.\n\nWe left it up but it hosts binaries only up to 0.7.2 and does not have the native binaries.\n\nAround the same time we got the `soliditylang.org` domain and started moving all Solidity-related stuff under it. Both [binaries.soliditylang.org](https://binaries.soliditylang.org) as well as [solc-bin.ethereum.org](https://solc-bin.ethereum.org) are okay to use and are fully supported. The new URL is recommended but no one has to change it just for the sake of it.\n\nYou can find all information on static binaries in our documentation [here](https://docs.soliditylang.org/en/latest/installing-solidity.html#static-binaries).\n\n## Forum\n\nIn our effort to foster exchange of information, encourage more developers to give feedback about Solidity and join the discussions on language design and future direction of the compiler, we launched the Solidity forum in February of this year. The forum is available at [forum.soliditylang.org](https://forum.soliditylang.org/). You can read all details about the forum in [this announcement](https://blog.soliditylang.org/2021/02/01/launching-the-solidity-forum/).\n\n## Special Purpose Websites (e.g. Solidity Summit and Solidity Underhanded Contest)\n\nWe regularly host Solidity-related events like conferences or hackathons. Event-related websites are also part of the `soliditylang.org` umbrella now.\n\nFor example, you can find the Solidity Summit at [summit.soliditylang.org](https://summit.soliditylang.org/). _(The Solidity Summit is a free interactive forum for people involved and interested in the Solidity language and the ecosystem around it.)_\n\nSimilarly, information on the Underhanded Contest is available at [underhanded.soliditylang.org](https://underhanded.soliditylang.org/). _(The goal of the Solidity Underhanded Contest is to write innocent-looking Solidity code, which pretends to be clear and straightforward, but actually contains malicious behavior or backdoors.)_\n\nOther initiatives and events may find their home under the `soliditylang.org` domain umbrella in the future.\n\nFeel free to reach out to us with any remaining questions you may have. 😊\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/06/10/solidity-0.8.5-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/06/10/solidity-0.8.5-release-announcement.json deleted file mode 100644 index 4c8a8f19..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/06/10/solidity-0.8.5-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.5 Release Announcement","date":"2021-06-10","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.5](https://github.com/ethereum/solidity/releases/tag/v0.8.5) allows conversions\nfrom `bytes` to `bytesNN` values, adds the `verbatim` builtin function to inject\narbitrary bytecode in Yul and fixes several smaller bugs.\n\n## Notable New Features\n\n### Bytes Conversion\n\n_Find the complete feature documentation [here](https://docs.soliditylang.org/en/v0.8.5/types.html#explicit-conversions)._\n\nThis release introduces the ability to convert `bytes` and `bytes` slices to fixed bytes types `bytes1` / ... / `bytes32`. While conversion between fixed-length bytes types has always been possible, it is now also possible to convert dynamically-sized bytes types to fixed-length bytes types.\n\nIn case a byte array is longer than the target fixed bytes type, it will be truncated at the end:\n\n```solidity\nfunction f(bytes memory c) public pure returns (bytes8) {\n\t// If c is longer than 8 bytes, truncation happens\n\treturn bytes8(c);\n}\n```\n\nCalling `f(\"12345678\")` in Solidity code will return `\"12345678\"`, as will calling it as `f(\"1234567890\")`.\nIf the array is shorter than the target fixed type, it will be padded with zeros at the end, so\ncalling `f(\"1234\")` will return `\"1234\"`.\n\nA nice example of using the `bytes` conversion feature would be its application in proxies:\n\n```solidity\n// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.5;\ncontract Proxy {\n\t/// @dev Address of the client contract managed by this proxy\n\taddress client;\n\tconstructor(address _client) {\n\t\tclient = _client;\n\t}\n\t/// Forwards all calls to the client but performs additional checks for calls to \"setOwner(address)\".\n\tfunction forward(bytes calldata _payload) external {\n\t\trequire(_payload.length >= 4);\n\t\tbytes4 sig = bytes4(_payload[:4]);\n\t\tif (sig == bytes4(keccak256(\"setOwner(address)\"))) {\n\t\t\taddress owner = abi.decode(_payload[4:], (address));\n\t\t\trequire(owner != address(0), \"Address of owner cannot be zero.\");\n\t\t}\n\t\t(bool status,) = client.delegatecall(_payload);\n\t\trequire(status, \"Forwarded call failed.\");\n\t}\n}\n```\n\nBefore, it was not possible to do `bytes4 sig = bytes4(_payload[:4]);`, instead you had to use the following:\n\n```solidity\nbytes4 sig =\n\t_payload[0] |\n\t(bytes4(_payload[1]) >> 8) |\n\t(bytes4(_payload[2]) >> 16) |\n\t(bytes4(_payload[3]) >> 24);\n```\n\n### `Verbatim` in Yul\n\n_Find the complete feature documentation [here](https://docs.soliditylang.org/en/v0.8.5/yul.html#verbatim)._\n\nThis release introduces the set of `verbatim` builtin functions for Yul that allows you inject\narbitrary bytecode into the binary. This is currently only available via pure Yul, i.e., it is not\naccessible via inline assembly.\n\nThis essentially has two use-cases (more on those below):\n\n1. The use of opcodes unknown to Yul (because they are only proposed or because you are targeting an EVM-incompatible chain).\n2. Generation of specific sequences of bytecode that are unmodified by the optimizer.\n\nThe functions are `verbatimi_o(\"\", ...)`, where\n\n- `n` is a decimal between 0 and 99 that specifies the number of input stack slots / variables,\n- `m` is a decimal between 0 and 99 that specifies the number of output stack slots / variables,\n- `data` is a string literal that contains the sequence of bytes.\n\nNote that there are some caveats when it comes to using `verbatim`. Details about it can be found in\nthe [documentation](https://docs.soliditylang.org/en/v0.8.5/yul.html#verbatim).\n\n#### Using new Opcodes\n\nAs a practical example, one can use this to conveniently inject a newly proposed EVM opcode into the\nbinary. Take the proposed `BASEFEE` (at `0x48`) opcode (see [EIP-3198][1] and [EIP-1559][2]), since\nthe Solidity compiler currently does not support this opcode, one can use `verbatim` to implement it\nin Yul.\n\n```solidity\n{\n\tfunction basefee() -> out {\n\t\tout := verbatim_0i_1o(hex\"48\")\n\t}\n\n\tsstore(0, basefee())\n}\n```\n\nHere's another example that has an input parameter for `verbatim`.\n\n```solidity\nlet x := calldataload(0)\n// The hex\"600202\" corresponds to EVM instructions:\n// PUSH 02 MUL\n// That is, it multiplies x by 2.\nlet double := verbatim_1i_1o(hex\"600202\", x)\n```\n\nThe above code will result in a `dup1` opcode to retrieve `x` (the optimizer may directly use the\nresult of the `calldataload` opcode, though) directly followed by `600202`. The code is assumed to\nconsume the (copied) value of `x` and produce the result on the top of the stack. The compiler then\ngenerates code to allocate a stack slot for `double` and store the result there.\n\n#### Use-Case for Optimism\n\nThe second use-case can be useful for Layer-2-solutions like Optimism, but also other situations\nlike bytecode analysis or debugging come to mind. Optimism currently uses a custom Solidity compiler\nbecause they simulate the execution of a smart contract where every change to the state\n(storage, external calls, etc.) is not executed directly, but it is replaced by a call to\na manager contract that stores the change for verification. The problem with this is checking\nwhether or not a contract conforms to these restrictions (i.e. properly calls the manager contract\nfor each change), especially since this has to be done by the on-chain fraud detection mechanism.\nWhat they do is that they check that none of the state-changing opcodes is used by the contract, with the\nexception of the `call` opcode that calls the manager contract. For this exception to be\nproperly detected, the sequence of opcodes that leads to this `call` opcode has to have a specific\nform and usually, the Solidity optimizer does some rearranging and destroys this form.\nLuckily, `verbatim` can solve this problem such that Optimism does not need to rely on a custom\nSolidity compiler anymore and can use all later versions of the Solidity compiler without modifications.\n\nThe optimism compiler could take the Yul code generated by the Solidity compiler, append the following\nYul helper functions and syntactically replace all state-changing builtin function calls\nwith their `ovm_`-counterparts. For example, all `sstore(x, y)` calls are relpaced by\n`ovm_sstore(x, y)` calls. After this replacement, the Yul optimizer can even be run again.\n(This code only illustrates `sstore`.)\n\n```solidity\n/// Generic call to the manager contract.\nfunction ovm_callManager(arguments, arguments_size, output_area, output_area_size) {\n\tverbatim_4i_0o(\n\t\thex\"336000905af158600e01573d6000803e3d6000fd5b3d6001141558600a015760016000f35b\",\n\t\targuments,\n\t\targuments_size,\n\t\toutput_area,\n\t\toutput_area_size\n\t)\n}\n\n// Call a manager function with two arguments\nfunction ovm_kall_2i(signature, x, y) {\n\t// Store touched memory in locals and restore it at the end.\n\tlet tmp_a := mload(0x00)\n\tlet tmp_b := mload(0x20)\n\tlet tmp_c := mload(0x40)\n\tmstore(0, signature)\n\tmstore(4, x)\n\tmstore(0x24, y)\n\tovm_callManager(0, 0x44, 0, 0)\n\tmstore(0x00, tmp_a)\n\tmstore(0x20, tmp_b)\n\tmstore(0x40, tmp_c)\n}\n\n// Replace all calls to ``sstore(x, y)`` by ``ovm_sstore(x, y)``\nfunction ovm_sstore(x, y) {\n\t// The hex code is the selector of\n\t// the sstore function on the manager contract.\n\tovm_kall_2i(hex\"22bd64c0\", x, y)\n}\n\n```\n\n## Full Changelog\n\n### Language Features:\n\n- Allowing conversion from `bytes` and `bytes` slices to `bytes1`/.../`bytes32`.\n- Yul: Add `verbatim` builtin function to inject arbitrary bytecode.\n\n### Compiler Features:\n\n- Code Generator: Insert helper functions for panic codes instead of inlining unconditionally. This can reduce costs if many panics (checks) are inserted, but can increase costs where few panics are used.\n- EVM: Set the default EVM version to \"Berlin\".\n- SMTChecker: Function definitions can be annotated with the custom Natspec tag `custom:smtchecker abstract-function-nondet` to be abstracted by a nondeterministic value when called.\n- Standard JSON / combined JSON: New artifact \"functionDebugData\" that contains bytecode offsets of entry points of functions and potentially more information in the future.\n- Yul Optimizer: Evaluate `keccak256(a, c)`, when the value at memory location `a` is known at compile time and `c` is a constant `<= 32`.\n\n### Bugfixes:\n\n- AST: Do not output value of Yul literal if it is not a valid UTF-8 string.\n- Code Generator: Fix internal error when function arrays are assigned to storage variables and the function types can be implicitly converted but are not identical.\n- Code Generator: Fix internal error when super would have to skip an unimplemented function in the virtual resolution order.\n- Control Flow Graph: Assume unimplemented modifiers use a placeholder.\n- Control Flow Graph: Take internal calls to functions that always revert into account for reporting unused or unassigned variables.\n- Function Call Graph: Fix internal error connected with circular constant references.\n- Name Resolver: Do not issue shadowing warning if the shadowing name is not directly accessible.\n- Natspec: Allow multiple `@return` tags on public state variable documentation.\n- SMTChecker: Fix internal error on conversion from `bytes` to `fixed bytes`.\n- SMTChecker: Fix internal error on external calls from the constructor.\n- SMTChecker: Fix internal error on struct constructor with fixed bytes member initialized with string literal.\n- Source Locations: Properly set source location of scoped blocks.\n- Standard JSON: Properly allow the `inliner` setting under `settings.optimizer.details`.\n- Type Checker: Fix internal compiler error related to having mapping types in constructor parameter for abstract contracts.\n- Type Checker: Fix internal compiler error when attempting to use an invalid external function type on pre-byzantium EVMs.\n- Type Checker: Fix internal compiler error when overriding receive ether function with one having different parameters during inheritance.\n- Type Checker: Make errors about (nested) mapping type in event or error parameter into fatal type errors.\n\n### AST Changes:\n\n- Add member `hexValue` for Yul string and hex literals.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.5).\n\n[1]: https://eips.ethereum.org/EIPS/eip-3198\n[2]: https://eips.ethereum.org/EIPS/eip-1559\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/06/22/solidity-0.8.6-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/06/22/solidity-0.8.6-release-announcement.json deleted file mode 100644 index 4f80097c..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/06/22/solidity-0.8.6-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.6 Release Announcement","date":"2021-06-22","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.6](https://github.com/ethereum/solidity/releases/tag/v0.8.6) fixes some\nnon-critical but annoying bugs, especially a warning about unreachable code that\nis in fact reachable.\n\n## Bugfixes\n\n### Unreachable Warning\n\nWith Solidity 0.8.5, we released a new feature that detects if code is unreachable\nbecause a called function always reverts before the code is executed. This detection contained a bug\nin connection with nested calls to internal library functions where the \"reverting behaviour\"\nof a function was not properly updated after a\nfunction called by it was determined to be not always reverting.\n\nBecause the bug was rather common, we are releasing this version with an unusually\nshort changelog.\n\n### Optimizer Setting\n\nWe discovered that the default optimizer setting differed depending on the way\nthe compiler was invoked: Using the compiler on the commandline (\"`solc`\")\ncaused minimal optimizer features to be activated (the intended functionality)\nwhile using `solc-js` all optimizer features were disabled.\n\nThese minimal features are the \"peephole optimizer\", a routine that performs\nobvious replacements like removing `PUSH1 0 POP` and the \"jumpdest remover\"\nwhich removes code that is not jumped to from anywhere.\n\nThe peephole optimizer and the jumpdest remover are activated even when\nsetting `settings.optimizer.enabled` to `false` in Standard JSON\nand have to be explicitly disabled in the detailed settings.\n\nThe bug was that providing a value for `settings.optimizer` but not including\n`enabled` in it was not equivalent to setting `enabled` to `false`.\nIt was equivalent to explicitly disabling all optimizer components.\nIf `settings.optimizer` was not provided at all, the bug did not manifest.\n\n## Full Changelog\n\n### Language Features\n\n- Yul: Special meaning of `\".metadata\"` data object in Yul object.\n\n### Bugfixes\n\n- Control Flow Graph: Fix incorrectly reported unreachable code.\n- Solc-Js: When running `solcjs` without the `--optimize` flag, use `settings.optimizer.enabled=false` in Standard JSON instead of omitting the key.\n- Standard JSON: Omitting `settings.optimizer.enabled` was not equivalent to setting it to `false`. It meant disabling also the peephole optimizer and jumpdest remover which by default still run with `enabled=false`.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.6).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/08/11/solidity-0.8.7-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/08/11/solidity-0.8.7-release-announcement.json deleted file mode 100644 index 916a3180..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/08/11/solidity-0.8.7-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.7 Release Announcement","date":"2021-08-11","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.7](https://github.com/ethereum/solidity/releases/tag/v0.8.7) introduces support for\nthe [London upgrade](https://blog.ethereum.org/2021/07/15/london-mainnet-announcement/), includes\nvarious improvements to Yul to EVM code transformation, the SMTChecker and some bugfixes.\n\n_Please note: Unfortunately, the npm package of this version is corrupted. Pulling the `solc-js` repository directly will work._\n\n## Support for London Upgrade\n\nSolidity adds support for the `BASEFEE` opcode ([EIP-3198](https://eips.ethereum.org/EIPS/eip-3198)\nand [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)) which exposes the block's base fee. This\ncan be accessed via the global `block.basefee` or using `basefee()` in inline assembly or Yul.\n\nThe following contract illustrates an example:\n\n```solidity\ncontract Basefee {\n function basefee_global() external view returns (uint) {\n return block.basefee;\n }\n function basefee_inline_assembly() external view returns (uint ret) {\n assembly {\n ret := basefee()\n }\n }\n}\n```\n\n## SMTChecker\n\nThe SMTChecker now bundles all unproved target reports in a single message,\ndecluttering the tool's output and hopefully making any important information\nmore visible. The command line option `--model-checker-show-unproved` and the\nJSON option `settings.modelChecker.showUnproved=true` can be used to list all\nthe unproved targets.\n\nThe SMT encoding of division and modulo operations actually uses an equivalent\nencoding with multiplication and slack variables for solver performance.\nHowever, some non-default solvers work better with the precise encoding for\nthose operations. The command line option `--model-checker-div-mod-no-slacks`\nand the JSON option `settings.modelChecker.divModNoSlacks` allow the user to\nchoose the precise encoding for division and modulo. This option is expected to\nbe useful only when employing other solvers than z3.\n\nLastly, underflow and overflow targets are not checked by default anymore.\nThis follows the broad use of compiler generated checks which are expected to\nhappen in Solidity >=0.8.0. Underflow and overflow checks can still be performed\nby selecting them via the command line option `--model-checker-targets` or\nthe JSON option `settings.modelChecker.targets`.\n\nPlease see the [SMTChecker documentation](https://docs.soliditylang.org/en/latest/smtchecker.html) in the Solidity docs for more detailed\ninformation about these and other model checker options.\n\n## Full Changelog\n\nLanguage Features:\n\n- Introduce global `block.basefee` for retrieving the base fee of the current block.\n- Yul: Introduce builtin `basefee()` for retrieving the base fee of the current block.\n\nCompiler Features:\n\n- AssemblyStack: Also run opcode-based optimizer when compiling Yul code.\n- Commandline Interface: option `--pretty-json` works also with `--standard--json`.\n- EVM: Set the default EVM version to \"London\".\n- SMTChecker: Do not check underflow and overflow by default.\n- SMTChecker: Unproved targets are hidden by default, and the SMTChecker only states how many unproved targets there are. They can be listed using the command line option `--model-checker-show-unproved` or the JSON option `settings.modelChecker.showUnproved`.\n- SMTChecker: new setting to enable/disable encoding of division and modulo with slack variables. The command line option is `--model-checker-div-mod-slacks` and the JSON option is `settings.modelChecker.divModWithSlacks`.\n- Yul EVM Code Transform: Also pop unused argument slots for functions without return variables (under the same restrictions as for functions with return variables).\n- Yul EVM Code Transform: Do not reuse stack slots that immediately become unreachable.\n- Yul Optimizer: Move function arguments and return variables to memory with the experimental Stack Limit Evader (which is not enabled by default).\n\nBugfixes:\n\n- Code Generator: Fix crash when passing an empty string literal to `bytes.concat()`.\n- Code Generator: Fix internal compiler error when calling functions bound to calldata structs and arrays.\n- Code Generator: Fix internal compiler error when passing a 32-byte hex literal or a zero literal to `bytes.concat()` by disallowing such literals.\n- Commandline Interface: Apply `--optimizer-runs` option in assembly / yul mode.\n- Commandline Interface: Fix crash when a directory path is passed to `--standard-json`.\n- Commandline Interface: Read JSON from standard input when `--standard-json` gets `-` as a file name.\n- Standard JSON: Include source location for errors in files with empty name.\n- Type Checker: Fix internal error and prevent static calls to unimplemented modifiers.\n- Yul Code Generator: Fix internal compiler error when using a long literal with bitwise negation.\n- Yul Code Generator: Fix source location references for calls to builtin functions.\n- Yul Parser: Fix source location references for `if` statements.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.7).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/27/solidity-0.8.8-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/27/solidity-0.8.8-release-announcement.json deleted file mode 100644 index 77f4bbd3..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/27/solidity-0.8.8-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.8 Release Announcement","date":"2021-09-27","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.8](https://github.com/ethereum/solidity/releases/tag/v0.8.8) introduces user defined\nvalue types as a major feature. The `override` keyword is now optional for interface functions,\n`immutable` variables can be read in the constructor, there is support for retrieving the smallest\nand largest value of an enum, you can specify include directories and the commandline interface was cleaned up.\nFurthermore, we fixed several bugs and the SMTChecker has improved language coverage.\n\n## Notable New Features\n\n### User Defined Value Types\n\nA user defined value type allows creating a zero-cost-abstraction over an elementary value type that\nalso increases type safety and improves readability. Details can be found in this deep dive [blog\npost](https://blog.soliditylang.org/2021/09/27/user-defined-value-types/).\n\n### No Override for Interface Functions\n\nA function that overrides only a single interface function does not require the override specifier.\n\n```solidity\n// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.8;\n\ninterface IMinimalERC20 {\n function transfer(address to, uint value) external;\n}\n\ncontract MinimalERC20 is IMinimalERC20 {\n // Before version 0.8.8, this function declaration required\n // specifying the override keyword, i.e.,\n // `function transfer(address to, uint value) external override ...`\n function transfer(address to, uint value) external {\n // ...\n }\n}\n```\n\n### `min` and `max` for Enums\n\nThe smallest and the largest value of an [enum\ntype](https://docs.soliditylang.org/en/latest/structure-of-a-contract.html?#enum-types) can now be\naccessed using `type(E).min` and `type(E).max` respectively.\n\n```solidity\n// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.8;\n\nenum AuctionState {Created, InProgress, Completed}\n\n// returns AuctionState.Created\nfunction min() pure returns (AuctionState) {\n return type(AuctionState).min;\n}\n\n// returns AuctionState.Completed\nfunction max() pure returns (AuctionState) {\n return type(AuctionState).max;\n}\n```\n\n### Reading From Immutable Variables\n\nImmutable variables can be read at construction time once they are initialized.\n\n```solidity\n// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.8;\n\ninterface IMockInterface {\n function getValue() external returns(uint);\n}\n\ncontract ImmutableExample {\n uint immutable value;\n\n event setValue(uint);\n\n constructor(IMockInterface mockContract) {\n // Sets the immutable variable.\n value = mockContract.getValue();\n // Reads the immutable variable.\n emit setValue(value);\n }\n}\n```\n\nAs you probably know, it is also possible to initialize immutable variables\nat the point of their declaration, for example `uint immutable deployTime = block.timestamp;`.\nBecause the order of initialization is not\nalways obvious, such immutable variables are only considered initialized once\nthe constructor is executed. This means you can read from such variables\ninside the constructor but you cannot use them to initialize other\nimmutable variables at the point of their declaration.\n\n### Import Include Paths\n\nWe added the new commandline option `--include-path` that hopefully makes it much easier to compile\nmore complicated projects using multiple libraries. It is available in `solcjs` and `solc` both in legacy\nand standard-json mode. You can use it to specify\ndirectories where source files are looked up when `import` statements are resolved. If you use\n`npm` to install Solidity packages, they are usually placed in a subdirectory below\n`node_modules`. If you use imports of the form `import X from \"@packagename/contracts/x.sol\";`,\nthen invoking the compiler as follows should properly resolve all imports without further work\n(the base path and the include paths will be added to the \"allowed paths\", for example):\n\n```bash\nsolc contract.sol --base-path . --include-path node_modules/\n```\n\nThe previously introduced option `--base-path` provides a path where the lookup is performed\nfirst. If it fails, the include paths are searched for the file.\n\nIt is often a source of frustration that the Solidity compiler stores the full path\nto a source file as part of the metadata, which sometimes makes it more difficult to\nreproduce a compilation when not using the standard-json mode.\n\nIf you use `--base-path` and `--include-path`, then only relative paths to files located inside them will be stored in\nthe metadata and thus should make it much easier to recompile the contracts to\nexactly the same binary on different systems.\n\nOn the other hand, if you provide any files to compile on the commandline that are\nnot inside either the base path or an include path, these files will be named\nby their absolute path on your system and thus will end up like that in the metadata.\n\nCurrently, some projects use remappings to resolve dependencies and we believe\nthat the \"import path\" feature is a better way to solve the same problem.\nRemappings are really only meant to change how the compiler sees its own internal\nfile-system and to e.g. allow two different versions of the same library to\nbe used in one contract or project.\n\n## Full Changelog\n\nLanguage Features:\n\n- Inheritance: A function that overrides only a single interface function does not require the `override` specifier.\n- Type System: Support `type(E).min` and `type(E).max` for enums.\n- User Defined Value Type: allows creating a zero cost abstraction over a value type with stricter type requirements.\n\nCompiler Features:\n\n- Commandline Interface: Add `--include-path` option for specifying extra directories that may contain importable code (e.g. packaged third-party libraries).\n- Commandline Interface: Do not implicitly run evm bytecode generation unless needed for the requested output.\n- Commandline Interface: Normalize paths specified on the command line and make them relative for files located inside base path and/or include paths.\n- Immutable variables can be read at construction time once they are initialized.\n- SMTChecker: Add constraints to better correlate `address(this).balance` and `msg.value`.\n- SMTChecker: Support constants via modules.\n- SMTChecker: Support low level `call` as external calls to unknown code.\n- SMTChecker: Support the `value` option for external function calls.\n- SMTChecker: Support user defined value types.\n\nBugfixes:\n\n- Code Generator: Fix ICE on assigning to calldata structs and statically-sized calldata arrays in inline assembly.\n- Code Generator: Use stable source order for ABI functions.\n- Commandline Interface: Disallow the `--experimental-via-ir` option in Standard JSON, Assembler and Linker modes.\n- Commandline Interface: Fix resolution of paths whitelisted with `--allowed-paths` or implicitly due to base path, remappings and files being compiled. Correctly handle paths that do not match imports exactly due to being relative, non-normalized or empty.\n- Commandline Interface: Report optimizer options as invalid in Standard JSON and linker modes instead of ignoring them.\n- Name Resolver: Fix that when importing an aliased symbol using `import {AliasedName} from \"a.sol\"` it would use the original name of the symbol and not the aliased one.\n- Opcode Optimizer: Prevent the optimizer from running multiple times to avoid potential bytecode differences for referenced code.\n- Parser: Properly check for multiple SPDX license identifiers next to each other and validate them.\n- SMTChecker: Fix BMC's constraints regarding internal functions.\n- SMTChecker: Fix false negative caused by `push` on storage array references returned by internal functions.\n- SMTChecker: Fix false positive in external calls from constructors.\n- SMTChecker: Fix internal error on some multi-source uses of `abi.*`, cryptographic functions and constants.\n- Standard JSON: Fix non-fatal errors in Yul mode being discarded if followed by a fatal error.\n- Type Checker: Correct wrong error message in inline assembly complaining about `.slot` or `` .offset` not valid when actually ``.length`` was used.\n- Type Checker: Disallow modifier declarations and definitions in interfaces.\n- Yul Optimizer: Fix a crash in LoadResolver, when `keccak256` has particular non-identifier arguments.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.8).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/27/user-defined-value-types.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/27/user-defined-value-types.json deleted file mode 100644 index 6b04b53c..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/27/user-defined-value-types.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"User Defined Value Types in Solidity","date":"2021-09-27","author":"Solidity Team","category":"Explainers"},"content":"\n[Solidity v0.8.8](https://github.com/ethereum/solidity/releases/tag/v0.8.8) introduces [user defined\nvalue types](https://docs.soliditylang.org/en/latest/types.html?#user-defined-value-types) as a\nmeans to create zero-cost abstractions over an elementary value type that also increases type safety\nand improves readability.\n\n## Motivation\n\nA problem with primitive value types is that they are not very descriptive: they only specify how\nthe data is stored and not how it should be interpreted. For example, one may want to use `uint128`\nto store the price of some object as well as the quantity available. It is quite useful to have\nstricter type rules to avoid intermingling of the two different concepts. For example, one may want\nto disallow assigning a quantity to a price or vice versa.\n\nOne option for solving this issue is by using\n[structs](https://docs.soliditylang.org/en/latest/types.html#structs). For example, price and\nquantity can be abstracted as structs as follows:\n\n```solidity\nstruct Price { uint128 price; }\nstruct Quantity { uint128 quantity; }\n\nfunction toPrice(uint128 price) returns(Price memory) {\n return Price(price);\n}\nfunction fromPrice(Price memory price) returns(uint128) {\n return price.price;\n}\nfunction toQuantity(uint128 quantity) returns(Quantity memory) {\n return Quantity(quantity);\n}\nfunction fromQuantity(Quantity memory quantity) returns(uint128) {\n return quantity.quantity;\n}\n```\n\nHowever, a [struct](https://docs.soliditylang.org/en/latest/types.html?#structs) is a reference type\nand therefore always points to a value in `memory`, `calldata` or `storage`. This means that the\nabove abstraction has a runtime overhead, i.e., additional gas when compared to using just `uint128`\nto represent the underlying value. In particular, the functions `toPrice` and `toQuantity` involve\nstoring the value in memory. Similarly, the functions `fromPrice` and `fromQuantity` read the\nrespective value from memory. Together, these functions pass the value from `stack -> memory ->\nstack` which wastes memory and incurs a runtime cost. This issue is solved by user defined value\ntypes, which are abstractions of elementary value types (such as `uint8` or `address`), without any\nadditional runtime overhead.\n\n## Syntax for User Defined Value Types\n\nA user defined value type is defined using `type C is V;`, where `C` is the name of the newly\nintroduced type and `V` has to be a built-in value type (the \"underlying type\"). They can be defined\ninside or outside contracts (including libraries and interfaces). The function `C.wrap` is used to\nconvert from the underlying type to the custom type. Similarly, the function `C.unwrap` is used to\nconvert from the custom type to the underlying type.\n\nGoing back to the problem from the [motivation](#motivation) section, one can replace the structs by:\n\n```solidity\npragma solidity ^0.8.8;\n\ntype Price is uint128;\ntype Quantity is uint128;\n```\n\nThe functions `toPrice` and `toQuantity` can be replaced by `Price.wrap` and `Quantity.wrap`\nrespectively. Similarly, the functions `fromPrice` and `fromQuantity` can be replaced by\n`Price.unwrap` and `Quantity.unwrap` respectively.\n\nThe data-representation of the values of such types are inherited from the underlying type and the\nunderlying type is also used in the ABI. This means that the following two `transfer` functions\nwould be identical, i.e., they have the same [function\nselector](https://docs.soliditylang.org/en/latest/abi-spec.html#function-selector) as well as the\nsame [ABI encoding and\ndecoding](https://docs.soliditylang.org/en/latest/abi-spec.html#mapping-solidity-to-abi-types). This\nallows using user defined value types in a backwards compatible way.\n\n```solidity\npragma solidity ^0.8.8;\n\ntype Decimal18 is uint256;\n\ninterface MinimalERC20 {\n function transfer(address to, Decimal18 value) external;\n}\n\ninterface AnotherMinimalERC20 {\n function transfer(address to, uint256 value) external;\n}\n```\n\nNotice in the above example, how the user defined type `Decimal18` makes it clear that a value is\nsupposed to represent a number with 18 decimals.\n\n## Example\n\nThe following example illustrates a custom type `UFixed` representing a decimal fixed point type\nwith 18 decimals and a minimal library to do arithmetic operations on the type.\n\n```solidity\n// SPDX-License-Identifier: GPL-3.0\npragma solidity ^0.8.8;\n\n// Represent a 18 decimal, 256 bit wide fixed point type\n// using a user defined value type.\ntype UFixed is uint256;\n\n/// A minimal library to do fixed point operations on UFixed.\nlibrary FixedMath {\n uint constant multiplier = 10**18;\n\n /// Adds two UFixed numbers. Reverts on overflow,\n /// relying on checked arithmetic on uint256.\n function add(UFixed a, UFixed b) internal pure returns (UFixed) {\n return UFixed.wrap(UFixed.unwrap(a) + UFixed.unwrap(b));\n }\n /// Multiplies UFixed and uint256. Reverts on overflow,\n /// relying on checked arithmetic on uint256.\n function mul(UFixed a, uint256 b) internal pure returns (UFixed) {\n return UFixed.wrap(UFixed.unwrap(a) * b);\n }\n /// Take the floor of a UFixed number.\n /// @return the largest integer that does not exceed `a`.\n function floor(UFixed a) internal pure returns (uint256) {\n return UFixed.unwrap(a) / multiplier;\n }\n /// Turns a uint256 into a UFixed of the same value.\n /// Reverts if the integer is too large.\n function toUFixed(uint256 a) internal pure returns (UFixed) {\n return UFixed.wrap(a * multiplier);\n }\n}\n```\n\nNotice how `UFixed.wrap` and `FixedMath.toUFixed` have the same signature but perform two very\ndifferent operations: The `UFixed.wrap` function returns a `UFixed` that has the same data\nrepresentation as the input, whereas `toUFixed` returns a `UFixed` that has the same numerical\nvalue. One can allow some form of type-encapsulation by only using the `wrap` and `unwrap` functions\nin the file that defines the type.\n\n## Operators and Type Rules\n\nExplicit and implicit conversions to and from other types are disallowed.\n\nCurrently, no operators are defined for user defined value types. In particular, even the operator\n`==` is not defined. However, allowing operators is currently being discussed. To give a short\noutlook on the applications, one may want to introduce a new integer type that always does wrapping\narithmetic as follows:\n\n```solidity\n/// Proposal on defining operators on user defined value types\n/// Note: this does not fully compile on Solidity 0.8.8; only a concept.\n\ntype UncheckedInt8 is int8;\n\nfunction add(UncheckedInt8 a, UncheckedInt8 b) pure returns(UncheckedInt8) {\n unchecked {\n return UncheckedInt8.wrap(UncheckedInt8.unwrap(a) + UncheckedInt8.unwrap(b));\n }\n}\nfunction addInt(UncheckedInt8 a, uint b) pure returns(UncheckedInt8) {\n unchecked {\n return UncheckedInt8.wrap(UncheckedInt8.unwrap(a) + b);\n }\n}\n\nusing {add as +, addInt as +} for UncheckedInt8;\n\ncontract MockOperator {\n UncheckedInt8 x;\n function increment() external {\n // This would not revert on overflow when x = 127\n x = x + 1;\n }\n function add(UncheckedInt8 y) external {\n // Similarly, this would also not revert on overflow.\n x = x + y;\n }\n}\n```\n\nYou can join or follow this discussion in the [Solidity\nforum](https://forum.soliditylang.org/t/user-defined-types-and-operators/456) and [issue\n#11969](https://github.com/ethereum/solidity/issues/11969). Also, you can join or follow the\ndiscussion about allowing the constructor syntax for user defined value types in the [issue\n#11953](https://github.com/ethereum/solidity/issues/11953).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/29/signed-immutables-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/29/signed-immutables-bug.json deleted file mode 100644 index 47cf3634..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/29/signed-immutables-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Signed Immutables Bug","date":"2021-09-29","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn September 28th, 2021, the Solidity team discovered that\nfor immutable variables of a signed integer type shorter than 256 bits,\nsign extension (cleanup) of its value is not always properly performed.\n\nTo our knowledge, the value can only be accessed in its unclean state\nwhen using inline assembly.\nThe bug is present since the introduction of the\n`immutable` feature in Solidity 0.6.5 and is fixed in 0.8.9.\n\nWe assigned the bug a severity of \"very low\".\n\n## Technical Details\n\nWhen immutable variables are assigned in Solidity during the construction phase, the value\nis stored in memory until the creation concludes. For types shorter than 32 bytes,\nthese values were stored left-aligned within the 32 byte word and when the values were\nread again, they were shifted back accordingly, but no cleanup was performed on the values.\nIn particular, the signextend operation was not performed on signed values.\n\nAs an example, if you store `-2` in an `int8`, it is stored in two's complement encoding\nas a single-byte value of `0xfe`. Since the words in the EVM use 32 bytes, the value\nneeds to be properly sign-extended before an operation like signed division is performed,\notherwise the value would be interpreted as a positive value.\n\nSign-extension means setting the higher order bits to the same value as the\nsign bit, which is the most significant bit of the actual type.\n\nThe value `-2` represented as a two's complement in 32 bits (`int8`) is\n`0xfe`, however, in EVM, it is sign extended to\n`0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe`,\nwhich also represents the value `-2` when interpreted as `int256`.\nNote that `0xfe` when interpreted as `int256` is `+254`.\n\nThe missing sign extension was not discovered earlier, since Solidity always performs\nadditional cleanup (which can be removed by the optimizer if done twice)\nright before an operation where it is important to have clean higher order bits\nlike copying to memory, comparing or dividing values.\n\nSo the only way\n(to our knowledge) to obtain the \"unclean\" value of the immutable is to first\nassign it to a local variable and then read from that local variable\ninside inline assembly.\n\n## Affected Example\n\nIn the example below, the call to `f()` returns `0x000000...0000fe` instead of\n`0xffffff...fffffe`.\n\n```solidity\ncontract C {\n int8 immutable x = -2;\n function f() public view returns (bytes32 r) {\n int8 y = x;\n assembly { r := y }\n }\n}\n```\n\nIf you use something like `r = bytes32(int(y));` to return the value without\ninline assembly, it would return the correct value. The same is true when using\na getter - `int8 public immutable x = -2`.\n\n## Justification for Inline Assembly to be Required\n\nWe believe that inline assembly is required for this bug to manifest itself, not only\nbecause we believe that the Solidity compiler always properly cleans the values\nwhenever it matters, but also for another reason:\n\nThe bug is only present in what we call the \"legacy\" code generator. Cleanup when\nreading immutable values has been correctly implemented in the new Yul-IR-based\ncode generator (which is still considered experimental).\n\nIn order to find bugs in the new implementation, we regularly fuzz-test\nthe two implementations against each other using a mix of generational\n(Solidity programs generated based on language grammar) and mutational\n(mutated variants of existing Solidity programs) test creation engines.\n\nThis mechanism can of course not only find bugs in the new implementation,\nbut also in the old one.\n\nInline assembly is currently not used by the generational engine because\nwe know that the two implementations diverge on the assembly level\nand it would lead to too many false positives.\n\nSince the fuzzer has not found the bug in the almost 18 months it has been\npart of the compiler, we are pretty sure that there is no other way\nthan inline assembly to access the unclean values.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/29/solidity-0.8.9-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/29/solidity-0.8.9-release-announcement.json deleted file mode 100644 index 087f4b3f..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/29/solidity-0.8.9-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.9 Release Announcement","date":"2021-09-29","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.9](https://github.com/ethereum/solidity/releases/tag/v0.8.9) is a pure bugfix release and fixes two important, but low severity, bugs.\n\n1. The first bug is related to immutables of signed integer types shorter than 256 bits. The bug causes sign extension (cleanup) of those values to not always being properly performed. It was introduced in Solidity 0.6.5. Read more in the respective [security alert](https://blog.soliditylang.org/2021/09/29/signed-immutables-bug/).\n2. The second bug was introduced with user defined value types in Solidity v0.8.8 (released two days ago). User defined types with underlying type shorter than 32 bytes used incorrect storage layout and wasted storage. Find more information in the respective [security alert](https://blog.soliditylang.org/2021/09/29/user-defined-value-types-bug/). A big shout out to Harry Altman (@haltman-at) of Truffle who discovered this bug only some hours after the release of 0.8.8!\n\nPlease do not use Solidity v0.8.8 in production and update your contracts to v0.8.9.\n\n## Full Changelog\n\nImportant Bugfixes:\n\n- Immutables: Properly perform sign extension on signed immutables.\n- User Defined Value Type: Fix storage layout of user defined value types for underlying types shorter than 32 bytes.\n\nBugfixes:\n\n- AST: Export `canonicalName` for `UserDefinedValueTypeDefinition` and `ContractDefinition`.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.9).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/29/user-defined-value-types-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/29/user-defined-value-types-bug.json deleted file mode 100644 index e2fa7afd..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/09/29/user-defined-value-types-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"User Defined Value Types Bug","date":"2021-09-29","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn September 28th, 2021, Harry Altman ([@haltman-at](https://github.com/haltman-at)) of Truffle\ndiscovered a bug in user defined value types.\n\nThe bug has no influence on the correctness of Solidity contracts, but contracts compiled with\nSolidity 0.8.8 that use the new feature are unnecessarily wasteful and might have problems with\ntooling or contract upgrades.\n\nThe bug exists only in Solidity 0.8.8 and is fixed in 0.8.9.\n\nWe assigned the bug a severity of \"very low\".\n\n## Storage Layout of User Defined Value Types\n\nThe compiler did not correctly compute the storage layout of user defined value types based on types\nthat are shorter than 32 bytes. It would always use a full storage slot for these types, even if the\nunderlying type is shorter. A user defined value type in 0.8.8 should have the same data\nrepresentation as its underlying type in all aspects with the exception of storage layout.\n\nTypes shorter than 32 bytes can share a storage slot with other values if there is enough space. For\nexample:\n\n```solidity\npragma solidity =0.8.8;\n\ntype MyInt128 is int128;\n\ncontract WastefulStorageLayout {\n // slot 0\n MyInt128 a;\n // slot 1\n MyInt128 b;\n}\n\ncontract PackedStorageLayout {\n // slot 0\n int128 a;\n // slot 0\n int128 b;\n}\n```\n\nYou can verify this by running `solc --storage-layout Contract.sol`.\n\n## Impact\n\nSolidity tries to guarantee that the storage layout of contracts remains consistent across releases.\nThis allows for certain kind of upgrade patterns to exist that may use different Solidity versions.\nSince user defined value types should behave exactly as the underlying type, Solidity 0.8.8\nintroduced inconsistent storage layout for contracts with short user defined value types as state\nvariables. The Solidity 0.8.9 release corrects the layout. Be extra careful when upgrading from a\ncontract that was compiled with 0.8.8, and that uses short user defined value types, to a version\nhigher than 0.8.9.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/11/09/solidity-0.8.10-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/11/09/solidity-0.8.10-release-announcement.json deleted file mode 100644 index be3ce47b..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/11/09/solidity-0.8.10-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.10 Release Announcement","date":"2021-11-09","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.10](https://github.com/ethereum/solidity/releases/tag/v0.8.10) can now report contract invariants and reentrancy properties through the SMTChecker. It also contains some new optimizations with regards to external function calls and enables the new EVM code generator for pure Yul mode.\n\n## Notable New Features\n\n### New EVM Code Transform for Compilation via Yul IR\n\nWith this release, we introduce a new EVM code generation backend that is used for the experimental compilation pipeline of Solidity via Yul (with enabled optimizer), as well as for optimized compilation of Yul input.\n\nWhile previously any Yul variable had a fixed position on stack during its entire lifetime, the new code transform drops this restriction and attempts to determine a more optimal layout that (1) reduces the required amount of swapping and thereby reduces gas cost and (2) keeps overall stack usage as low as possible to work against stack-too-deep errors.\n\nWe simultaneously enable the previously experimental StackLimitEvader for code generated via Yul, which will - under certain conditions - move Yul variables from stack to memory to prevent stack-too-deep errors. However, this transformation is only enabled in the absence of inline assembly for now, since there is no way to indicate that inline assembly will respect Solidity's memory model, which is a prerequisite for the transformation to be valid.\n\nIn our benchmarks, the new code transform has resulted in significant runtime gas savings, although at the cost of a slight increase in code size.\n\nThis change will also affect the generation of optimized code with Yul as input, i.e. `solc --strict-assembly --optimize` will also use the new code transform.\nTo enable the StackLimitEvader, Yul code needs to indicate that it respects an area of reserved memory. This can be done with the `memoryguard` instruction as described in our [documentation](https://docs.soliditylang.org/en/latest/yul.html?#memoryguard): Yul code containing `let ptr := memoryguard(size)`, where `size` is a literal, promises to keep the memory in the range `[size, ptr)` untouched at all times, allowing the compiler to use this range for moving stack variables, if necessary.\n\n## Full Changelog\n\nLanguage Features:\n\n- Inline Assembly: Support `.address` and `.selector` on external function pointers to access their address and function selector.\n\nCompiler Features:\n\n- Code Generator: Skip existence check for external contract if return data is expected. In this case, the ABI decoder will revert if the contract does not exist.\n- Commandline Interface: Accept nested brackets in step sequences passed to `--yul-optimizations`.\n- Commandline Interface: Add `--debug-info` option for selecting how much extra debug information should be included in the produced EVM assembly and Yul code.\n- Commandline Interface: Support `--asm`, `--bin`, `--ir-optimized`, `--ewasm` and `--ewasm-ir` output selection options in assembler mode.\n- Commandline Interface: Use different colors when printing errors, warnings and infos.\n- JSON AST: Set absolute paths of imports earlier, in the `parsing` stage.\n- SMTChecker: Output values for `block.*`, `msg.*` and `tx.*` variables that are present in the called functions.\n- SMTChecker: Report contract invariants and reentrancy properties. This can be enabled via the CLI option `--model-checker-invariants` or the Standard JSON option `settings.modelChecker.invariants`.\n- Standard JSON: Accept nested brackets in step sequences passed to `settings.optimizer.details.yulDetails.optimizerSteps`.\n- Standard JSON: Add `settings.debug.debugInfo` option for selecting how much extra debug information should be included in the produced EVM assembly and Yul code.\n- Yul EVM Code Transform: Switch to new optimized code transform when compiling via Yul with enabled optimizer.\n- Yul Optimizer: Take control-flow side-effects of user-defined functions into account in various optimizer steps.\n\nBugfixes:\n\n- Code Generator: Fix constructor source mappings for immutables.\n- Commandline Interface: Disallow `--error-recovery` option outside of the compiler mode.\n- Commandline Interface: Don't return zero exit code when writing linked files to disk fails.\n- Commandline Interface: Fix extra newline character being appended to sources passed through standard input, affecting their hashes.\n- Commandline Interface: Report output selection options unsupported by the selected input mode instead of ignoring them.\n- Commandline Interface: When linking only accept exact matches for library names passed to the `--libraries` option. Library names not prefixed with a file name used to match any library with that name.\n- SMTChecker: Fix internal error in magic type access (`block`, `msg`, `tx`).\n- SMTChecker: Fix internal error in the CHC engine when passing gas in the function options.\n- TypeChecker: Fix internal error when using arrays and structs with user defined value types before declaration.\n- TypeChecker: Fix internal error when using user defined value types in public library functions.\n- TypeChecker: Improved error message for constant variables with (nested) mapping types.\n- Yul Assembler: Fix internal error when function names are not unique.\n- Yul IR Generator: Do not output empty switches/if-bodies for empty contracts.\n\nImportant Bugfixes in Experimental Features:\n\n- Yul IR Generator: Changes to function return variables referenced in modifier invocation arguments were not properly forwarded if there was more than one return variable.\n\nBuild System:\n\n- Pass linker-only emscripten options only when linking.\n- Remove obsolete compatibility workaround for emscripten builds.\n- Update emscripten to version 2.0.33.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.10).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/11/18/solidity-developer-survey-2021.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/11/18/solidity-developer-survey-2021.json deleted file mode 100644 index b7e27740..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/11/18/solidity-developer-survey-2021.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2021 is Live!","date":"2021-11-18","author":"Franziska Heintel","category":"Announcements"},"content":"\nToday, we launched the [Solidity Developer Survey 2021](https://docs.google.com/forms/d/e/1FAIpQLSc5iacmGfzHfAAgQK3hQVxIXXKMImYbQ5tzi33BiMwaBvhbFQ/viewform). Please all take 10 minutes to participate and let us know your feedback!\n\nThis marks the second time we are conducting a structured big developer survey. You can find the results of last year's Solidity developer survey [here](https://blog.soliditylang.org/2021/01/26/solidity-developer-survey-2020-results/).\n\n## Shape the Future of Solidity 🔮\n\nThe survey helps us to further improve the Solidity language and compiler and shape the future roadmap of Solidity. We can't wait to hear your thoughts on the prioritization of new features, what you like and dislike about Solidity and learn about your coding preferences!\n\nYour replies are invaluable for the Solidity project to understand your needs, the current strengths and weaknesses of the language and will contribute towards establishing development priorities for the future. This will ultimatively result in improving the Solidity developer experience as a whole.\n\nSimilar to last year, the survey consists of several chapters:\n\n- Demographics\n- Developer Profile\n- Solidity Profile\n- Solidity Development Experience\n- Upcoming Features and Language Design\n- Solidity Community\n\nCompleting the survey will roughly take 10 minutes. You can skip questions you don't want to answer, no question is mandatory. However, please note that of course the more information you share with us the better we will be able to understand your needs and work on further improving Solidity according to your needs.\n\n## Spread the Word 🪁\n\nPlease support us by spreading the word about the survey! Share it on your preferred social media, developer forum, in dev chats or directly with your coworkers and developer friends.\n\nThanks a bunch!\n\nThe results of the survey will be shared on this blog as well as on the Solidity [Twitter](https://twitter.com/solidity_lang) and [Mastodon](https://fosstodon.org/@solidity) accounts early next year.\n\n**✨📋 [Click here to start the survey!](https://docs.google.com/forms/d/e/1FAIpQLSc5iacmGfzHfAAgQK3hQVxIXXKMImYbQ5tzi33BiMwaBvhbFQ/viewform) 📋✨**\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/12/20/solidity-0.8.11-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/12/20/solidity-0.8.11-release-announcement.json deleted file mode 100644 index 9185a05a..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2021/12/20/solidity-0.8.11-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.11 Release Announcement","date":"2021-12-20","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.11](https://github.com/ethereum/solidity/releases/tag/v0.8.11)\nadds a first implementation of a Language Server, allows a safer way to\nperform ABI-encoding and fixes several bugs.\n\n## Notable New Features\n\n### Language Server Preview\n\n[Language Server Protocol](https://microsoft.github.io/language-server-protocol/)\nis an initiative that allows better interoperability between IDEs and\ncompilers, or more generally, language diagnostics tools. The idea is that\ninstead of writing a different plugin for each combination of IDEs and\nlanguages, every IDE implements a single client and every compiler implements\na single server and since both of them use the same protocol, you can combine\nall of them with each other.\n\nSolidity 0.8.11 contains a first release of an integrated language server,\nwhich means every IDE that has Language Server support will support Solidity\nout of the box.\n\nSince we first want to focus on getting the interface right, this release\ncontains a minimal set of features: It can only report errors and warnings.\n\nHaving said that, we expect future features to be finished quickly. In the first\nquarter of 2022 we expect to add \"jump to definition\", \"rename\", \"find all references\",\n\"show documentation on hover\", \"semantic highlighting\" and more.\n\nUnfortunately, one feature that will take more effort is likely the one you were\nlooking forward to the most: autocomplete. This feature is more complicated because\nautocomplete requires the compiler to perform symbol lookup and type resolution\ninside broken (because it is incomplete) code. We have a prototype that can handle\nincomplete code, but we do not yet know how useful it is.\n\n#### How to Use the LSP\n\nHow to hook your IDE up with the Solidity LSP depends on your IDE.\nThe LSP is currently only implemented for the native binary of Solidity (i.e. it does not\nwork if you install Solidity via javascript / npm). You need to download\nthe binary and provide the path to your IDE, plus the option `--lsp`.\n\n**QtCreator:** Choose Tools → Options → Language Client. Click on \"Add\" and\nprovide the path to the solc executable and `--lsp` as options.\n\n**vim / neovim:** You need the `coc` plugin and add the following to the\n`coc-settings.json` file:\n\n```\n{\n // ...\n \"languageserver\": {\n // ...\n \"solidity\": {\n \"command\": \"/path/to/solc\",\n \"args\": [ \"--lsp\" ],\n \"rootPatterns\": [\".git/\"],\n \"filetypes\": [\"solidity\"]\n }\n }\n}\n```\n\n**VSCode:** Ironically, the IDE that started the LSP project does not\nhave a generic plugin that can be combined with an arbitrary language\nserver. We expect LSP functionality to be added to the existing Solidity\nplugins for VSCode soon. Until then, you can try out the\n[plugin created by Christian Parpart](https://dev.to/christianparpart/builtin-solidity-language-server-267n) to showcase our LSP.\n\n#### Please Provide Feedback!\n\nWe are happy to ship this first preview of the Solidity Language Server and\nare curious to hear your thoughts on it. Please let us know what you think!\n\n- Which of the future features would you find most important?\n- Does the LSP work for you?\n- Is it easy to install?\n- Are you working on a plugin or an IDE that would profit from the Language Server?\n\nYou can get in touch with us via [Matrix](https://matrix.to/#/#ethereum_solidity:gitter.im) or one of\nthe other ways linked in our [readme header](https://github.com/ethereum/solidity#readme).\n\n### `abi.encodeCall`\n\nIt is a common pattern to use `abi.encodeWithSelector` to create the\ncall data for a funciton call which is then performed only later on,\nfor example in multi-signature wallets or more complex delegate contracts.\n\nThe problem with `abi.encodeWithSelector` is that the compiler does not\ncheck whether the supplied values actually match the types expected by the\ncalled function.\n\nBecause of that, we added `abi.encodeCall` which is similar to\n`abi.encodeWithSelector`, just that it does perform these type checks:\n\n`abi.encodeCall(contractName.functionName, (arg1, arg2, arg3))` is the same as\n`abi.encodeWithSelector(contractName.functionName.selector, arg1, arg2, arg3)`,\nwith the difference that the compiler checks that the types of `arg1`, `arg2`, `arg3`\nare compatible with a call of the form `contractName.functionName(arg1, arg2, arg3)`.\n\n## Full Changelog\n\n**Language Features:**\n\n- General: New builtin function `abi.encodeCall(functionPointer, (arg1, arg2, ...))` that type-checks the arguments and returns the ABI-encoded function call data.\n\n**Compiler Features:**\n\n- Commandline Interface: Add `--lsp` option to get `solc` to act as a Language Server (LSP) communicating over stdio.\n\n**Bugfixes:**\n\n- Code Generator: Fix a crash when using `@use-src` and compiling from Yul to ewasm.\n- SMTChecker: Fix internal error when an unsafe target is solved more than once and the counterexample messages are different.\n- SMTChecker: Fix soundness of assigned storage/memory local pointers that were not erasing enough knowledge.\n- Fix internal error when a function has a calldata struct argument with an internal type inside.\n- IR Generator: Fix IR syntax error when copying storage arrays of functions.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.11).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/02/07/solidity-developer-survey-2021-results.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/02/07/solidity-developer-survey-2021-results.json deleted file mode 100644 index efce0c51..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/02/07/solidity-developer-survey-2021-results.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2021 Results","date":"2022-02-07","author":"Franziska Heintel","category":"Announcements"},"content":"\nIn this post, we will be summarizing and analyzing the results of the [2021 Solidity Developer Survey](https://blog.soliditylang.org/2021/11/18/solidity-developer-survey-2021/).\n\nA big thank you goes out to everybody who took the time and participated!\n\nYour input is invaluable to us and plays a crucial role in helping to continuously improve the Solidity developer experience as a whole.\n\n## Summary & Notable Insights\n\n- **Survey Audience**: In total, 435 developers from 73 different countries participated in the 2021 survey. Compared to 2020, that is more than a 100% increase in responses. The coverage of different geographies also drastically increased from 48 countries in 2020 to 73 countries in 2021. More than 20% stated to be residing in the US, followed by India (9%) and Germany (4%). Roughly 9% preferred to not share details on their location.\n- **Developer Profiles**: The level of coding experience is medium to high with the majority of respondents having coded professionally 3 or more years, 36.6% even more than 6 years.\n- **Solidity Experience**: More than half of all respondents have been using Solidity less than a year, while 15.5% have been using it more than 3 years. Almost 80% use Solidity daily or weekly.\n- **Solidity Expertise**: Most respondents deem themselves Solidity experts, with a self rating in expertise of 7 or higher (scale of 10). 4.2% rate their expertise as a 10/10. 80% of respondents use Solidity for their personal projects, roughly 60% also use it at work. More than half of all respondents have been using Solidity for less than a year.\n- **Developer Experience**: The majority (+70%) believes that the Solidity developer experience improved in the last year. Only 1.6% are of the opinion it got worse.\n- **Language Restrictiveness**: More than 60% of respondents wish that Solidity becomes more restrictive/explicit (having more checks). 26% would prefer it to remain as is.\n- **Future Features**: A more efficient optimizer and the ability to catch custom errors are ranked as most important future features under discussion. Moreover, support for fractional numbers, better array management and fixing stack too deep are among the most mentioned anticipated features.\n- **Liked & Dreaded Features**: Respondents most like Solidity's simplicity, the \"easy to learn\" aspect of it, SafeMath by default and modifiers. Dreaded topics are debugging, the stack too deep error and missing support for fractional numbers.\n- **Community**: Less than a third of respondents ever participated in Solidity language design related efforts.\n\n## [1] Survey Audience\n\n_⚠️ Note that the fact that this survey has only been shared in English is an important factor to consider when interpreting results regarding the distribution of countries of residency and language preferences._\n\nTo begin with, let us look at the developers who participated in this survey: We will elaborate on general information like location and spoken languages and also learn more about their professional experience, coding preferences and more.\n\nIn total, the 2021 survey received **435 responses from developers from 73 different countries**. Compared to 2020, that is more than a 100% increase in responses. It appears this survey also reached a geographically much more diverse audience since the number of countries climbed from 48 in 2020 to 73 in 2021.\n\n![Survey Participants World Map](/img/2022/02/geo.png)\n\n#### Residency\n\nMore than 20% stated to be residing in the US, followed by India (9%) and Germany (4%). Roughly 9% preferred to not share details on their location.\n\n![Survey Participants Country List](/img/2022/02/countries.png)\n\n#### Language\n\nThe respondents cover a wide variety of languages with their native languages. In total, 50 different languages were mentioned as native language.\n\n35% consider English their native language, followed by Spanish (9.4%), French (5.9%), Russian (5.9%), Portuguese (4.9%) and German (4.9%).\n\n![Survey Participants Native Language](/img/2022/02/native_lang.png)\n\nThe big majority of more than 80% predominantly speaks English at work.\n\nSeveral respondents also speak Spanish (2.8%), French (2.1%), Russian (1.6%) or Portuguese (1.6%) at work.\n\n![Survey Participants Work Language](/img/2022/02/work_lang.png)\n\nOf the respondents who didn't name English as their native language, more than 90% are okay with reading the Solidity documentation in English. 8.6% would prefer to read it in their native language, the most mentioned ones being Mandarin and Traditional Chinese, Spanish and Portuguese.\n\n![Preferred Documentation Lanugage](/img/2022/02/docs_lang.png)\n\n_ℹ️ Bear in mind that this survey has only been conducted in English, which may have an impact on the outcome of this question. We still believe internationalization of resources like the Solidity documentation is a crucial factor to lower the barriers of entry and we aim to support community efforts to translate with a new, clearer structured [translation guide](https://github.com/solidity-docs/translation-guide)._\n\n### Developer Profile\n\n#### Work Experience & Employment\n\n77.1% of respondents are currently employed, while roughly 10% are students and 12.5% are currently not working professionally.\n\n![Employment Status](/img/2022/02/employment.png)\n\nThe respondents predominantly work in the technology (62.8%) and financial services (15.5%) sector. The last third splits into various other sectors.\n\n![Industry Sector](/img/2022/02/sector.png)\n\nRoughly 10% are coding newbies and have only coded professionally for less than a year. On the other hand, a similar number of respondents has coded for more than 15 years.\n\nWith approximately 30%, the biggest group sits in the middle of the distribution and has professional coding experience of 3-5 years.\n\nOverall, the level of coding experience is medium to high with the majority of respondents having coded professionally 3 or more years, 36.6% even more than 6 years.\n\n![Professional Coding Experience](/img/2022/02/coding_experience.png)\n\nInterestingly, the majority of respondents (80.4%) use Solidity for their personal projects. Roughly 60% of all respondents use Solidity at work, while 40% predominantly code in another programming language at their job.\n\nMore than 20% state they are leading a programming team.\n\n![Survey Participants Relation to Solidity](/img/2022/02/role_sol.png)\n\nIn terms of open-source contributions, unfortunately 60% of respondents say that they never, or only infrequently contribute to open-source projects written in Solidity.\n\nOn the other hand, almost 30% do so on a daily or weekly basis.\n\n![Survey Participants Open Source Contributions](/img/2022/02/open_source.png)\n\n#### Programming Language Preferences\n\nJavaScript and Solidity share rank 1 in terms of most used programming languages (both 27%), followed by TypeScript (14.7%) and Python (10.9%).\n\n![Most Used Programming Language](/img/2022/02/progr_lang.png)\n\nRespondents' favorite programming languages are distributed more evenly across various languages. Python is most popular, scoring 22.7% of all entries, followed by Solidity (19.4%), JavaScript (14.5%), TypeScript (10.8%), and Rust (8.4%).\n\n![Favorite Programming Language](/img/2022/02/fav_progr_lang.png)\n\n#### Operating System\n\nSimilar to the 2020 survey, macOS and Linux seem equally popular. Roughly 40% use macOS, closely followed by Linux (36.6%). Windows is used by 22% of respondents, most of who state to be using either macOS or Linux in addition to Windows. There are also several developers using both Linux and macOS, or even all three operating systems.\n\n![Operating System](/img/2022/02/os.png)\n\n### Solidity Experience & Solidity Developer Profile\n\nMost respondents deem themselves Solidity experts, with a self rating in expertise of 7 or higher (scale of 10). 4.2% rate their expertise as a 10/10. Roughly 23% can be considered beginners or low-frequency users with a self-rated expertise level of 4 or lower.\n\n![Solidity Expertise Level](/img/2022/02/sol_expertise.png)\n\nThe share of beginners has increased slightly compared to last year with more than half of all respondents using Solidity for less than a year.\n\n15.5% have been using Solidity for more than 3 years and can thus be considered Solidity seniors.\n\n![Solidity Experience Level](/img/2022/02/sol_experience.png)\n\nSolidity remains to appear rather easy to learn with 26.7% of respondents feeling productive in less than a month and 30.7% in less than half a year. 7.7% needed more than a year to feel comfortable with the language. 23.3% don't feel productive yet, out of which more than 75% are beginners and have been using Solidity for 6 months or less.\n\n![Time to Productiveness](/img/2022/02/sol_productivity.png)\n\n#### Solidity Developer Profile\n\nThe majority (roughly 80%) of respondents use Solidity on a daily or weekly basis. 8% indicated to be using Solidity \"rarely\" or \"never\", out of which almost all predominantly code in another programming language at work and most indicated they only have been using Solidity for less than 3 months.\n\n![Solidity Usage Frequency](/img/2022/02/sol_frequency.png)\n\nMore than 50% use VSCode as an editor to write Solidity, followed by Visual Studio (14%) and Remix (11%). Vim is used by 7% of respondents, followed by IntelliJ (5.8%) and Atom (3%).\n\nCompared to 2020, IntelliJ, Atom, Vim and Sublime are used less in 2021.\n\n![Editor Overview](/img/2022/02/ide.png)\n\nHardhat becomes the most popular Ethereum-specific development environment with ~65% of all respondents using it (from 38.6% in 2020).\n\nTruffle and Remix follow with a user share of roughly 25-26% each. Rather \"niche\" Ethereum-specific development environments are Brownie (10.5%), Dapptools (8.2%), Scaffold-ETH (4.7%), Foundry/Forge (1.6%) and Embark (0.7%). 3.5% of respondents are not using any Ethereum-specific IDE.\n\nCompared to 2020, Truffle (2020: 59.3% -> 2021: 26.2%) and Remix (2020: 50.3% -> 2021: 24.8%) lost significant share, while Hardhat, Brownie, Dapptools and newcomers like Foundry increased their share in users. It's important to note that the 2020 survey had significantly fewer responses (2020: 194 -> 2021: 435), hence the year-on-year comparison can only be interpreted as a loose trend but doesn't have proper statistical relevance due to the small lot size.\n\n![Ethereum IDE Overview](/img/2022/02/eth_ide.png)\n\nWith 86.3%, 0.8.x Solidity versions are by far the most used ones. Both 0.7.x (23%) and 0.6.x (18.3%) version series remain to be used while everything older than that is hardly in use anymore.\n\nThis is a great development compared to 2020, when the majority of users was still on the 0.6.x version series.\n\nLuckily, only a few people are still using very old versions from the 0.4.x or 0.5.x series.\n\n![Used Solidity Versions](/img/2022/02/versions.png)\n\n_⚠️ Reminder: Please make sure to frequently update your code. [Several important bug fixes and security improvements](https://github.com/ethereum/solidity/blob/develop/docs/bugs_by_version.json#L922) have been added since 0.4.x!_\n\n## [2] Solidity User Experience\n\nThe majority (+70%) believes that the Solidity developer experience improved throughout the last year. Only 1.6% are of the opinion it got worse.\n\n![Solidity Developer Experience](/img/2022/02/dev_ex.png)\n\nWhen getting stuck on a Solidity problem, 80% try to find solutions in the Ethereum StackExchange or on StackOverflow. Many also ask their coworkers for help (32.9%) or watch tutorials (38.1%). It's also quite popular to leave the problem for a bit, do other work and try solving it later again (29.2%).\n\n![Solving Problems](/img/2022/02/solidity_problem.png)\n\n### Recurring Issues\n\n30% of respondents don't encounter the same or similar issues multiple times when developing in Solidity.\n\nAmongst the people that do, stack too deep, bytecode size limit, debugging issues, uncertainties about the optimizer and array handling were mentioned most often as recurring issues.\n\n## [3] Features\n\n### Future Features\n\nA more efficient optimizer and the ability to catch custom errors are ranked as most important future features under discussion.\n\n![Future Feature Priority Ranking](/img/2022/02/future_features_rank.png)\n\nMoreover, support for fractional numbers, better array management and fixing stack too deep are among the most mentioned anticipated features.\n\n_⚠️ We noted that respondents were using various different terms like \"floats\", \"floating point arithmetic\", \"floating point number\", \"fixed point numbers\", \"fixed point math\". We categorized those as \"factional numbers\" and assume that all of the above ultimatively aims to describe \"fixed point math\"._\n\nMost mentioned anticipated features in descending order:\n\n- \"floats\"\n- better array management / more functions for array & mappings\n- fix stack too deep\n- gas optimizations / optimizer improvements\n- better debugging\n- better support for strings\n- easier/better gas metering while building/developing\n- console.log()\n- custom errors for require()\n- generics\n- better docs (esp. for advanced content like inline assembly, Yul, etc.)\n- codegen via Yul\n- custom value types\n- fixed point math\n- LSP\n\n### Most Liked & Dreaded\n\nRespondents most like Solidity's simplicity, the \"easy to learn\" aspect of it, SafeMath by default and modifiers.\n\nMost mentioned liked features in descending order:\n\n- simplicity\n- easy to learn\n- domain-specific language / right tool for the job / \"it works\"\n- SafeMath by default / over- & underflow checks\n- modifiers\n- mappings\n- clean syntax\n- interfaces\n- static typing\n- readability\n- inheritance\n- good tooling\n- structs\n- inline assembly\n- delegate call\n- require and assertions\n- custom errors\n- memory management\n- events\n- libraries\n- compiler safety\n- ABIEncoderV2\n- explicitness\n- flexibility\n- immutability\n- language safety\n- object orientation\n\nMost dreaded topics are debugging, the stack too deep error and missing support for fractional numbers.\n\nDreaded features in descending order:\n\n- debugging\n- stack too deep\n- missing floating numbers / fixed point numbers\n- inline assembly\n- ambiguous/generic (revert) error messages\n- arrays\n- strings\n- docs difficult to read and navigate\n- breaking changes in minor versions / lack of compatibility\n- security\n- gas cost / deploy cost\n- inheritance\n- testing\n- gas optimization\n- modifiers\n- outdated resources / tutorials in community resources\n- increasing complexity\n- `returns`\n- explicit conversions\n- missing docs on inline assembly / yul\n- missing console.log\n- memory allocation\n- missing standard library\n- reentrancy\n- type system\n- override\n\n### Restrictiveness\n\nMore than 60% of respondents wish that Solidity becomes more restrictive/explicit, having more checks. 26% would like it to remain as is.\n\n![Solidity Restrictiveness Ranking](/img/2022/02/restrictiveness.png)\n\n## [4] Solidity Community\n\n### Language Design\n\nLess than 20% of respondents ever participated in Solidity language design related efforts. 6.2% participated in discussions in the Solidity forum, 5.1% joined language design calls and 6.4% opened or contributed to Github issues in the Solidity repository.\n\nOf the roughly 80% that did not participate in language design, almost 8% state not being interested, while 35% are too busy with their work and 40% don't know how they could get involved.\n\n![Language Design Participation](/img/2022/02/lang_design.png)\n\n### Staying Informed\n\nMost people like to stay up-to-date about Solidity versions, security alerts and announcements by following Solidity on Twitter or Mastodon. Other often used means for information are the Solidity blog and Solidity GitHub release page.\n\n![Means To Stay Up-To-Date](/img/2022/02/stay_informed.png)\n\n### Interaction with Other Solidity Developers\n\nMore than half of respondents interact with other Solidity developers. Interestingly, still almost 45% state that they are only rarely or never in touch with other Solidity developers.\n\n![Developer Interaction](/img/2022/02/interaction.png)\n\nAs the last part of the survey, we wanted to hear how many participants agree or disagree with several statements regarding the Solidity community and the work of the Solidity team.\n\n- 75% of respondents feel welcome in the Solidity developer community.\n- Roughly 80% agree or somewhat agree that they feel confident in the work of the Solidity team.\n- More than half feel welcome to contribute to Solidity, however only less than half say that they know how to contribute ideas or feedback to Solidity.\n- Roughly 25% are confident that the Solidity team understands their needs as a developer. Another 40% somewhat agree, while only a fraction disagree or strongly disagree.\n\n![Community and Solidity Team Confidence Ranking](/img/2022/02/statements.png)\n\n## Thank You & See You Next Year!\n\nLastly, we want to take the opportunity to thank you for all your lovely and motivating messages and the feedback received.\n\nWe hope the insights from the 2021 Solidity Developer Survey were useful for you, they certainly are for us!\n\nWe will continue to collect feedback on an ongoing basis, so please don't stop to hold your eyes and ears open!\n\nTo not miss anything make sure to...\n\n- follow Solidity on [Twitter](https://twitter.com/solidity_lang) or [Mastodon](https://fosstodon.org/@solidity).\n- join the discussions in the [Solidity forum](https://forum.soliditylang.org/).\n- follow announcements on the [Solidity blog](https://blog.soliditylang.org/).\n\n---\n\n_All graphs can be found [here](https://docs.google.com/presentation/d/1B4ffyq4gJT3zxNbYmAToT4ognCkmbUjVCf8sye_yNEA/edit?usp=sharing). The raw and analyzed data can be found [here](https://docs.google.com/spreadsheets/d/1PFCv7TwP8hp3AiJHYqy3qk4FTNatJDfUKjtsZnI5SUM/edit?usp=sharing)._\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/02/09/underhanded-solidity-contest-2022-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/02/09/underhanded-solidity-contest-2022-announcement.json deleted file mode 100644 index ab0e84c9..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/02/09/underhanded-solidity-contest-2022-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Underhanded Solidity Contest 2022","date":"2022-02-09","author":"Franziska Heintel","category":"Announcements"},"content":"\nThe long wait is over: The [Underhanded Solidity Contest](https://underhanded.soliditylang.org/) is back with a 2022 edition!\n\nAfter a successful [revival](https://blog.soliditylang.org/2020/09/21/solidity-underhanded-contest/) in 2020, we believe it's time for the great Solidity minds to get together again and compete over the next big underhanded hack!\n\nIn case you're new to this, let's get you up to speed with a quick recap on what the Underhanded Solidity Contest (USC) is all about:\n\nIn a nutshell, the USC is about finding loopholes or \"hiding spots\" in the Solidity language and using those to write seemingly innocent and straightforward-looking Solidity code which contains malicious behavior or backdoors.\n\nWith that, the Underhanded Solidity Contest aims to:\n\n- Raise awareness about smart contract security.\n- Uncover language design faults.\n- Battle-test recently introduced language features and restrictions.\n- Highlight anti-patterns in smart contact development.\n- Establish new best practices for secure smart contract development.\n\nSo, let's have a look at the 2022 contest specifics, the theme, deadlines, judges, prizes and more!\n\n## The Theme: Decentralized Exchanges 🧪\n\nBuild a decentralized exchange that looks fair, but can be \"manipulated\".\n\nIn this year, we would like you to build a simple decentralized exchange where people can trade their hard-earned NFTs, DAO governance tokens, or dog coins of their choice.\n\nThe rules of decentralized exchanges (at least the simple ones) are very easy and nothing can go wrong there... right?\n\nBuild a decentralized exchange either with an automated market maker or a match-making mechanism where trades do not really work as expected. This can be either by it leaking money, a specific account being able to withdraw all money or something else you can think of. You can also add a flaw to a token implementation you provide instead of to the exchange itself. The only hard requirement is that the flaw is hidden.\n\n## The Judges ⚖️\n\nJudges are presented with anonymised submissions. This year, the submissions will be assessed by:\n\n- [Alex Beregszaszi](https://twitter.com/alexberegszaszi), Solidity Co-Lead at Ethereum Foundation.\n- [Anton Permenev](https://twitter.com/a_permenev), Senior Engineer at ChainSecurity.\n- [Duncan Townsend](https://twitter.com/duncancmt), CTO at Immunefi.\n- [Gonçalo Sá](https://twitter.com/GNSPS), Security Engineer at ConsenSys Diligence.\n- [Harikrishnan Mulackal](https://twitter.com/_hrkrshnn), C++ Engineer Solidity at Ethereum Foundation.\n- [Josselin Feist](https://twitter.com/Montyly), Principal Security Engineer at Trail of Bits.\n- [samczsun](https://twitter.com/samczsun), Research Partner at Paradigm.\n- [Stefan Beyer](https://twitter.com/beyer_st), Lead Auditor at Solidified.\n\n### Judging Criteria ☑️\n\nRember to consider the following aspects and properties for your submissions:\n\n- **Simplicity & Conciseness**: Since it's much easier to hide a vulnerability in complex and poorly written code, short and clean submissions will be scored higher than those that are lengthy and complicated.\n- **Plausibility**: Code that drops down to inline assembly without any clear reason why will look immediately suspicious, no matter how cleverly written the assembly-level flaw is.\n- **Originality**: Truly original ideas will receive more points than making use of already well known exploit/backdoor mechanisms.\n\n## The Prizes 🏆\n\nThis year, the first place will receive a ticket to [Devcon VII Bogota](https://devcon.org/).\n\nThe top 3 submissions will receive a ticket to the [Devconnect Coworking Space](https://devconnect.org/) and the opportunity to present their contest submission at the [Solidity Summit 2022](https://summit.soliditylang.org/) in Amsterdam.\n\nThe top 3 submissions of the Underhanded Solidity Contest will also be awarded points for the upcoming [Paradigm CTF 2022](https://ctf.paradigm.xyz/).\nThose points will be awarded as though the winners solved a bonus challenge (\"pseudo-challenge\").\n\nFurthermore, the three winners will be added to the Board of Fame.\n\nThe winners and all qualified submissions will receive a custom Underhanded Solidity Contest NFT.\n\n## The Submission 📨\n\nBefore submitting your code ensure that:\n\n- The entirety of your submission is licensed under an open-source license.\n- In your submission you use Solidity v0.8.0 or newer.\n- You have carefully read the [Coding Brief](https://underhanded.soliditylang.org/#coding-brief).\n\nPlease email your submissions before the deadline [2022-03-16, 11:59PM UTC] to `sol_underhanded@ethereum.org`. Entries should consist of a ZIP file containing a README describing your submission and how it works, a separate file for spoilers, and one or more Solidity files.\n\nEach person can only enter one submission. If you want to make a team submission, nominate a single person to submit on your team's behalf. Since entries will be forwarded to the judges and assessed anonymously, please do not include identifying information in the ZIP file.\n\n## The Deadline ⏳\n\n- Submissions open: 2022-02-09.\n- Submissions close: 2022-03-16.\n\nWinners will be announced in time before Devconnect Amsterdam in April.\n\n## The Board of Fame ⭐\n\nTo honor all winners of previous Underhanded Solidity Contests, we have introduced the [Board of Fame](https://underhanded.soliditylang.org/#board-of-fame). Consider checking out the hacks of previous winners for inspiration and to make sure you are not using an already known exploit by accident.\n\n## The Supporters 💖\n\nLast but not least, we'd like to extend our thanks to [ChainSecurity](https://chainsecurity.com/), [ConsenSys Diligence](https://consensys.net/diligence/), [Immunefi](https://immunefi.com/), [Solidified](https://solidified.io/), [Trail of Bits](https://www.trailofbits.com/), [Paradigm](https://www.paradigm.xyz/), the [Ethereum Foundation](https://ethereum.foundation/) and all the judges for their support in organizing this contest!\n\nShould you have any questions or encounter problems please feel free to reach out to us via `sol_underhanded@ethereum.org` or join the Solidity [Matrix](https://matrix.to/#/#ethereum_solidity:gitter.im) / [Gitter](https://gitter.im/ethereum/solidity) channel.\n\n**We’re looking forward to receiving many innocent submissions. 😇 Have fun!**\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/02/16/solidity-0.8.12-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/02/16/solidity-0.8.12-release-announcement.json deleted file mode 100644 index 7769e9c3..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/02/16/solidity-0.8.12-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.12 Release Announcement","date":"2022-02-16","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.12](https://github.com/ethereum/solidity/releases/tag/v0.8.12)\nimproves the JavaScript / Wasm binary and fixes several bugs.\n\n## Notable New Features\n\n### Emscripten Build / solc-js\n\nWe were able to reduce the size of the JavaScript / WebAssembly\nbinaries from 27 MB to just over 8 MB. The reason for the large binary\nin the first place is that we include the SMT solver Z3.\n\nThe size reduction is achieved by compressing the binary using LZ4 and\ndecompressing it when it is loaded, which should be completely transparent to the user.\nWe were initially worried that this might have a negative impact on people who\nswitch compiler versions often or always run it in a fresh Node.js environment,\nbut our benchmarks show that the decompression is faster than the base64 decoding,\nso it should not be an issue.\n\n### TypeScript Migration of solc-js\n\nThe code for the JavaScript wrappers of the compiler has been partially\nported to TypeScript, which should have no impact on users of the npm package.\nIf you build the package yourself or use the repository without the npm package,\nplease contact us if you encounter any problems.\n\n## Full Changelog\n\n**Language Features:**\n\n- General: Add equality-comparison operators for external function types.\n- General: Support `ContractName.functionName` for `abi.encodeCall`, in addition to external function pointers.\n\n**Compiler Features:**\n\n- Commandline Interface: Event and error signatures are also returned when using `--hashes`.\n- Yul Optimizer: Remove `mstore` and `sstore` operations if the slot already contains the same value.\n- Yul: Emit immutable references for pure yul code when requested.\n\n**Bugfixes:**\n\n- Antlr Grammar: Allow builtin names in `yulPath` to support `.address` in function pointers.\n- Code Generator: Fix internal error when accessing the members of external functions occupying more than two stack slots.\n- Code Generator: Fix internal error when doing an explicit conversion from `string calldata` to `bytes`.\n- Control Flow Graph: Perform proper virtual lookup for modifiers for uninitialized variable and unreachable code analysis.\n- General: `string.concat` now properly takes strings as arguments and returns `string memory`. It was accidentally introduced as a copy of `bytes.concat` before.\n- Immutables: Fix wrong error when the constructor of a base contract uses `return` and the derived contract contains immutable variables.\n- Inheritance: Consider functions in all ancestors during override analysis.\n- IR Generator: Add missing cleanup during the conversion of fixed bytes types to smaller fixed bytes types.\n- IR Generator: Add missing cleanup for indexed event arguments of value type.\n- IR Generator: Fix internal error when copying reference types in calldata and storage to struct or array members in memory.\n- IR Generator: Fix IR syntax error when copying storage arrays of structs containing functions.\n- Natspec: Fix internal error when overriding a struct getter with a Natspec-documented return value and the name in the struct is different.\n- Type Checker: Fix internal error when a constant variable declaration forward references a struct.\n- Yul EVM Code Transform: Improved stack shuffling in corner cases.\n\n**Solc-Js:**\n\n- The wrapper now requires at least nodejs v10.\n- The code has been ported to TypeScript.\n\n**Build System:**\n\n- Emscripten builds store the embedded WebAssembly binary in LZ4 compressed format and transparently decompress on loading.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.12).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/02/22/solidity-summit-2022-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/02/22/solidity-summit-2022-announcement.json deleted file mode 100644 index ecb4fef1..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/02/22/solidity-summit-2022-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Summit 2022 Goes Amsterdam","date":"2022-02-22","author":"Franziska Heintel","category":"Announcements"},"content":"\nThe [Solidity Summit](https://summit.soliditylang.org/) is finally back! After a first [virtual Solidity Summit in 2020](https://blog.soliditylang.org/2020/06/09/solidity-summit-recap/), we are excited to announce an in-person event for 2022!\n\n**Solidity Summit 2022 is part of [Devconnect](https://devconnect.org/) and will happen on Wednesday, April 20 2022, in Amsterdam.**\n\n### What is the Solidity Summit?\n\nThe Solidity Summit is a collaborative event focusing on the future of Solidity. It's a get together for advanced Solidity users and other Solidity ecosystem stakeholders such as developers interested in language design, tooling builders, auditors and security researchers.\n\nDuring the event you can expect to:\n\n- Get up to speed with the latest language proposals and new features.\n- Hear updates from Solidity tooling and security experts.\n- Learn from Solidity power users.\n\nWe want to use the opportunity to get together not only to keep up with the newest developments in the Solidity space and to generally catch up with each other, but also to have useful language design related discussions that can result in language improvement proposals. Furthermore, we want to foster communication between teams working on similar topics, and identify needs for the smart contract ecosystem of Ethereum.\n\nWe would like to stress that this summit will be focusing especially on language design and tools/ecosystem and aims to collect community feedback on how to improve Solidity and the compiler. While developers writing Solidity contracts are very welcome to share their experience during the summit, this is probably not the conference where you’ll learn “how to develop dapps on Ethereum using Solidity”.\n\nFor a preliminary list of topics for the 2022 event, please have a look at the [Solidity Summit website](https://summit.soliditylang.org/#topics).\n\n### Speaker applications are open now.\n\nThe call for speakers is open! Please fill in [speaker form](https://docs.google.com/forms/d/e/1FAIpQLScTE8a1PiwVWcy42rvLCV5AuOzFflJ5kl5AeeQnAXtsT8I5SA/viewform) to apply for a speaking slot.\n\nNote that the Solidity Summit is focusing on an advanced audience, which means you can go \"deep\" into the Solidity weeds or technical stuff quickly!\n\n**Who is a good fit for a talk at the Solidity Summit?**\n\n- **Solidity Language Shapers**: You are a Solidity pro and interested in language design? → Join the Solidity Summit to present your language improvement proposals.\n- **Tooling Builders**: You build an IDE, debugger, analysis tool or testing framework? → Use the opportunity to share your tools and what you've been working on with the audience.\n- **Auditors & Security Researchers**: You frequently read or audit Solidity code and have useful tips, insights or ideas you want to share? → Present them to the audience at the Solidity Summit.\n- **Solidity Power Users**: You are a heavy Solidity user? → Share your best Solidity tips, hacks and feedback!\n\nDon't see yourself in the list but still think you have something relevant to share? Don't hesitate to apply for a talk in any case!\n\n### Looking forward to seeing you there!\n\nTo participate in the Solidity Summit, fill in the [application form for attendees](https://docs.google.com/forms/d/e/1FAIpQLScsZpCYji5iy7r3DjGcrPYxzdtvZztoTXJFr_Vlw_ArsAuTHw/viewform). Participation is free, but space is limited. Hence, please use the application form to give us more insight into why you want to attend the Solidity Summit. Please only apply for a ticket if you plan to attend the in-person event in Amsterdam.\n\nThe event will be live-streamed and recorded. We will share instructions on how to follow the Solidity Summit online on the [website](https://summit.soliditylang.org/) and via [Twitter](https://twitter.com/solidity_lang).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/03/16/encodecall-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/03/16/encodecall-bug.json deleted file mode 100644 index bfcf5672..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/03/16/encodecall-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"abi.encodeCall Literals Bug","date":"2022-03-16","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn March 10th, 2022, the Solidity team discovered a bug in the implementation of\n`abi.encodeCall` when used together with fixed-length bytes literals.\n\nIt was introduced together with `abi.encodeCall` in Solidity 0.8.11 and is fixed in 0.8.13.\n\nWe assigned the bug a severity of \"very low\".\n\n## Which Contracts are Affected?\n\nYou might be affected if you use `abi.encodeCall(f, (...))` where `f` takes a\n`bytesNN` parameter and you provide the value for that parameter either as a\nhex literal (`0x1234` or `hex\"abcd\"`) or\nas a string literal (`\"abcd\"`).\n\nIf you only pass variables to `abi.encodeCall`, your code is not affected.\n\n## Technical Details\n\nThe compiler did check that the types of the values are all implicitly convertible\nto the types of the parameters of the function (this was the main advantage of\n`abi.encodeCall` over `abi.encode` and the reason for adding the feature),\nbut it did not take the types properly into account when generating the code for\nthis function call. The generated code was still the same as the one for\n`abi.encode`, which just encodes according to the types of the arguments.\n\nThe problem is that literals like `0x1234` and `\"abcd\"` can be implicitly converted to\ndifferent types: The first can be converted to both `bytes2` and `uint16` and the\nsecond can be converted to `bytes4` and `bytes memory`.\n\nIn the first case, the compiler chose to encode `0x1234` as a `uint16`. This means it\nright-aligned it instead of left-aligning it for `bytes2`. In the second case, it\nwas encoded as `bytes memory`, which is a dynamic type, and thus at the place of\nthe `bytes4` value, an offset pointer was stored and additional data was added at the end.\n\nSince the bug is only present for literals (actual variables have proper types and\nimplicit conversions are always no-ops), it should be easy to detect with simple testing.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/03/16/solidity-0.8.13-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/03/16/solidity-0.8.13-release-announcement.json deleted file mode 100644 index ed39d4b6..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/03/16/solidity-0.8.13-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.13 Release Announcement","date":"2022-03-16","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.13](https://github.com/ethereum/solidity/releases/tag/v0.8.13)\nfixes an important bug related to `abi.encodeCall`, extends the `using for`\ndirective and implements \"go to definition\" for the language server.\n\nFurthermore, compiling via the new Yul IR pipeline is now considered production ready.\n\n## Important Bugs\n\nWhen `abi.encodeCall` was introduced in Solidity 0.8.11,\nhex literals (`0x1234`) and string literals (`\"abcd\"`) were not handled properly.\nPlease read more about it in the [security alert](https://blog.soliditylang.org/2022/03/16/encodecall-bug/).\n\n## Notable New Features\n\n### Yul IR Pipeline Production Ready\n\nWe have been working on Yul as an intermediate language for Solidity for several years now.\nYul in itself has been considered production ready for a while - at least since\nABI coder V2 was marked \"stable\", because it makes heavy use of Yul. The other part,\ncode generation from Solidity to Yul, can now also be considered stable and production ready.\n\nIt has been feature complete for several months now. Since the beginning, we always ran all our\ntests through both compiler pipelines. Over the previous weeks, we added several more complex\nreal-world contracts to our testing infrastructure and fixed some minor bugs in the component.\nThe new code generator has been very stable for a long time now. The main reason for not\nmarking it \"non-experimental\" earlier was that it still had problems with limited stack space,\nwhich we were able to fix now.\n\nYou can enable the new pipeline using the `--via-ir` commandline switch or by setting\n`settings.viaIR` to `true` in Standard JSON input (i.e. at the same level where\nyou would have the `optimizer` key).\n\nIt is not recommended to use the Yul compiler pipeline without the optimizer because the unoptimized output\nis primarily meant to be a straightforward transformation of the high-level Solidity code\nand it has many additional checks compared to the old compiler pipeline.\nThis makes it more\nmodular and easier to audit while the new Yul-based optimizer is powerful enough to remove redundancies\nfrom the optimized version. Without the optimizer, you are also more likely to run into \"stack too deep\"\nissues which can often be avoided by the optimizer as explained below.\n\nThe performance of the new pipeline is not yet always superior to the old one, but it\ncan do much higher-level optimization across functions, so please try it out and give us feedback!\n\nFinally, in some edge cases, code compiled via the new compiler pipeline\nbehaves differently than code compiled via the old compiler pipeline.\nThe most prominent is the initialization order of state variables that depend\non the result of constructors in other contracts.\nOthers are related to weird uses of modifiers, dependence of evaluation order inside\nstatements or dirty data. You can find a list of all the changes\nin our [documentation](https://docs.soliditylang.org/en/develop/ir-breaking-changes.html).\n\n### Memory-Safe Assembly / Stack Too Deep\n\nOne important feature of the new compiler pipeline is that the Yul optimizer can move stack variables to memory\nand thus avoid the \"stack too deep\" issue in a lot of cases. In order to do this safely, the compiler\nneeds to know that the memory slots it intends to use are not used by inline assembly.\n\nInline assembly is considered memory-safe if it only uses memory that has been previously allocated\neither by high-level Solidity code or by reading from the free memory pointer at `0x40`.\nAt the very beginning of the code, the compiler sets the free memory pointer to a position\nafter the area reserved for the stack variables that are moved to memory.\n\nThe compiler considers inline assembly blocks as memory safe only for\nvery simple blocks that do not have any opcodes that access memory and also do not access\nSolidity variables related to memory reference types.\nFor all other blocks, it is difficult to impossible to determine this automatically in a safe way\nand thus we added a syntactic mechanism for the developer to assert it:\n\n```solidity\nassembly (\"memory-safe\") { ... }\n```\n\nMarking an unsafe block as memory-safe can lead to undefined behavior\ndue to conflicts between stack variables and memory. The compiler will\nnot check that marked blocks are actually memory safe.\nPlease see the [documentation](https://docs.soliditylang.org/en/v0.8.13/assembly.html#memory-safety)\nfor more information about when an inline assembly block is memory safe.\n\nInline assembly blocks that access memory are not considered memory-safe by default and\neven a single such block disables the stack-to-memory mechanism for the whole contract.\nAssuming otherwise would be dangerous due to the risk of stack variables moved to memory being overwritten.\n\nIf you are e.g. writing a code library that is meant to be used across compiler versions,\nyou can also use a special comment syntax that has the same effect:\n\n```solidity\n/// @solidity memory-safe-assembly\nassembly { ... }\n```\n\nWe advise against using this syntax, though. Please always use the most recent compiler version.\n\n### `using for` at File Level with Global Binding\n\nThis release extends the `using for` directive considerably. It can now be used\nat file level, it is possible to use it with free functions and\nit has the option to make its effect global. We believe that in combination\nwith the recently released user-defined value types, this makes it possible\nto design nicely self-contained types.\n\nIn a future release, we plan to also add operators to user-defined types\nso that things like fixed-point type libraries are really easy to use\nand feel like compiler built-in types.\n\nYou can now use statements like `using {f, g, L.h} for Type;`, where `f`\nand `g` are free functions (defined at file level)\nand `L.h` is a library function.\n\nYou can also add the word `global` at the end to make the effect available\neverywhere. Since the idea is that you are defining a type and\nimplementing the functions of the type, `global` can only be used\nfor a user-defined type and only in the same file where the type is defined.\nWe recommend that the `using` directive is always put directly after the definition\nof the type (forward references are valid in Solidity).\n\nAs an example, let us consider a type that can only be incremented and decremented by one\nat a time. Because of this restriction, we can safely drop overflow checks\nsince it would take more gas than is available in the universe to reach\nan overflow.\n\nFile `\"restrictedNumber.sol\"`:\n\n```solidity\ntype RestrictedNumber is int256;\nusing {plusOne, minusOne} for RestrictedNumber global;\n\nfunction plusOne(RestrictedNumber x) pure returns (RestrictedNumber)\n{\n unchecked {\n return RestrictedNumber.wrap(RestrictedNumber.unwrap(x) + 1);\n }\n}\n\nfunction minusOne(RestrictedNumber x) pure returns (RestrictedNumber)\n{\n unchecked {\n return RestrictedNumber.wrap(RestrictedNumber.unwrap(x) - 1);\n }\n}\n\n/// This is a creation function that ensures that\n/// values are small enough. The idea is that the function\n/// RestrictedNumber.wrap should only be used in the file\n/// that defines the type, so that we have control over\n/// the invariants.\nfunction createRestrictedNumber(int256 value) pure returns (RestrictedNumber)\n{\n // Ensure that the number is \"small\".\n // Larger constants like 2**200 would also work.\n require(value <= 100 && -value <= 100);\n return RestrictedNumber.wrap(value);\n}\n```\n\nFile `\"owned.sol\"`:\n\n```solidity\nimport {RestrictedNumber} from \"./restrictedNumber.sol\";\n\ncontract Owned {\n RestrictedNumber public ownerCount;\n mapping(address => bool) public isOwner;\n\n constructor() {\n _addOwner(msg.sender);\n }\n\n function addOwner(address owner) external {\n require(isOwner[msg.sender]);\n _addOwner(owner);\n }\n\n function removeOwner(address owner) external {\n require(isOwner[msg.sender]);\n require(isOwner[owner]);\n // Because of `global`, we do not have to add\n // `using for` in the contract to use the\n // ``minusOne`` function.\n ownerCount = ownerCount.minusOne();\n isOwner[owner] = false;\n }\n\n function _addOwner(address owner) internal {\n require(!isOwner[owner]);\n ownerCount = ownerCount.plusOne();\n isOwner[owner] = true;\n }\n}\n```\n\n### \"Go to Definition\" for LSP\n\nThe Solidity Language Server has been further improved and received\none new feature: definition lookup of the underlying symbol.\n\nThis works on every symbol, such as local variables, return variables,\ntype names, but also on import statements.\n\nWe consider the official Solidity Language Server still as a preview,\nthat is, while it is already functional, there will be much more coming.\n\nPlease test it out and leave us some\n[feedback](https://github.com/ethereum/solidity/issues/new?template=feature_request.md&labels=language%20server)\nin our GitHub issue tracker.\n\n## Full Changelog\n\n**Important Bugfixes:**\n\n- Code Generator: Correctly encode literals used in `abi.encodeCall` in place of fixed bytes arguments.\n\n**Language Features:**\n\n- General: Allow annotating inline assembly as memory-safe to allow optimizations and stack limit evasion that rely on respecting Solidity's memory model.\n- General: `using M for Type;` is allowed at file level and `M` can now also be a brace-enclosed list of free functions or library functions.\n- General: `using ... for T global;` is allowed at file level where the user-defined type `T` has been defined, resulting in the effect of the statement being available everywhere `T` is available.\n\n**Compiler Features:**\n\n- Commandline Interface: Allow the use of `--via-ir` in place of `--experimental-via-ir`.\n- Compilation via Yul IR is no longer marked as experimental.\n- JSON-AST: Added selector field for errors and events.\n- LSP: Implements goto-definition.\n- Peephole Optimizer: Optimize comparisons in front of conditional jumps and conditional jumps across a single unconditional jump.\n- Yul EVM Code Transform: Avoid unnecessary `pop`s on terminating control flow.\n- Yul Optimizer: Remove `sstore` and `mstore` operations that are never read from.\n\n**Bugfixes:**\n\n- General: Fix internal error for locales with unusual capitalization rules. Locale set in the environment is now completely ignored.\n- Type Checker: Fix incorrect type checker errors when importing overloaded functions.\n- Yul IR Code Generation: Optimize embedded creation code with correct settings. This fixes potential mismatches between the constructor code of a contract compiled in isolation and the bytecode in `type(C).creationCode`, resp. the bytecode used for `new C(...)`.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.13).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/04/08/announcing-the-underhanded-contest-winners-2022.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/04/08/announcing-the-underhanded-contest-winners-2022.json deleted file mode 100644 index 1e59b902..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/04/08/announcing-the-underhanded-contest-winners-2022.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Announcing the Winners of the Underhanded Solidity Contest 2022","date":"2022-04-09","author":"Franziska Heintel & USC Judges","category":"Announcements"},"content":"\nThe time has come to share this year's winners of the [Underhanded Solidity Contest](https://underhanded.soliditylang.org/)!\n\nBefore we dive into the winning submissions, let's revisit the most important features of the USC:\n\nIn a nutshell, the USC is about finding loopholes or “hiding spots” in the Solidity language and using those to write seemingly innocent and straightforward-looking Solidity code which contains malicious behavior or backdoors.\n\nThe Underhanded Solidity Contest aims to...\n\n- Raise awareness about smart contract security.\n- Uncover language design faults.\n- Battle-test recently introduced language features and restrictions.\n- Highlight anti-patterns in smart contact development.\n- Establish new best practices for secure smart contract development.\n\nEach contest has a different theme or topic. [This year](https://blog.soliditylang.org/2022/02/09/underhanded-solidity-contest-2022-announcement/), the task was to build a decentralized exchange that looks fair, but can be “manipulated”.\n\nIn total, we received 19 submissions, 18 of which are eligible for a “qualified submission” Underhanded Solidity POAP NFT. You can find all 18 qualified submissions in [this repo](https://github.com/ethereum/solidity-underhanded-contest/tree/master/2022/submissions_2022).\n\nA big thank you and props to all participants for taking part!\n\nAs always, the judges were presented with anonymized submissions and only after the judging process was finished, the identities of the participants were disclosed.\n\nNow, without further ado, let's take a look at the winners, starting with the 3rd place!\n\n## Underhanded Solidity Contest 2022 Winners\n\n### 🥉 Third Place: [Michael Zhu](https://github.com/ethereum/solidity-underhanded-contest/tree/master/2022/submissions_2022/submission17_MichaelZhu)\n\n_commentary by [samczsun](https://twitter.com/samczsun)_\n\nThis submission is a simple but elegant reminder that not everything is as it seems. The contract implements a very simple NFT sale mechanism where buyers can place bids and sellers can accept them. For optimization purposes, the addresses of the two assets (the NFT being purchased and the token used for purchasing) are XOR'ed together to form a single unique key. The comments helpfully remind us that the odds of finding another pair of contract addresses which collide to the same key is statistically impossible.\n\nWhen a bid is accepted, `safeTransferFrom` is used to move the payment from the bidder to the sender, and `transferFrom` is used to move the NFT from the sender to the bidder. However, both ERC20 and ERC721 define a `transferFrom` function with the same parameters, which leads to them having the same selector. Furthermore, `safeTransferFrom` will succeed even if the token does not strictly comply with the ERC20 spec and returns no boolean. Finally, though it may be obvious to some, XOR is a commutative operation. Therefore, it's possible to accept a fake bid by swapping the ERC20 and ERC721 addresses when accepting a bid. This causes the NFT, rather than the payment token, to be transferred from the bidder. Clearly this is an undesirable result.\n\nAlthough in its simplified form, the underhanded nature of the optimization might be easily spotted (especially in the context of an underhanded competition), we think that it acts as a good proxy for teaching users how to look past what the code and comments might suggest and read between the lines. Similar methods of thinking lead to the discovery of the Anyswap exploit, and to a lesser extent, the various \"fake contract\" exploits.\n\n### 🥈 Second Place: [Santiago Palladino](https://github.com/ethereum/solidity-underhanded-contest/tree/master/2022/submissions_2022/submission10_SantiagoPalladino)\n\n_commentary by [Hari Mulackal](https://twitter.com/_hrkrshnn)_\n\nThe submission demonstrates what could go wrong if a non-standard signature scheme is used in contracts. The contract cleverly designs the `Order` struct in such a way that it can collide with the RLP encoding of an `approve` transaction. This allows an attacker to reuse the signature for the `approve` transaction to execute an order in the exchange!\n\nThere are several other issues with the implementation, and we leave it up to the reader to uncover all of them!\n\n### 🥇 First Place: [Tynan Richards](https://github.com/ethereum/solidity-underhanded-contest/tree/master/2022/submissions_2022/submission9_TynanRichards)\n\n_commentary by [Duncan Townsend](https://twitter.com/duncancmt)_\n\nThis submission is subtle. Very subtle. Nobody on our judging panel was able to\nspot the trick without the help of the spoiler file. Although the behavior\nexploited here is explicitly documented in the Solidity docs, it's absolutely not something\nthat programmers or security experts consider in their day-to-day.\n\nOn its face, this submission is a reasonably well implemented constant-product\nAMM. For those familiar with this kind of DEX, you'll probably recognize the\nformulas used for adding and removing liquidity, as well as the formula for\ntaking a fee on the swap. This AMM pair helpfully includes the logic required to\ncalculate input and output amounts without the help of a router. There are a\nnumber of security concerns that an auditor might catch in this contract that\nare not the core, catastrophic vulnerability that we're looking for here.\n\nIn order of least severe to most, some vulnerabilities caught by the judges are:\n\n- There's no ability for this AMM to provide a time-weighted average price\n oracle (or other form of manipulation resistant price oracle).\n- Liquidity isn't tokenized and can only be withdrawn by the same address that\n provided it.\n- The implementation of `sqrt` doesn't use the more common [Babylonian method](https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)\n and instead uses [Newton-Raphson](https://en.wikipedia.org/wiki/Newton%27s_method) to converge\n on the correct value.\n- `transferFundsIn` and `transferFundsOut` don't support ERC20 tokens that\n return nothing from their `transferFrom` and `transfer` functions. This is a\n common deviation from [the standard](https://eips.ethereum.org/EIPS/eip-20),\n which requires that those functions return `bool`. The various iterations of\n `SafeERC20` typically handle this.\n- There's no function for synchronizing the internal balances/reserves of the\n contract with its actual balances. If tokens move into or out of the contract\n outside of `transferFundsIn` or `transferFundsOut` (like a rebase or a direct\n call to `transfer`), that change in balances won't be accounted for.\n- There's no protection against loss-of-precision vulnerabilities in\n `addLiquidity` which reduces ratio of `totalSupply` to liquidity. However,\n this is effectively mitigated by the previous flaw.\n- There's no slippage parameter in `trade`, `addLiquidity`, or\n `removeLiquidity`, all of which can result in DEX interactions being\n [sandwiched](https://cmichel.io/de-fi-sandwich-attacks/) and the trader\n receiving a reduced payout.\n\nThe actual trick is far more catastrophic than any of these. The vulnerability\nlives in the way that admin fees are claimed. The author of this contract has\nhelpfully added a way for liquidity providers to exit the DEX if the admin of\nthe DEX sets the admin fee too large. A new admin fee can be scheduled, but it\nwon't take effect for 7 days, allowing liquidity providers to exit. However,\nthis protection is implemented wrong in a subtle and catastrophic way.\n\nIn Solidity, the order of evaluation of sub-expressions is _unspecified_. This\nmeans that in `f(g(), h())`, `g()` might get evaluated before `h()` or `h()`\nmight get evaluated before `g()`. Practically, this order is predictable, but\nSolidity code shouldn't depend on that behavior between compiler versions. In\n_most_ circumstances `g()` is evaluated before `h()` (left-to-right order),\nwhich is also the behavior that most languages specify in their\nstandards. However, in the case of emitting an event with indexed arguments, the\narguments are evaluated right-to-left.\n\nTherefore, when the admin calls `changeAdminFees`, `setNewAdminFee` is evaluated\n_before_ `retireOldAdminFee`. Since `retireOldAdminFee` calls `_claimAdminFees`,\nthe new fee is enacted before the tokens are accounted and transferred. The\n`require` on line 67 is effectively useless because the 7-day delay in\n`nextFeeClaimTimestamp` hasn't been set yet. Additionally, there's no cap on\n`newAdminFee`. It can bet set above `ONE` (10\\*\\*18), so it can be set high enough\nthat the _entire_ balance/reserves of the trading pair can be drained by the\nadmin.\n\nAlthough this submission is long and contains many red herrings, the judges\nchose it as our USC 2022 winner because of how the flaw is hidden in plain\nsight. A good unit test or fuzzer would definitely find this vulnerability, but\nmanual code review was unable to catch it. We applied the standard that a\nsuccessful USC submission is one that could trick a careful smart contract\ndeveloper into trusting it with their money, only to steal it anyways. In that\nregard, this contract is an absolute winner. Additionally, this submission\nhighlights an aspect of Solidity that most developers and auditors are probably\nunaware of. Order of evaluation of subexpressions doesn't usually matter, but in\nthis case, it makes all the difference.\n\nAnd here is [that documentation I\npromised](https://docs.soliditylang.org/en/v0.8.13/control-structures.html#order-of-evaluation-of-expressions).\n\n## Honorable Mentions\n\n### 💐 [William Bowling](https://github.com/ethereum/solidity-underhanded-contest/tree/master/2022/submissions_2022/submission4_WilliamBowling)\n\n_commentary by [Anton Permenev](https://twitter.com/a_permenev)_\n\nWith Solidity v0.8, developers don't have to think about the overflow in arithmetic operations.\n\nThis submission is a good reminder that bit shift `<<` and `>>` operators are not among the arithmetic ones, and thus don't revert on overflow.\n\nHowever, such operators are quite rare and their usage is suspicious and raises eyebrows.\n\n## Trick us at the next Underhanded Solidity Contest, anon!\n\nOnce again, the Underhanded Solidity Contest showed interesting anti-patterns and intriguing ways to embed malicious exploits into smart contract systems. We can't wait to see what you come up with next time!\n\nThanks to [ChainSecurity](https://chainsecurity.com/), [ConsenSys Diligence](https://diligence.consensys.net/), [Immunefi](https://immunefi.com/), [Solidified](https://solidified.io/), [Trail of Bits](https://www.trailofbits.com/), [Paradigm](https://www.paradigm.xyz/), the [Ethereum Foundation](https://ethereum.foundation/) for their support!\n\nLast but not least, we'd like to extend a big thank you to our amazing judges for helping us make this contest happen: Alex Beregszaszi, Anton Permenev, Duncan Townsend, Gonçalo Sá, Hari Mulackal, Josselin Feist, samczsun and Stefan Beyer. 👏\n\nWould you like to propose a topic for the next Underhanded Solidity Contest, provide feedback, or help with judging the next time? Then feel free to reach out to us at `sol_underhanded@ethereum.org`!\n\n_We will be in touch with all participants shortly with details on the claiming process for the NFTs as well as the main prizes._\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/05/03/solidity-summit-2022-recap.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/05/03/solidity-summit-2022-recap.json deleted file mode 100644 index 74ad80d1..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/05/03/solidity-summit-2022-recap.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Summit 2022 Recap","date":"2022-05-03","author":"Franziska Heintel","category":"Announcements"},"content":"\nWe can't believe it's already been two weeks since we met in Amsterdam for the second [Solidity Summit](https://summit.soliditylang.org/)!\n\n[Solidity Summit 2022](https://blog.soliditylang.org/2022/02/22/solidity-summit-2022-announcement/) was part of [Devconnect](https://devconnect.org/) and took place on Wednesday, April 20, 2022.\n\nWith roughly 250 participants, the event was well attended. In addition, approximately 400 people joined remotely by watching the [Livepeer livestream](https://streameth.tv/event/solidity-summit).\n\nThe day was packed with 20+ talks on\n\n- Solidity internals & deep dives\n- Solidity language design\n- Solidity tooling\n- Security\n- Programming patterns\n\n... and more.\n\nThe full agenda of the day can be found [here](https://summit.soliditylang.org/agenda.html). You can watch all talks by browsing through the individual videos in the [YouTube playlist](https://www.youtube.com/playlist?list=PLX8x7Zj6Vezl1lqBgxiQH3TFbRNZza8Fk) or see the entire [stream on StreamETH.tv](https://streameth.tv/event/solidity-summit).\n\n---\n\nSorted by topic, here are all talks with links to the recordings and slides.\n\n### Solidity Deep Dives\n\n- Solidity in 2022: Recent and Planned Features - Christian Reitwiessner\n - [Recording](https://youtu.be/V7_qTK5LIeA)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1010_ChristianReitwiessner_Solidity%20in%202022%20Recent%20and%20Planned%20Features.pdf)\n- The Solidity Optimizooooor - Hari Mulackal\n - [Recording](https://youtu.be/BWO7ij9sLuA)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1640_HariMulackal_The%20Solidity%20Optimizooooor.pdf)\n- Generating EVM Bytecode from Yul in the New Via-IR Pipeline - Daniel Kirchner\n - [Recording](https://youtu.be/RJQdycaEgIE)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1705_DanielKirchner_Generating%20EVM%20Bytecode%20from%20Yul%20in%20the%20New%20via-IR%20Pipeline.pdf)\n\n### Solidity Tooling\n\n- Foundry 101, a Hands-On Introduction - Odysseas\n - [Recording](https://youtu.be/3QlH1YvUPT4)\n - [Material](https://github.com/ethereum/solidity-summit/tree/master/2022/slides/1210_Odysseas_foundry101)\n- dΞth Crypto - Leo Logvinov\n - [Recording](https://youtu.be/PmgoZCo0CDk)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1350_LeoLogvinov_d%CE%9Eth%20Crypto.pdf)\n- Remix Hybrid Tools - Aniket\n - [Recording](https://youtu.be/Pm_z-p7Wgr0)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1405_Aniket_Remix_Hybrid_Modules.pdf)\n- Presenting @truffle/decoder - G. Nicholas D'Andrea\n - [Recording](https://youtu.be/dWjfzgyxTSU)\n- Human-Friendly Contract Interactions with Sourcify Verification - Kaan Uzdogan\n - [Recording](https://youtu.be/TJGCAeXkFwo)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1445_KaanUzdogan_Human%20Friendly%20Contract%20Interactions%20with%20Sourcify%20Verification.pdf)\n- PRBMath: A Smart Contract Library for Fixed-Point Math - Paul Razvan Berg\n - [Recording](https://youtu.be/dqbN7WlhCLg)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1515_PaulRazvanBerg_PRBMath_A_Smart_Contract_Library_for_Fixed_Point_Math.pdf)\n- IntelliJ Solidity Debugger - Conor Svensson & Andrii Kliui\n - [Recording](https://youtu.be/eCzXyNZoQbc)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1530_ConorSvensson_AndriiKliui_IntelliJ%20Solidity%20Debugger.pdf)\n\n### Security & Solidity Coding Practices\n\n- Thanks for all the bugs! - Yannis Smaragdakis\n - [Recording](https://youtu.be/hcRY0oMscoM)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1045_YannisSmaragdakis_Thanks%20for%20all%20the%20bugs.pdf)\n- Good Practices from a Data Analyst Perspective - wei3erhase\n - [Recording](https://youtu.be/-E-nG2GyDQQ)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1110_Wei%C3%9FerHase_Good%20practices%20from%20a%20Data%20Analyst%20Perspective.pdf)\n- Mocking of Internal Functions in Solidity Unit Tests - Jason Smythe\n - [Recording](https://youtu.be/f-YaeM9FjlE)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1140_JasonSmythe_Solidity%20Internal%20Function%20Mocking.pdf)\n- Create 2 Patterns - Fred\n - [Recording](https://youtu.be/E9usgNS6du0)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1155_Fred_Create2%20Patterns.pdf)\n- Hybrid Attack Synthesis for DeFi - Jon Stephens\n - [Recording](https://youtu.be/jYQEELTQtNM)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1500_JonStephens_Hybrid_Attack_Synthesis_for_DeFi.pdf)\n- Underhanded Solidity Contest Winner Presentations\n - [Tynan Richards](https://youtu.be/JicU29EBaCo)\n - [Santiago Palladino](https://youtu.be/JicU29EBaCo?t=583)\n - [Michael Zhu](https://youtu.be/JicU29EBaCo?t=919)\n\n### Language Design & Yul\n\n- What would Solidity look like if it was built today? - John Adler\n - [Recording](https://youtu.be/u9uCdTWg9X4)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1600_JohnAdler_What%20would%20Solidity%20look%20like%20if%20it%20was%20built%20today_.pdf)\n- Bootstrapping a Compiler with Yul - Grant Wuerker\n - [Recording](https://youtu.be/8RGBB7xwaBs)\n - [Slides](https://github.com/ethereum/solidity-summit/blob/master/2022/slides/1615_GrantWuerker_Bootstrapping%20a%20Compiler%20with%20Yul.pdf)\n\nWe hope you enjoyed the day as much as we did! We are looking forward to the next Solidity Summit already and thank you all for your eager participation.\n\nIn the meantime, feel free to send feedback and ideas for the upmcoming summits our way (`sol-summit[at]ethereum.org`) and see you all soon!\n\n![Solidity Summit 2022](/img/2022/05/solidity_summit.png)\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/05/17/calldata-reencode-size-check-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/05/17/calldata-reencode-size-check-bug.json deleted file mode 100644 index bd8e782e..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/05/17/calldata-reencode-size-check-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Size Check Bug in Nested Calldata Array ABI-Reencoding","date":"2022-05-17","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn April 7, 2022, a bug in the Solidity code generator was reported by\nJohn Toman of the Certora development team. Certora's bug disclosure post can be found [here](https://medium.com/certora/incorrect-calldata-validation-in-inter-contract-communication-certora-bug-disclosure-8a467ce92ca3).\n\nThe bug is fixed with [Solidity version 0.8.14](https://github.com/ethereum/solidity/releases/tag/v0.8.14)\nreleased on May 17, 2022. The bug was first introduced in Solidity version 0.5.8.\n\nWe assigned the bug a severity of \"very low\".\n\n## Which Contracts are Affected?\n\nYou might be affected if you pass a nested array directly to another external\nfunction call or use `abi.encode` on it.\n\nIf calldata is malformed in a certain way, the call might not revert as it should.\nInstead, data with extra zeros at the end is passed on to the called contract or to the `abi.encode` function.\n\n## Technical Details\n\nCalldata validation for nested dynamic types is deferred until the first access\nto the nested values. Such an access may for example be a copy to memory or an\nindex or member access to the outer type. While in most such accesses calldata\nvalidation correctly checks that the data area of the nested array (see [the ABI\nencoding specification](https://docs.soliditylang.org/en/develop/abi-spec.html#use-of-dynamic-types))\nis completely contained in the passed calldata (i.e. in\nthe range `[0, calldatasize()]`), this check may not be performed, when ABI\nencoding such nested types again directly from calldata.\n\nFor instance, this can happen, if a value in calldata with a nested dynamic array is\npassed to an external call, used in `abi.encode` or emitted as event.\nIn such cases, if the data area of the nested array extends beyond `calldatasize()`,\nABI encoding it did not revert, but continued reading values from beyond\n`calldatasize()` (i.e. zero values).\n\nFor example, in this contract:\n\n```solidity\ncontract C {\n\tevent e(uint[][]);\n\tfunction g(uint[][] calldata) external { ... }\n\tfunction f(uint[][] calldata a) external pure {\n\t\tbytes memory data = abi.encode(a);\n\t\tthis.g(a);\n\t\temit e(a);\n\t}\n}\n```\n\nA call to `f` with corrupted calldata, in which an element of `a` has a data area that extends\nbeyond `calldatasize`, will not revert.\n\nHowever, each of the following cases will properly validate against `calldatasize` and will revert\nwith similarly corrupted calldata. This is because the calldata array is only being decoded rather than\ndecoded and encoded back in a single operation. This is handled by a different code path in the compiler that\nis unaffected by this bug:\n\n```solidity\ncontract C {\n\tfunction f1(uint[][] calldata a) external pure {\n\t\ta[0]; // Where a[0] is the element that extends beyond ``calldatasize``.\n\t}\n\tuint[][] s;\n\tfunction f2(uint[][] calldata a) external pure {\n\t\ts = a;\n\t}\n\tfunction f2(uint[][] calldata a) external pure {\n\t\tuint[][] memory x = a;\n\t}\n}\n```\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/05/17/data-location-inheritance-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/05/17/data-location-inheritance-bug.json deleted file mode 100644 index 3cd0f8a3..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/05/17/data-location-inheritance-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Bug Concerning Data Location during Inheritance","date":"2022-05-17","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn February 5th 2021, Nicolas Venturo reported a bug that allows\noverriding functions to change the data location of parameters from\n`memory` to `calldata`.\n\nThe bug was introduced in Solidity 0.6.9 together with the ability to use `calldata`\ndata location for all variables (and not just parameters of external functions).\n\nWe assigned the bug a severity of \"very low\".\n\n## Which Contracts are Affected?\n\nThe effect of the bug is that a memory pointer is interpreted as a calldata pointer\nor vice-versa. It can only happen if you change the data location of a function\nduring inheritance and perform an internal call at a location that is only aware of\nthe original function signature from the base contract.\n\nOne case is that you have a base contract where you perform an internal call\nto a virtual function of the same base contract and there is a derived contract\nthat overrides the base contract's function and changes the data location.\n\n```solidity\nabstract contract I {\n // The base contract uses \"calldata\"\n function f(uint[] calldata x) virtual internal;\n}\ncontract C is I {\n // The derived contract uses \"memory\" and the compiler\n // does not complain - this is the bug in the compiler.\n function f(uint[] memory x) override internal {\n // If you use `x`, it will access memory\n // even if `D.g` passed us a calldata pointer.\n // This leads to the wrong data being accessed.\n }\n}\nabstract contract D is I {\n function g(uint[] calldata x) external {\n // Since D only \"knows\" `I`, the signature of `f`\n // uses calldata, while the virtual lookup ends\n // up with `C.f`, which uses memory. This results\n // in the calldata pointer `x` being passed and\n // interpreted as a memory pointer.\n f(x);\n }\n}\ncontract X is C, D { }\n```\n\nIn the example above, the bug will only manifest itself in\n`X`, which combines the faulty override in `C` with the\nvirtual function call in `D`.\n\nIt is likely that any test covering the affected function call\nwill be able to detect the problem.\n\nExternal calls are not affected, and it is actually not a problem\nto change the data location between `calldata` and `memory`\nfor `external` functions. This is also how the bug was introduced:\nThe compiler did not distinguish between `calldata` and `memory`\nin inheritance because it does not matter for `external` functions\nand `calldata` was only allowed inside `external` functions.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/05/17/solidity-0.8.14-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/05/17/solidity-0.8.14-release-announcement.json deleted file mode 100644 index bcf0d19d..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/05/17/solidity-0.8.14-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.14 Release Announcement","date":"2022-05-18","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.14](https://github.com/ethereum/solidity/releases/tag/v0.8.14)\nfixes two important bugs.\n\nThe first one is related to ABI-encoding nested arrays directly from calldata.\nYou can find more information in the [blog post](/2022/05/17/calldata-reencode-size-check-bug/).\n\nThe second bug is triggered in certain inheritance structures and can\ncause a memory pointer to be interpreted as a calldata pointer or\nvice-versa. We also have a dedicated [blog post](/2022/05/17/data-location-inheritance-bug/) about this bug.\n\nApart from these, there are several minor bug fixes and improvements.\n\n_Please note: Unfortunately, the npm wrapper package of this version is corrupted. Using the new `soljson.js` with solc-js 0.8.13 will work, but the 0.8.14 npm release (now marked as deprecated) is missing a file and due to that does not work properly. We released [0.8.14-fixed](https://www.npmjs.com/package/solc/v/0.8.14-fixed) in case you need a working npm package as dependency. Note however, that npm will not pick it up automatically._\n\n## Full Changelog\n\nImportant Bugfixes:\n\n- ABI Encoder: When ABI-encoding values from calldata that contain nested arrays, correctly validate the nested array length against `calldatasize()` in all cases.\n- Override Checker: Allow changing data location for parameters only when overriding external functions.\n\nCompiler Features:\n\n- Assembly-Json Exporter: Include source list in `sourceList` field.\n- Commandline Interface: Option `--pretty-json` works also with the following options: `--abi`, `--asm-json`, `--ast-compact-json`, `--devdoc`, `--storage-layout`, `--userdoc`.\n- Language Server: Allow full filesystem access to language server.\n- Peephole Optimizer: Remove operations without side effects before simple terminations.\n- SMTChecker: Support `abi.encodeCall` taking into account the called selector.\n\nBugfixes:\n\n- Assembly-Json Exporter: Fix assembly json export to store jump types of operations in `jumpType` field instead of `value`.\n- SMTChecker: Fix ABI compatibility with z3 >=4.8.16.\n- SMTChecker: Fix bug when z3 is selected but not available at runtime.\n- Type Checker: Properly check restrictions of `using ... global` in conjunction with libraries.\n- TypeChecker: Convert parameters of function type to how they would be called for `abi.encodeCall`.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.14).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/06/15/dirty-bytes-array-to-storage-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/06/15/dirty-bytes-array-to-storage-bug.json deleted file mode 100644 index d8dace31..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/06/15/dirty-bytes-array-to-storage-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Bug when Copying Dirty Bytes Arrays to Storage","date":"2022-06-15","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn July 1, 2021, a bug in the Solidity code generator was found by differential fuzzing.\nThe bug causes the legacy code generation pipeline to generate code that\nmay write dirty values to storage when copying `bytes` arrays from `calldata` or `memory`.\n\nInitially, it was assumed that the dirty values in storage are only observable using inline\nassembly. However, resizing a `bytes` array using an empty `.push()` without actually\nwriting values to it, can expose the dirty bytes without any use of inline assembly.\n\nThe bug was already present in the initial implementation of `bytes` arrays in very early versions of the compiler.\nDespite this, it was never exploited or reported externally, and therefore we assigned it a severity of \"low\".\n\n## Which Contracts are Affected?\n\nMost instances of copying `bytes` arrays from `memory` or `calldata` to `storage` can be affected\nin the sense that they may write dirty values. Those dirty values in storage only become visible,\nif there are empty `.push()`es to the `bytes` array (in older version also assignments to its\n`.length` field) and the resulting elements are assumed to be zero without actually writing to them.\n\nFor example, the following used to result in the newly `.push()`ed array element in `h()` not being zero:\n\n```solidity\ncontract C {\n event ev(uint[], uint);\n bytes s;\n constructor() {\n // The following event emission involves writing to temporary memory at the current location\n // of the free memory pointer. Several other operations (e.g. certain keccak256 calls) will\n // use temporary memory in a similar manner.\n // In this particular case, the length of the passed array will be written to temporary memory\n // exactly such that the byte after the 63 bytes allocated below will be 0x02. This dirty byte\n // will then be written to storage during the assignment and become visible with the push in ``h``.\n emit ev(new uint[](2), 0);\n bytes memory m = new bytes(63);\n s = m;\n }\n function h() external returns (bytes memory) {\n s.push();\n return s;\n }\n}\n```\n\nSimilarly, dirty values from `calldata` may end up being copied to storage:\n\n```solidity\ncontract C {\n bytes public s;\n function f(bytes calldata c) external returns (bytes memory) {\n s = c;\n s.push();\n return s;\n }\n}\n```\n\nThe function `f` here can be called with dirty bytes in calldata past the length of `c`, which\nwill be copied to `s` and become visible after `s.push()`.\n\nHowever, the fact that this bug remained undiscovered until now indicates that real projects do not seem to depend\non the fact that empty `.push()`es to `bytes` arrays are supposed to add a zeroed new element.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/06/15/inline-assembly-memory-side-effects-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/06/15/inline-assembly-memory-side-effects-bug.json deleted file mode 100644 index 58b88f2e..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/06/15/inline-assembly-memory-side-effects-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Optimizer Bug Regarding Memory Side Effects of Inline Assembly","date":"2022-06-15","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn June 5, 2022, [John Toman of the Certora development team reported an optimizer bug](https://medium.com/certora/overly-optimistic-optimizer-certora-bug-disclosure-2101e3f7994d)\nthat can cause memory writes in inline assembly blocks to be incorrectly removed\nunder certain conditions.\n\nThe bug was introduced in Solidity 0.8.13 with a new Yul optimizer step meant to\nremove unused writes to memory and storage.\n\nWe assigned the bug a severity of \"medium\".\n\n## Which Contracts are Affected?\n\nThe Yul optimizer considers all memory writes in the outermost Yul block that are\nnever read from as unused and removes them. This is valid when that Yul block is\nthe entire Yul program, which is always the case for the Yul code generated by the\nnew via-IR pipeline. Inline assembly blocks are never optimized in isolation when\nusing that pipeline. Instead they are optimized as a part of the whole Yul input.\n\nHowever, the legacy code generation pipeline (which is still the default) runs the\nYul optimizer individually on an inline assembly block if the block does not refer\nto any variables defined in the surrounding Solidity code. Consequently, memory\nwrites in such inline assembly blocks are removed as well, if the written memory is\nnever read from in the same assembly block, even if the written memory is accessed\nlater, for example by a subsequent inline assembly block.\n\nFortunately, the fact that the legacy code generation pipeline does not run the Yul\noptimizer at all on inline assembly blocks that do access Solidity variables,\nreduces the number of affected cases significantly. Most inline assembly blocks either\nread or write values from or to variables defined in the surrounding Solidity code,\nare entirely self-contained, or take over the program flow until the end of\nthe transaction. Thereby, the bug is unlikely to occur in practice and its adverse\neffects should in most cases be easily detectable in tests. However,\nsince the consequences in affected cases can be severe, we assigned it a severity\nof \"medium\".\n\nIn the following example, the legacy code generation pipeline with enabled optimizer will\nremove the `mstore` instruction and the function `f` will return zero:\n\n```solidity\ncontract C {\n function f() external pure returns (uint256 x) {\n assembly {\n mstore(0, 0x42)\n }\n assembly {\n x := mload(0)\n }\n }\n}\n```\n\nHowever, if the same memory is either read again in the same inline assembly block\nor if the inline assembly block accesses any local Solidity variables, the bug is\nnot present. Both is the case in the following example, so `f` will return\n`0x42` as expected:\n\n```solidity\ncontract C {\n function f() external pure returns (uint256 x) {\n assembly {\n mstore(0, 0x42)\n x := mload(0)\n }\n }\n}\n```\n\nIn the following example, the first `mstore` will not be removed, since the written memory\nis read again by the `return`. The second `mstore` on the other hand will be removed, since the memory\nit writes is never read again. In this case, this is a valid optimization and the example is not adversely\naffected by the bug. Generally, any assembly block that terminates the transaction or does not have memory side-effects that\nneed to be observed afterwards is unaffected.\n\n```solidity\ncontract C {\n function f() external {\n assembly {\n mstore(0, 0x42) // This write will be kept, since the return below reads from the memory.\n mstore(32, 0x21) // This will be removed, but that is valid since the memory is never read again.\n return(0, 32)\n }\n }\n}\n```\n\nThe most dangerous cases affected by the bug are those, in which fixed memory offsets are used to store intermediate\nvalues in one assembly block (e.g. in a helper function), which are then only used in a subsequent assembly block.\n\n```solidity\ncontract C {\n function callHelper() internal view {\n assembly {\n let ret := staticcall(gas(), address(), 0, 0, 0, 0)\n if eq(ret, 0) {\n revert(0, 0)\n }\n returndatacopy(0, 0, 128) // This will be removed due to the bug.\n }\n }\n function f() external view returns(uint256 x) {\n callHelper();\n assembly {\n // This consumes the memory write by the helper, which was incorrectly removed.\n x := keccak256(0, 128)\n }\n }\n}\n```\n\nHowever, we found it to be uncommon for such patterns to occur: usually, an assembly block either reads from or writes\nto at least one local Solidity variable, consumes the memory it writes directly, or takes over control until the end of\nthe transaction. This is partly due to the fact that using fixed memory offsets for intermediate values between assembly\nblocks is in itself dangerous, since you need to ensure that the Solidity code between the assembly blocks does not overwrite\nthe memory again.\n\nA potentially severely affected pattern would be to reserve static memory at the beginning of the transaction by a write to the\nfree memory pointer (which will be removed due to the bug):\n\n```solidity\ncontract C {\n // Modifier meant to allow the safe use of 64 bytes of static memory at offset 0x80.\n modifier reserveStaticMemory() {\n assembly {\n // Assert that this is called with the expected initial value of the free memory pointer.\n if iszero(eq(mload(0x40), 0x80)) { revert(0, 0) }\n // Reserve 64 bytes of memory between 0x80 and 0xC0.\n mstore(0x40, 0xC0) // This write will be removed due to the bug.\n }\n _;\n }\n function someHelper(bytes calldata s) internal pure {\n bytes32 hash = keccak256(s);\n assembly {\n // Store some intermediate values to the supposedly reserved memory.\n mstore(0x80, 0x12345678)\n mstore(0xA0, hash)\n }\n }\n function f(bytes calldata s, bytes calldata y) external view reserveStaticMemory returns(uint256 x) {\n someHelper(s);\n bytes32 hash = keccak256(y); // Since the free memory pointer was not actually bumped, this will overwrite the memory at 0x80.\n assembly {\n x := keccak256(0x80, 0x40) // The memory expected here will have been overwritten.\n x := xor(x, hash)\n }\n }\n}\n```\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/06/15/solidity-0.8.15-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/06/15/solidity-0.8.15-release-announcement.json deleted file mode 100644 index d47a2748..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/06/15/solidity-0.8.15-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.15 Release Announcement","date":"2022-06-15","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.15](https://github.com/ethereum/solidity/releases/tag/v0.8.15)\nfixes two important bugs, improves inlining heuristics and adds a `.selector` member for errors and events.\n\n## Important Bugs\n\nThe first one is an optimizer bug that can lead to memory write operations in inline assembly being removed if\nthe result of such an operation is not read back from within the same assembly block.\nThe bug can be triggered only when using the default legacy compiler pipeline (the new compilation pipeline via\nIR is not affected) and happens only in assembly blocks that never access Solidity variables defined in the\nsurrounding code.\nThe bug affects only versions 0.8.13 and 0.8.14 and we strongly encourage users of those versions to update their compiler.\nWhile we deem the problem unlikely to occur and go undetected in practical applications, which significantly lowers the overall\nseverity, when it does happen, it may lead to serious issues.\nSee [Optimizer Bug Regarding Memory Side Effects of Inline Assembly](/2022/06/15/inline-assembly-memory-side-effects-bug/)\nfor more information.\n\nThe second bug may result in a `.push()` operation on a `bytes` array in storage appending\nbytes that are not properly zero-initialized if the array was originally copied from memory or calldata.\nThis, again, can be triggered only when using the legacy code generation pipeline.\nSee [Bug when Copying Dirty Bytes Arrays to Storage](/2022/06/15/dirty-bytes-array-to-storage-bug/)\nfor more information.\n\n## Notable New Features\n\n### Improved Inlining Heuristics in Yul Optimizer\n\nThe compiler used to be very conservative in deciding whether to inline a function or not.\nThis was necessary due to the fact that inlining may easily increase stack pressure and lead to the dreaded \"Stack too deep\" error.\n\nNow that the mechanism for moving variables from stack to memory is available for the IR pipeline, we were able to relax\nthe conditions necessary for inlining.\nThe optimizer will now inline slightly bigger functions as long as nothing prevents the mechanism from being used.\nIf you want to benefit from it, make sure that your inline assembly blocks are\n[memory safe](https://docs.soliditylang.org/en/latest/assembly.html#memory-safety).\n\nOur benchmarks show that the change significantly decreases the bytecode size (which impacts the deployment cost) while the effect\non the runtime gas usage is smaller.\nThe following table shows the overall differences between 0.8.14 and 0.8.15 that we observed when using the IR-based pipeline to run\ntest suites of several real-life projects in our CI:\n\n| project | Bytecode size | Deployment gas | Runtime gas |\n| :----------------: | --------------: | --------------: | --------------: |\n| ENS | | **`-4.85% ✅`** | **`-0.29% ✅`** |\n| Euler | **`-2.43% ✅`** | **`-1.68% ✅`** | **`-2.08% ✅`** |\n| Gnosis Safe | **`-3.87% ✅`** | **`-4.31% ✅`** | **`-0.02% ✅`** |\n| Gnosis Protocol v2 | **`-3.95% ✅`** | **`-2.55% ✅`** | **`-0.07% ✅`** |\n| Perpetual Pools | **`-4.55% ✅`** | **`-2.64% ✅`** | **`-1% ✅`** |\n| Pool Together | **`-7.09% ✅`** | **`-5.59% ✅`** | **`-0.37% ✅`** |\n| PRBMath | **`-3.56% ✅`** | **`-3.49% ✅`** | |\n| Trident | **`-9.84% ✅`** | **`-7.98% ✅`** | **`-6.26% ✅`** |\n| Uniswap v3 | **`-4.32% ✅`** | **`-4.53% ✅`** | **`-1.24% ✅`** |\n| Yield Liquidator | **`-7.13% ✅`** | **`-6.08% ✅`** | **`-0.5% ✅`** |\n| OpenZeppelin | **`-7.83% ✅`** | **`-6.01% ✅`** | **`-0.28% ✅`** |\n\n### Error and Event Selectors\n\nSelectors of external functions can be accessed via the `.selector` member.\nNow this member is available also [on non-anonymous events](https://docs.soliditylang.org/en/latest/contracts.html#members-of-events) and\n[on custom errors](https://docs.soliditylang.org/en/latest/contracts.html#members-of-errors).\n\nNote that for events the selector represents the topic 0, which, unlike error and function selectors, is not truncated to 4 bytes.\n\n## New or Improved Documentation\n\n### Dangling References\n\nWe have recently received vulnerability reports about cases where normal use of language features may leave the user with\na dangling reference and lead to data being overwritten in storage.\nUnfortunately, this is a natural consequence of the current design of the language and not a bug that can be simply fixed.\nSolidity strongly restricts the use of references to value types, but the possibility to store references to elements of\narrays of arrays in local variables together with the ability to resize them has always meant that the target of a reference may disappear.\nWhat the newly reported cases uncovered is that there are some unusual patterns which may produce dangling references\nin situations where they may not be expected.\nTo make this more transpared and raise awareness we prepared a new documentation section that goes into more detail about the topic:\n[Dangling References to Storage Array Elements](https://docs.soliditylang.org/en/latest/types.html#dangling-references-to-storage-array-elements).\nThanks go to Kuroi with Binance Smart Contract Security Team and Red Team for reporting this!\n\n## Full Changelog\n\nImportant Bugfixes:\n\n- Code Generation: Avoid writing dirty bytes to storage when copying `bytes` arrays.\n- Yul Optimizer: Keep all memory side-effects of inline assembly blocks.\n\nLanguage Features:\n\n- Add `E.selector` for a non-anonymous event `E` to access the 32-byte selector topic.\n\nCompiler Features:\n\n- LSP: Add rudimentary support for semantic highlighting.\n- Type Checker: Warn about assignments involving multiple pushes to storage `bytes` that may invalidate references.\n- Yul Optimizer: Improve inlining heuristics for via IR code generation and pure Yul compilation.\n\nBugfixes:\n\n- ABI Encoder: When encoding an empty string coming from storage do not add a superfluous empty slot for data.\n- Common Subexpression Eliminator: Process assembly items in chunks with maximum size of 2000. It helps to avoid extremely time-consuming searches during code optimization.\n- Yul Optimizer: Do not remove `returndatacopy` in cases in which it might perform out-of-bounds reads that unconditionally revert as out-of-gas. Previously, any `returndatacopy` that wrote to memory that was never read from was removed without accounting for the out-of-bounds condition.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity [here](https://github.com/ethereum/solidity/releases/tag/v0.8.15).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/08/08/calldata-tuple-reencoding-head-overflow-bug.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/08/08/calldata-tuple-reencoding-head-overflow-bug.json deleted file mode 100644 index f1b66047..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/08/08/calldata-tuple-reencoding-head-overflow-bug.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Head Overflow Bug in Calldata Tuple ABI-Reencoding","date":"2022-08-08","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn July 5, 2022, Chance Hudson ([@vimwitch](https://github.com/vimwitch)) from the Ethereum Foundation discovered a bug in the Solidity code generator.\n\nThe earliest affected version of the compiler is 0.5.8, which introduced ABI-reencoding of calldata arrays and structs.\n[Solidity version 0.8.16](https://github.com/ethereum/solidity/releases/tag/v0.8.16), released on August 08, 2022, provides a fix.\n\nWe assigned the bug a severity of \"medium\".\n\n## Which Contracts are Affected?\n\nThe effects of the bug manifest when a contract performs ABI-encoding of a tuple that meets **all** of the following conditions:\n\n1. The last component of the tuple is a (potentially nested) statically-sized calldata array with the most base type being either `uint` or `bytes32`.\n E.g. `bytes32[10]` or `uint[2][2][2]`.\n2. The tuple contains at least one dynamic component.\n E.g. `bytes` or a struct containing a dynamic array.\n3. The code is using ABI coder v2, which is the default since Solidity 0.8.0.\n\nNote that structs are represented as tuples in the ABI.\nParameter and return value lists of external functions, events and errors are also implicitly treated as tuples.\n\nThe bug can be triggered by explicit use of the `abi.encode...` family of functions as well as the ABI-encoding performed\nimplicitly for external functions, events and errors by the compiler.\n\nThe bug is independent of the use of the optimizer and affects both the legacy and the IR-based compilation pipelines.\n\n## Technical Details\n\nThe bug is the result of overly eager cleanup performed by the compiler when copying calldata arrays to memory during ABI-encoding.\nArrays in memory always occupy a multiple of 32 bytes and when the base type does not fill the whole word,\nthe unused space is guaranteed to be zeroed and remain clean after all high-level Solidity operations.\nIn the affected cases the compiler would emit code that incorrectly cleaned the end of an array stored in the last component of a tuple,\nzeroing 32 bytes belonging to the first dynamic component of the tuple.\n\n### Aggressive Array Cleanup\n\nWhen the input for the ABI encoder comes from calldata, large parts of it can simply be copied to the output.\nThe encoder, however, must ensure that the unused spaces between elements are actually\n[cleaned](https://docs.soliditylang.org/en/latest/internals/variable_cleanup.html).\n\nDepending on the types, more or less work may be needed and the encoder has several code paths for handling them.\nOne of them was designed for (possibly multi-dimensional) arrays of simple value types that fill the whole word,\ni.e. `uint` and `bytes32`, as well as byte arrays, i.e. `bytes` and `string`.\nIn this case, due to tight packing of array elements, only the area past the array may need cleanup and that\narea is never larger than 32 bytes.\n\nThe cleanup was being performed using a single `mstore()` instruction, which always writes exactly 32 bytes.\nThis was not considered harmful because of the order in which the encoder writes tuple components.\nThe space after any given tuple component was assumed to be safe to write because it would eventually be\noverwritten with the data belonging to the next component.\n\nThe cleanup is necessary only in the byte array case, but due to the shared code path was also being\nperformed for `uint` and `bytes32`.\nThis is completely redundant, but was overlooked in the initial implementation and not discovered\nuntil now, likely because it does not produce clearly visible side-effects in simple cases.\nThe redundant instruction may even be removed by the optimizer in newer versions of the compiler.\n\nIn order to explain why the assumption turned out to be incorrect, let us take a closer look at\nthe layout of an ABI-encoded tuple.\n\n### Layout and Encoding Order of Static and Dynamic Tuples\n\n[The ABI encoding of a tuple](https://docs.soliditylang.org/en/latest/abi-spec.html#formal-specification-of-the-encoding)\nconsists of two areas - the statically encoded _head_ and the dynamically encoded _tail_.\nEvery static component is placed directly in the head area while for dynamic ones, the head contains only the offset\nof the location within the tail where the data is stored.\nThis layout ensures that component locations within the head are fixed and any of them can be accessed without the need to decode all\nthe components that precede it.\n\n#### Static Encoding Example\n\nLet us consider the following example that encodes a tuple with no dynamic components:\n\n```solidity\nstruct S {\n address x;\n uint[3] y;\n}\n\ncontract C {\n function f(bool a, S calldata b, bytes32[2] calldata c) public {}\n}\n```\n\nAn example call to `C.f()` with the following input:\n\n```solidity\nf(true, S(0x1111111111222222222233333333334444444444, [uint(11), 12, 13]), [bytes32(\"a\"), \"b\"])\n```\n\nwould encode its arguments as follows:\n\n```\n0x0000000000000000000000000000000000000000000000000000000000000001 a\n0x0000000000000000000000001111111111222222222233333333334444444444 b.x\n0x000000000000000000000000000000000000000000000000000000000000000b b.y[0]\n0x000000000000000000000000000000000000000000000000000000000000000c b.y[1]\n0x000000000000000000000000000000000000000000000000000000000000000d b.y[2]\n0x6100000000000000000000000000000000000000000000000000000000000000 c[0]\n0x6200000000000000000000000000000000000000000000000000000000000000 c[1]\n```\n\nThe encoded tuple has no tail and is laid out in the following way:\n\n```\n|---------------------------------------------------|\n| HEAD |\n|------------+-------------------------+------------|\n| value of a | value of b | value of c |\n| bool | S | bytes32[2] |\n| |-------------------------| |\n| | HEAD of S | |\n| |------------+------------| |\n| | value of x | value of y | |\n| | address | uint[3] | |\n|------------+------------+------------+------------|\n| 1 | 2 | 3 | 4 |\n|------------+------------+------------+------------|\n```\n\nThe numbers at the bottom indicate the order in which the components are written by the encoder.\n\n#### Dynamic Encoding Example\n\nThe example below uses a very similar tuple but with one of the static fields replaced by a dynamic one:\n\n```solidity\nstruct T {\n bytes x;\n uint[3] y;\n}\n\ncontract D {\n function f(bool a, T calldata b, bytes32[2] calldata c) public { }\n}\n```\n\nIn this case a call to `D.f()` with the following input:\n\n```solidity\nf(true, T(\"abcd\", [uint(11), 12, 13]), [bytes32(\"a\"), \"b\"])\n```\n\nresults in a vastly different encoding:\n\n```\n0x0000000000000000000000000000000000000000000000000000000000000001 a\n0x0000000000000000000000000000000000000000000000000000000000000080 offset of b\n0x6100000000000000000000000000000000000000000000000000000000000000 c[0]\n0x6200000000000000000000000000000000000000000000000000000000000000 c[1]\n0x0000000000000000000000000000000000000000000000000000000000000080 offset of b.x\n0x000000000000000000000000000000000000000000000000000000000000000b b.y[0]\n0x000000000000000000000000000000000000000000000000000000000000000c b.y[1]\n0x000000000000000000000000000000000000000000000000000000000000000d b.y[2]\n0x0000000000000000000000000000000000000000000000000000000000000004 b.x (length field)\n0x6162636400000000000000000000000000000000000000000000000000000000 b.x (data)\n```\n\nThe introduction of a dynamic type resulted in `T` itself becoming a dynamic type as well.\nThe new encoding has two tail areas, at different nesting levels:\n\n```\n|---------------------------------------||----------------------------------------|\n| HEAD || TAIL |\n|------------+-------------+------------||----------------------------------------|\n| value of a | offset of b | value of c || value of b |\n| bool | uint | bytes32[2] || T |\n| | | ||--------------------------||------------|\n| | | || HEAD of T || TAIL of T |\n| | | ||-------------+------------||------------|\n| | | || offset of x | value of y || value of x |\n| | | || uint | uint[3] || bytes |\n|------------+-------------+------------||-------------+------------||------------|\n| 1 | 2 | 6 || 3 | 5 || 4 |\n|------------+-------------+------------||-------------+------------||------------|\n```\n\nThe encoding order was also affected.\nThis is because for each component, the encoder writes both the head and the tail before moving on to the next one.\nThis results in `c` being written after `b.x`, even though the former precedes the latter in the encoding.\nA similar situation happens inside `T` - when `y` is being written the data belonging to the tail of `x` is already in place.\n\n## Effects of the Bug\n\nThe aggressive cleanup combined with the non-linear encoding order of dynamic types resulted in a bug where\nthe initial 32 bytes of the tail could be overwritten during the cleanup of the last head component.\n\nThe dynamic tuple example above meets all the criteria for the bug so introducing ABI reencoding would trigger it:\n\n```solidity\nstruct T {\n bytes x;\n uint[3] y;\n}\n\ncontract E {\n function f(bool a, T calldata b, bytes32[2] calldata c)\n public\n returns (bool, T calldata, bytes32[2] calldata)\n {\n return (a, b, c);\n }\n}\n```\n\nEven though `E.f()` is meant to simply return the same input it receives, due to the bug it would produce faulty encoding:\n\n```\n0x0000000000000000000000000000000000000000000000000000000000000001 a\n0x0000000000000000000000000000000000000000000000000000000000000080 offset of b\n0x6100000000000000000000000000000000000000000000000000000000000000 c[0]\n0x6200000000000000000000000000000000000000000000000000000000000000 c[1]\n0x0000000000000000000000000000000000000000000000000000000000000000 offset of b.x // Wrong value\n0x000000000000000000000000000000000000000000000000000000000000000b b.y[0]\n0x000000000000000000000000000000000000000000000000000000000000000c b.y[1]\n0x000000000000000000000000000000000000000000000000000000000000000d b.y[2]\n0x0000000000000000000000000000000000000000000000000000000000000000 b.x (length field) // Wrong value\n0x6162636400000000000000000000000000000000000000000000000000000000 b.x (data)\n```\n\nHere, the cleanup performed for `b.y` would overwrite the length field of `b.x`.\nSimilarly, the cleanup of `c` would overwrite the offset of `b.x`.\n\nNote that the above is not the most minimal example that reproduces the bug.\nTo better illustrate the consequences, this case has two nested tuples and the overwrite happens twice\nbut it is possible to reproduce it even with a single tuple with two components.\n\nThe case with a static tuple was not affected because, in absence of the tail, the encoding order is linear.\nThe encoder could still write past the end of the whole area reserved for the encoding but the compiler would be able\nto ensure that the memory past it had not been allocated for another purpose, making the cleanup perfectly safe.\n\nThe bug only affected the encoding of tuples in the presence of a `calldata` array because that was the only situation where\nthe routine that performs the aggressive cleanup was used.\n\nThe routine is a part of the IR-based code generator and runs regardless of the use of the optimizer,\nwhich means that both optimized and unoptimized code is affected.\n\nSince the legacy code generation pipeline does not have its own ABI coder v2 implementation and uses\nthe IR-based generator for ABI encoding, the bug can be triggered when using either pipeline.\nIt does not, however, affect ABI coder v1.\n\n## Impact\n\nThe bug is very easy to trigger in contrived situations but requires a combination of multiple factors to manifest.\nThis seems to lower the likelihood of it being triggered, given that it remained undetected through several major releases.\nIt may, however, have gone unnoticed in the encoded data of events or errors.\n\nIntentionally triggering the bug when calling a function is not exploitable because the caller can always just directly pass\nmodified input to the function being called.\nPlausible attacks against affected contracts can only occur in situations where the contract accepts a static calldata\narray as a part of its input and forwards it to another external call without modifying the content.\n\nOne of the scenarios that make the bug more likely is batching of orders:\n\n```solidity\nstruct Order {\n User buyer;\n User seller;\n uint[2] values;\n}\n\nstruct User {\n address account;\n string name;\n}\n\ncontract Batcher {\n IMarket immutable market;\n\n function batchTransaction(Order[] calldata orders) external {\n for (uint i = 0; i < orders.length; ++i) {\n // batchTransaction() can see the original value of buyer.account and act on it.\n // The check here will not fail unless the caller actually sets the address to zero.\n require(orders[i].buyer.account != address(0));\n\n // Inside transact() buyer.account always becomes zero due to the bug.\n market.transact(orders[i].buyer, orders[i].seller, orders[i].values);\n }\n }\n}\n\ninterface IMarket {\n function transact(User memory, User memory, uint[2] memory) external;\n}\n```\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/08/08/solidity-0.8.16-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/08/08/solidity-0.8.16-release-announcement.json deleted file mode 100644 index c3a947cb..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/08/08/solidity-0.8.16-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.16 Release Announcement","date":"2022-08-08","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.16](https://github.com/ethereum/solidity/releases/tag/v0.8.16)\nfixes an important bug.\n\nThe bug may result in small parts of dynamic tuple components being inadvertently zeroed during\nABI re-encoding when the last component is a statically-sized `uint` or `bytes32` calldata array.\nSee [Head Overflow Bug in Calldata Tuple ABI-Reencoding](/2022/08/08/calldata-tuple-reencoding-head-overflow-bug/)\nfor more information.\n\nApart from that, there are several minor bug fixes and improvements like more gas-efficient overflow checks\nfor addition and subtraction.\n\n## Full Changelog\n\nImportant Bugfixes:\n\n- Code Generation: Fix data corruption that affected ABI-encoding of calldata values represented by tuples: structs at any nesting level; argument lists of external functions, events and errors; return value lists of external functions. The 32 leading bytes of the first dynamically-encoded value in the tuple would get zeroed when the last component contained a statically-encoded array.\n\nCompiler Features:\n\n- Code Generator: More efficient code for checked addition and subtraction.\n- TypeChecker: Support using library constants in initializers of other constants.\n- Yul IR Code Generation: Improved copy routines for arrays with packed storage layout.\n- Yul Optimizer: Add rule to convert `mod(add(X, Y), A)` into `addmod(X, Y, A)`, if `A` is a power of two.\n- Yul Optimizer: Add rule to convert `mod(mul(X, Y), A)` into `mulmod(X, Y, A)`, if `A` is a power of two.\n\nBugfixes:\n\n- Commandline Interface: Disallow the following options outside of the compiler mode: `--via-ir`,`--metadata-literal`, `--metadata-hash`, `--model-checker-show-unproved`, `--model-checker-div-mod-no-slacks`, `--model-checker-engine`, `--model-checker-invariants`, `--model-checker-solvers`, `--model-checker-timeout`, `--model-checker-contracts`, `--model-checker-targets`.\n- Type Checker: Fix compiler crash on tuple assignments involving certain patterns with unary tuples on the left-hand side.\n- Type Checker: Fix compiler crash when `abi.encodeCall` received a tuple expression instead of an inline tuple.\n- Type Checker: Fix null dereference in `abi.encodeCall` type checking of free function.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here: [v0.8.16](https://github.com/ethereum/solidity/releases/tag/v0.8.16).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/09/08/solidity-0.8.17-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/09/08/solidity-0.8.17-release-announcement.json deleted file mode 100644 index 5dbc9b85..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/09/08/solidity-0.8.17-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.17 Release Announcement","date":"2022-09-08","author":"Solidity Team","category":"Releases"},"content":"\n[Solidity v0.8.17](https://github.com/ethereum/solidity/releases/tag/v0.8.17)\nfixes an important bug, makes overflow checks on multiplication more efficient and adds an LSP feature to\nalways analyze all files in a project.\n\n## Important Bugs\n\n### Storage Write Removal Bug On Conditional Early Termination\n\nThe bug may result in storage writes being incorrectly considered redundant and removed by the optimizer.\nThe problem manifests in presence of assembly functions that may conditionally terminate the external\nEVM call using the `return()` or `stop()` opcode.\n\nSee the security alert post on [Storage Write Removal Bug On Conditional Early Termination](/2022/09/08/storage-write-removal-before-conditional-termination/)\nfor more information.\n\n## Full Changelog\n\nImportant Bugfixes:\n\n- Yul Optimizer: Prevent the incorrect removal of storage writes before calls to Yul functions that conditionally terminate the external EVM call.\n\nCompiler Features:\n\n- Code Generator: More efficient overflow checks for multiplication.\n- Language Server: Analyze all files in a project by default (can be customized by setting `'file-load-strategy'` to `'directly-opened-and-on-import'` in LSP settings object).\n- Yul Optimizer: Simplify the starting offset of zero-length operations to zero.\n\nBugfixes:\n\n- Type Checker: Fix internal compiler error on tuple assignments with invalid left-hand side.\n- Yul IR Code Generation: Fix internal compiler error when accessing the `.slot` member of a mapping through a storage reference in inline assembly.\n\nBuild System:\n\n- Allow disabling pedantic warnings and do not treat warnings as errors during compiler build when `-DPEDANTIC=OFF` flag is passed to CMake.\n- Update emscripten to version 3.1.19.\n\nA big thank you to all contributors who helped make this release possible!\nDownload the new version of Solidity here: [v0.8.17](https://github.com/ethereum/solidity/releases/tag/v0.8.17).\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/09/08/storage-write-removal-before-conditional-termination.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/09/08/storage-write-removal-before-conditional-termination.json deleted file mode 100644 index e73a1ad6..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/09/08/storage-write-removal-before-conditional-termination.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Storage Write Removal Bug On Conditional Early Termination","date":"2022-09-08","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn September 5, 2022, a bug in Solidity's Yul optimizer was found by differential fuzzing.\n\nThe bug was introduced in version 0.8.13 and [Solidity version 0.8.17](https://github.com/ethereum/solidity/releases/tag/v0.8.17), released on September 08, 2022, provides a fix. The bug is significantly easier to trigger with optimized via-IR code generation, but can theoretically also occur in optimized legacy code generation.\n\nWe assigned the bug a severity of \"medium/high\".\n\n## Who Should Be Concerned\n\nIf you're using optimized legacy code generation, you only need to be concerned, if you use large inline assembly blocks that contain user-defined assembly functions that involve the `return(...)` or `stop()` instructions. Furthermore only inline assembly blocks that do not interact with any surrounding Solidity variables can be affected.\n\nIf you're using optimized via-IR code generation, you are more likely to be affected.\n\nYou should carefully check your contract whenever it involves any code path that first writes to storage and then continues to an early termination using assembly `return(...)` or `stop()`, but can also conditionally bypass this early termination. This includes cases in which the storage writes or the early termination occur in complex control flow or in arbitrarily nested function calls.\n\n## Which Contracts are Affected?\n\nA prerequisite for a contract to be affected is the use of `return(...)` or `stop()` in an inline assembly block (note that `return(...)` here refers to the builtin inline assembly function, not to the `return` statement of Solidity). Such an inline assembly call will not return from the current function, but instead result in an early successful (i.e. non-reverting) termination of the entire external EVM call.\n\nIf your contract doesn't contain any inline assembly block with `return(...)` or `stop()` statements, you're unaffected.\n\nIf it does and this early termination happens conditionally within a function, the optimizer could incorrectly remove storage writes before calls to the function.\n\nMore concretely, the bug can occur if a contract contains the following pattern:\n\n1. A storage write. Note that the write may still be removed even if it happens only conditionally or within a call to a function that ends up being inlined.\n2. A call to a function that conditionally terminates using inline assembly as described above, but also has a different code path that returns to the caller.\n3. Any continuing control flow path does one of the following:\n - It overwrites the storage write in (1).\n - It reverts.\n\nIf the initial storage write could possibly be read back (directly or in any internal or external call) between (1) and (3), it is, of course, never removed. Note, however, that in presence of the optimizer it is not always easy to determine if a storage read at the Solidity level will actually translate to a load instruction in assembly. For example the [Load Resolver](https://docs.soliditylang.org/en/latest/internals/optimizer.html#load-resolver) step can use the knowledge of values that were written before by the contract to replace a `sload()` directly with the value that it would read.\n\nWith legacy code generation, all of this, i.e. steps 1-3, need to happen in a single inline assembly block and the function call in (2) needs to be a call to a user-defined assembly function (see below for examples of affected Yul snippets). Also note that during legacy code generation, the Yul optimizer is only run on inline assembly snippets that do not refer to Solidity variables, further reducing the amount of potentially affected cases.\n\nHowever, when using via-IR code generation the entire contract is first translated to Yul and then optimized as a whole. In this case, 1-3 can happen in Solidity code and only the function called in (2) needs to involve an inline assembly block calling `return(...)` or `stop()` (the compiler will not generate `return(...)` or `stop()` instructions that can trigger the bug without the use of inline assembly). Note that due to inlining, this inline assembly block can also merely occur in another nested function call, i.e. any call in (2) that, through any chain of nested calls, can both return to the caller and terminate via assembly is susceptible.\n\nThe following is a minimal example that will exhibit the bug if compiled via IR with enabled optimizer:\n\n```solidity\ncontract C {\n\tuint public x;\n\tfunction f(bool a) public {\n\t\tx = 1; // This write is removed due to the bug.\n\t\tg(a);\n\t\tx = 2;\n\t}\n\tfunction g(bool a) internal {\n\t\t// The relevant part of this function is that it can\n\t\t// both return to the caller and terminate the transaction.\n\t\t// The bug will show its effects in the cases in which\n\t\t// the transaction is terminated (i.e. if a is false).\n\t\t// In this case the write x = 1 above will be missing.\n\t\tif (a) return;\n\t\tassembly { return(0,0) }\n\t}\n}\n```\n\nCompiling the above via IR with enabled optimizer will result in `f(false)` incorrectly terminating the transaction without modifying `x`.\n\nFor a concrete contract, the optimizer may still prevent the bug by inlining the function before running the problematic optimizer step, e.g. the following contract is almost identical, but unaffected, since `g()` will be inlined (in the snippet above the Solidity-level `return;` prevents easy inlining):\n\n```solidity\ncontract C {\n\tuint public x;\n\tfunction f(bool a) public {\n\t\tx = 1;\n\t\tg(a);\n\t\tx = 2;\n\t}\n\tfunction g(bool a) internal {\n\t\tif (!a)\n\t\t\tassembly { return(0,0) }\n\t}\n}\n```\n\nTo check whether your contract is actually affected, you need to trigger the condition leading to the assembly `return(...)` or `stop()` and verify that all storage writes that should have happened in the code leading to it were correctly performed.\n\n## Technical Details\n\nThe Yul optimizer step responsible for the bug is the Unused Store Eliminator (abbreviated as `S` in the [optimizer step sequence](https://docs.soliditylang.org/en/latest/yul.html#optimization-step-sequence)). It is meant to remove storage writes that it can determine to be redundant. A storage write is considered redundant, if in all code paths continuing after it either of the following happens, before the value could ever be read back again:\n\n- A subsequent write overwrites the value written in the initial write.\n- The code path unconditionally reverts.\n\nSo similarly to above, the general pattern is:\n\n1. a storage write (potentially within complex control flow), then\n2. potentially unrelated code, and finally\n3. any continuing control flow path either overwrites the storage write in (1) with a different value or reverts.\n\nThe bug is due to the treatment of certain function calls in (2).\n\nIf a function call is performed between (1) and (3), the optimizer has to consider the control flow behaviour of the function call, e.g. whether control flow may continue beyond the call, whether the called function always reverts or always successfully terminates. However, in the case that the control flow conditionally can continue after the call to a function, but the function call may also terminate using the `return(...)` or `stop()` statements (see examples below), the optimizer incorrectly still behaved as if the control flow _always_ continued after the function.\n\nHence the write in (1) could be removed, even though (2) can in fact terminate and is supposed to retain the storage write in (1).\n\nSo on the Yul level the issue manifests if the following sequence occurs within a Yul block during optimization:\n\n1. A storage write occurs (e.g. `sstore(0, 1)`, but the write may also occur within complex control flow like a single `switch` case).\n2. A user-defined function is called and this function both has a control flow path that terminates the transaction and a control flow path out of the function.\n3. Any continuing control flow path does either of the following:\n - It overwrites the storage slot written in (1), s.t. the storage write in (1) becomes redundant for this path (e.g. `sstore(0, 2)`).\n - The control flow unconditionally reverts (e.g. `revert(0, 0)`)\n\nIn this situation, the optimizer will treat the storage write in (1) as redundant and remove it, despite the fact that the called Yul function may successfully terminate the EVM call, in which case this storage write is in fact not redundant at all.\n\nThe following is a full example of an affected Yul snippet:\n\n```yul\n{\n\tfunction f() {\n\t\tif gt(calldatasize(), 4) { leave }\n\t\treturn(0, 0)\n\t}\n\tsstore(0, 1) // This sstore will incorrectly be removed.\n\tf()\n\tsstore(0, 2)\n}\n```\n\nIn the absence of the bug, the first `sstore` would have been marked as required by the optimizer upon encountering the call to `f()`, i.e. it should not be considered for removal regardless of what happens afterwards, since the control flow path of `f()` reaching the `return(0, 0)` already relies on the `sstore` happening.\nHowever, the optimizer failed to mark it as such, marking the first `sstore` as redundant instead once it sees the second `sstore` overwriting the slot.\n\nThe issue only occurs in the presence of a call to a conditionally terminating Yul function that survives the preceding optimizer steps.\nThe following very similarly looking snippet is not affected, since the optimizer will inline the call to `f()` before performing\nthe buggy optimization step:\n\n```yul\n{\n\tfunction f() {\n\t\tif iszero(lt(calldatasize(), 4)) { return(0,0) }\n\t}\n\tsstore(0, 1)\n\tf()\n\tsstore(0, 2)\n}\n```\n\nIn this case, `f()` will be inlined, resulting in\n\n```yul\n{\n\tsstore(0, 1)\n\tif iszero(lt(calldatasize(), 4)) { return(0,0) }\n\tsstore(0, 2)\n}\n```\n\nIn which case both `sstore`s are correctly retained.\n\nHowever, note that the optimizer determines the properties in question transitively, so the following is still affected as well, even if we assume that `emptyReturn` is not inlined:\n\n```yul\n{\n\tfunction emptyReturn() { return(0, 0) }\n\tfunction f() {\n\t\tif iszero(lt(calldatasize(), 4)) { emptyReturn() }\n\t}\n\tsstore(0, 1)\n\tf()\n\tsstore(0, 2)\n}\n```\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/12/05/solidity-core-team-updates.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/12/05/solidity-core-team-updates.json deleted file mode 100644 index 2f0ba14f..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/12/05/solidity-core-team-updates.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Core Team Updates","date":"2022-12-05","author":"Solidity Team","category":"Announcements"},"content":"\nMore than two years have passed since we [introduced Solidity core team members](https://blog.soliditylang.org/2020/09/18/meet-the-team/) on the blog and we realized it is high time for some updates: Meet new team members, find out who moved on to other adventures and learn about recent changes in the team structure!\n\nBefore we dive in, a reminder that the Solidity programming language and compiler are **open-source community projects**. This post dives into the core team that leads the development. Nevertheless, we cannot stress enough how invaluable community contributions and interactions are for Solidity. We value feedback and input and want to thank our community for their continued support!\n\n## Thank you to our alumni 💐\n\nLike in any other project, there naturally comes a time for some team members to move on to other challenges. Since our last update, we have bid farewell to Christian (@christianparpart), Damian (@wechman), Đorđe (@mijovic), Hari (@hrkrshnn), Mathias (@marenz), and Nishant (@nishant-sachdeva). We were delighted to have them and wish them all the best for their future! Luckily, some alumni remain in our orbit and continue contributing with code and input to language design discussions.\n\n## Introducing new team members 💝\n\nOn a happy note, we are excited to introduce new core team members who have joined us along the way. Please meet Matheus, Nikola, Nuno and Rodrigo!\n\nTo give you a chance to get to know them better, we asked all new joiners to respond to a selection of questions. Read their responses below.\n\n### Matheus - @[matheusaaguiar](https://github.com/matheusaaguiar)\n\n#### What is your professional background?\n\n_I have a BSc in Computer Science and an MSc in Artificial Intelligence. After finishing college, I worked as a C++ backend developer on a small educational game project for about 2 years. Subsequently, I worked as a Data Structure and Algorithms teacher for 8 years. I joined the Solidity team in May 2022 and have been working on the Solidity Compiler since._\n\n#### What made you join the Solidity team?\n\n_After being a teacher for a fair share of years, I wanted to work with the industry on new emerging technologies and challenge myself. Besides that, I have always wanted to work on an open-source project. It is exciting to learn and build with such great devs and community users._\n\n#### What do you like to do in your free time?\n\n_I enjoy playing digital games such as ~~cracktorio~~ Factorio and StarCraft II, but also like to gather some friends and play board games while drinking some beers 🍻. Besides that, I really like skateboarding, running and football of course 🇧🇷!_\n\n### Nikola - @[nikola-matic](https://github.com/nikola-matic)\n\n#### What is your professional background?\n\n_I have a BSc in Comp Sci and a ~10-year-long obsession with C++, which kinda narrowed down my options as far as jobs were concerned, because no one's really gonna write a web app in C++. Having said that, I ended up working on a ton of interesting projects throughout my career, like writings high-perf server-client applications for SMS messaging, hardware virtualization on the cloud, EV routing, and a ton of other stuff. Unfortunately, up until I joined the EF and the Solidity team, I've never worked on an open source project, so this is a first for me (hopefully not the last)._\n\n#### What is your role in the Solidity team? On which parts of Solidity do you work the most?\n\n_I've only joined the team ~4 months prior to writing this, so not that much. I did implement the option for the user to pass the clean-up steps for the optimizer sequence (both CLI and JSON), so at least that's something. At the moment, and for the foreseeable future, I'll be working on helping Chris (chriseth) with speeding up the `--via-ir` pipeline, as well as getting the experimental version of the standard library merged._\n\n#### What do you think is Solidity’s biggest challenge?\n\n_Fundamentally, I think that we, as the Solidity team, don't use the language enough, which is especially concerning seeing as we design and implement it. This is something that the community has pointed out in the past as well, and is something we're well aware of. Thankfully, we are working on this, and plan to have internal team projects and hackathons in the future, which should hopefully give us a different perspective going forward._\n\n### Nuno - @[NunoFilipeSantos](https://github.com/NunoFilipeSantos)\n\n#### What is your professional background?\n\n_I have an MSc in Software Engineering, and all my life I have been highly motivated to work with open-source software. In recent years, I have worked for SUSE, the largest independent open-source company in the world, and Timescale, an open-source time-series database extension for PostgreSQL as a Product Manager. I am usually also an informal Agile coach for most of my teams, with a heavy focus on execution and team happiness/motivation. I have been a remote worker for almost 10 years now and have been 100% remote since 2018._\n\n#### What would you like to see in the Solidity ecosystem in the future?\n\n_Solidity will start having a more community-friendly [roadmap](https://github.com/orgs/ethereum/projects/26/views/1), and I would love it if the community could engage with us on those issues, especially in our [forum](https://forum.soliditylang.org/), since they can positively influence our plans. Another personal motivation is improving developer ergonomics with better debugging tools or documentation_.\n\n#### What do you like to do in your free time?\n\n📺 _Besides being a professional couch potato and a sucker for good movies and TV shows, I occasionally do light gaming._\n🤖 _When I have the right inspiration, I also work on my IoT projects in my house, where I have to negotiate with the most demanding stakeholder ever, my wife._\n⛳️ _I am also an enthusiastic amateur golfer, which means I'm probably in the links doing some shots on a sunny, windless day!_\n\n#### What made you join the Solidity team?\n\n📣 _The culture on this team is unlike anything I have ever experienced! We embody radical candor by caring about the people we talk to and by not being afraid of saying what we mean, we let the best argument win._\n👨‍💻 _As a software engineer myself, helping shape the future of Solidity is very motivational for anyone that has ever had any interest in WEB3._\n\n### Rodrigo - @[r0qs](https://github.com/r0qs)\n\n#### What is your professional background?\n\n_I have a BSc in Computer Science, and after my bachelor's, I worked for almost five years as a system administrator of High-Performance Computing clusters using mainly open-source software and developing all sorts of scripts and tools to manage the systems. Then, I decided that it was time to explore new areas and learn a new programming language, so I did an MSc in Distributed Systems. My MSc thesis focused on implementing and evaluating a Collision-fast Atomic Broadcast protocol based on a variation of the Distributed Consensus problem, which I implemented in Scala._\n\n_After my master's, I worked as a software engineer in a Brazilian IT company building an API Gateway and API Manager Platform that worked as an abstraction layer for legacy web services. The system was mainly implemented in Javascript, Ruby, and Go._\n\n_Over the years, I developed some small projects in Solidity in my free time, and eventually, in 2018, I decided to start a PhD in Distributed Systems to fulfill my desire to learn more about Ethereum. My PhD was focused on designing and developing a transparent and privacy-preserving verifiable credential system for academic diplomas that could work on a global scale. The core functionality was implemented in Solidity and Circom. Finally, in 2022, I had the opportunity to join the Solidity team._\n\n#### What is your role in the Solidity team? On which parts of Solidity do you work the most?\n\n_I work primarily on solc-js (a JavaScript wrapper around the Solidity compiler), task automation, and Continuous Integration scripts in the Solidity repository. I also collaborate with the development of some minor changes in the compiler, and I'm looking forward to contributing to more compiler features and optimizations in the future._\n\n#### What made you join the Solidity team?\n\n_Being part of the Solidity team sounded like an exciting challenge to me - a natural step for learning more about the Solidity language and an excellent way to contribute and learn more about the Ethereum ecosystem._\n\n## Changes in Team Structure 🧑‍💻👩‍💻\n\nWe also want to use this post as an opportunity to share insights into recent updates to our team structure. We believe that the new team structure and processes will support us to productively deliver on our goals and focus on our priorities. Moving forward, the team leadership consists of a Technical Product Manager and a Tech Lead.\n\n### Introducing Nuno as Solidity Product Manager 🎯\n\nEnd of September, we were happy to onboard Nuno as our new Technical Product Manager. Nuno supports the team by leading people and processes, as well as facilitating the product/roadmap planning and overall development coordination. Nuno has worked with open-source projects all of his life, and we are inspired to learn from and with him!\n\n### Welcoming Daniel (@ekpyron) as new Solidity Tech Lead 🧭\n\nFurthermore, we'd like to announce that one of our long-time Solidity core team members, Daniel, has stepped up to become Solidity's next Tech Lead.\n\nDaniel started contributing to Solidity in February 2018. He is a mathematician by training, but worked as a part-time software developer since his studies. This year, he received a PhD in Computational Metaphysics.\n\nDaniel demonstrated technical leadership throughout his work on the optimizer and `via-IR` pipeline in Solidity and has been a vital sparring partner for language design decisions since he joined the team.\n\nWe are glad to have him as a new Tech Lead and confident he is the perfect choice to continue Chris' legacy.\n\n### Thank you to Chris (@chriseth) & Alex (@axic) for their work! 👏\n\nAs you may have guessed from the previous paragraph, Chris (@chriseth) has decided to step down from his Team Lead position in the Solidity team. We fully respect this decision and cannot thank him enough for his relentless work and dedication during the last 8 years. Chris, you have been and will continue to be an inspiration to the entire team!\n\nTo our benefit, we're happy that Chris remains a treasure in our team. Besides contributing to Solidity features, language design and reviews, he's also venturing into Formal Verification. If you're interested, check out his recent work on [Yools](https://github.com/leonardoalt/yools), an experimental symbolic execution engine for Yul.\n\nIn addition, we want to use this opportunity also to extend a big \"Thank You!\" to Alex (@axic) for his invaluable contributions as a long-time co-lead of the Solidity team - a position he gradually stepped back from throughout the last two years.\n\nAlex is currently leading the Execution Environment R&D team ([Ipsilon](https://notes.ethereum.org/@ipsilon/about)) at the Ethereum Foundation. He continues to contribute with language design input and discussions.\n\n### Contribute to the future of Solidity 💪\n\nLast but not least, we are inviting **you** to join our language design efforts! We are adjusting the rhythm of our language design calls to make them more accessible to community contributors.\n\nWe will have a dedicated monthly call to discuss language design topics in the future. You can find a public rolling agenda of those calls [here](https://notes.ethereum.org/B89X_grPTli5wcCd0VqruA). Feel free to add your topics ahead of time.\n\nYou can find the call details in the [\"Contributing\" section](https://docs.soliditylang.org/en/latest/contributing.html) of the Solidity docs.\n\nWe have also just published our [Solidity Roadmap](https://github.com/orgs/ethereum/projects/26/views/1) on GitHub, and we welcome any feedback you might have. This roadmap will be updated frequently as we find out more over time.\n\nIf you are not into language design but you are still eager to contribute to Solidity, there are many other ways!\n\nYou can get started by:\n\n- Reporting issues\n- Fixing and responding to issues tagged as “good first issue”\n- Improving the documentation\n- Translating the documentation into more languages\n- Providing language feedback in the [Solidity forum](https://forum.soliditylang.org/)\n\nAll details on how to contribute can be found in the [docs](https://docs.soliditylang.org/en/latest/contributing.html).\n\nWe look forward to hearing from you on [Github](https://github.com/ethereum/solidity), [Matrix](https://matrix.to/#/#ethereum_solidity:gitter.im), or the [forum](https://forum.soliditylang.org/)! 🚀\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/12/07/solidity-developer-survey-2022-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/12/07/solidity-developer-survey-2022-announcement.json deleted file mode 100644 index 53ca6455..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2022/12/07/solidity-developer-survey-2022-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2022 is Live!","date":"2022-12-07","author":"Franziska Heintel","category":"Announcements"},"content":"\nIt’s that time of the year. _Drumroll, please! 🥁🥁🥁_\nWe are launching the [Solidity Developer Survey 2022](https://cryptpad.fr/form/#/2/form/view/HuPIRv4gvziSV0dPV1SJncKzYJXTVc8LGCaMfLUoj2c/)!\n\nBefore we wrap up 2022 for good, we want to reach out to collect your feedback and insights so we can improve on it!\n\n**📝 [TAKE THE SURVEY!](https://cryptpad.fr/form/#/2/form/view/HuPIRv4gvziSV0dPV1SJncKzYJXTVc8LGCaMfLUoj2c/) 📝**\n\nYou can find the previous results of the Solidity Developer Survey 2021 [here](https://blog.soliditylang.org/2022/02/07/solidity-developer-survey-2021-results/). In 2021, 435 developers from 73 different countries participated with 80% of respondents using Solidity daily or weekly.\n\n## About the Survey 🪄\n\nLike in previous years, this survey helps us to improve the language and compiler further and shape the future roadmap of Solidity. Therefore, we want to hear your feedback on Solidity and learn about your coding preferences.\n\nYour replies are invaluable for the Solidity project to understand your needs and the current strengths and weaknesses of the language. In addition, they will contribute towards establishing development priorities for the future. This will ultimately result in improving the Solidity developer experience as a whole.\n\nThe survey consists of several chapters:\n\n- Demographics\n- Your Developer Profile\n- Your Solidity User Profile\n- Solidity Development Experience\n- Language Design & Upcoming Features\n- Solidity Developer Community\n\nCompleting the survey will roughly require 10 minutes of your time.\n\nNone of the questions are mandatory, but keep in mind that filling in as many as possible helps us!\n\nFor the collectors amongst you, this year, a little \"token\" of appreciation awaits at the end of the survey.\n\nLast but not least, we moved away from Google forms and are trying an open-source alternative, namely CryptPad, in this iteration. Besides the fact that we prefer opting for open-source, encrypted, self-hostable software over proprietary software, selecting CryptPad specifically was a conscious choice since it allows you to submit your responses fully anonymously (client-side encryption).\n\n## Spread the Word! 📯\n\nThis marks the third time we are conducting a structured developer survey and we are hoping to reach even more developers than last year.\n\n**Please help us reach as many Solidity developers as possible by sharing the survey in your networks!**\n\nThe results of the survey will be shared on this blog as well as on the [Solidity Twitter](https://twitter.com/solidity_lang) and [Mastodon](https://fosstodon.org/@solidity) accounts in Q1 of 2023.\n\nThank you for your support!\n\n**🏁 [START THE SURVEY!](https://cryptpad.fr/form/#/2/form/view/HuPIRv4gvziSV0dPV1SJncKzYJXTVc8LGCaMfLUoj2c/) 🏁**\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/02/01/solidity-0.8.18-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/02/01/solidity-0.8.18-release-announcement.json deleted file mode 100644 index bc992ec1..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/02/01/solidity-0.8.18-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.18 Release Announcement","date":"2023-02-01","author":"Solidity Team","category":"Releases"},"content":"\nIntroducing the newest version of the Solidity Compiler!\n\nWe are excited to announce the latest release of the Solidity Compiler, [Solidity v0.8.18](https://github.com/ethereum/solidity/releases/tag/v0.8.18).\nThis latest version includes a range of improvements and it also introduces support for the [Paris upgrade](https://blog.ethereum.org/2022/08/24/mainnet-merge-announcement)!\n\n### Notable New Features\n\nThese are the features we want to highlight in this release.\n\n#### Disabling CBOR metadata\n\nA new command-line flag (`--no-cbor-metadata`) and Standard JSON option (`settings.metadata.appendCBOR: false`) to prevent compiler from appending the CBOR metadata section at the end of the bytecode.\nUntil now, it was only possible to exclude the hash of the JSON metadata file (`--metadata-hash none`/`settings.metadata.bytecodehash: \"none\"`) from that section, but the bytecode would still include a small bit of CBOR data containing the version of the compiler.\n\n#### Support for Paris Hardfork\n\nThe support for the Paris hard fork, includes:\n\n- Deprecation of global `block.difficulty` built-in in Solidity and removal of `difficulty()` instruction from inline assembly for EVM versions >= Paris. The change is due to the renaming and semantic changes of the `difficulty` instruction introduced by [EIP-4399](https://eips.ethereum.org/EIPS/eip-4399).\n- Introduction of global `block.prevrandao` built-in in Solidity and `prevrandao()` instruction in inline assembly for EVM versions >= Paris.\n\n_Note_: `block.difficulty` is planned to be removed entirely in Solidity version `0.9.0`.\n\n#### Deprecation of `selfdestruct`\n\n`selfdestruct` is now considered deprecated ([EIP-6049](https://eips.ethereum.org/EIPS/eip-6049)) and the compiler will warn about its use, both in Solidity and in Yul, including inline assembly.\nThere is currently no replacement, but its use is highly discouraged because it will eventually change its semantics and all contracts using it will be affected in some way.\n\n#### EVM bytecode generation from Yul\n\nThis release also involves a change in the generation of EVM bytecode from Yul code when the optimizer is enabled: for Yul functions that never return back to the caller (i.e. always revert or always terminate the EVM call), the compiler no longer pushes a return label.\nThe label is only used to jump back to the caller. This will decrease both gas cost and code size.\nTooling that relies on the current calling convention on the bytecode level may need to be adjusted to accommodate this change.\n\n## Full Changelog\n\n### Language Features\n\n- Allow named parameters in mapping types.\n\n### Compiler Features\n\n- Commandline Interface: Add `--no-cbor-metadata` that skips CBOR metadata from getting appended at the end of the bytecode.\n- Commandline Interface: Return exit code `2` on uncaught exceptions.\n- EVM: Deprecate `block.difficulty` and disallow `difficulty()` in inline assembly for EVM versions >= paris. The change is due to the renaming introduced by [EIP-4399](https://eips.ethereum.org/EIPS/eip-4399).\n- EVM: Introduce `block.prevrandao` in Solidity and `prevrandao()` in inline assembly for EVM versions >= paris.\n- EVM: Set the default EVM version to \"Paris\".\n- EVM: Support for the EVM version \"Paris\".\n- Language Server: Add basic document hover support.\n- Natspec: Add event Natspec inheritance for devdoc.\n- Optimizer: Added optimization rule `and(shl(X, Y), shl(X, Z)) => shl(X, and(Y, Z))`.\n- Parser: More detailed error messages about invalid version pragmas.\n- SMTChecker: Make `z3` the default solver for the BMC and CHC engines instead of all solvers.\n- SMTChecker: Support Eldarica as a Horn solver for the CHC engine when using the CLI option `--model-checker-solvers eld`. The binary `eld` must be available in the system.\n- Solidity Upgrade Tool: Remove `solidity-upgrade` tool.\n- Standard JSON: Add a boolean field `settings.metadata.appendCBOR` that skips CBOR metadata from getting appended at the end of the bytecode.\n- TypeChecker: Warn when using deprecated builtin `selfdestruct`.\n- Yul EVM Code Transform: Generate more optimal code for user-defined functions that always terminate a transaction. No return labels will be pushed for calls to functions that always terminate.\n- Yul Optimizer: Allow replacing the previously hard-coded cleanup sequence by specifying custom steps after a colon delimiter (`:`) in the sequence string.\n- Yul Optimizer: Eliminate `keccak256` calls if the value was already calculated by a previous call and can be reused.\n\n### Bugfixes\n\n- Parser: Disallow several `indexed` attributes for the same event parameter.\n- Parser: Disallow usage of the `indexed` attribute for modifier parameters.\n- SMTChecker: Fix display error for negative integers that are one more than powers of two.\n- SMTChecker: Fix internal error on chain assignments using static fully specified state variables.\n- SMTChecker: Fix internal error on multiple wrong SMTChecker natspec entries.\n- SMTChecker: Fix internal error when a public library function is called internally.\n- SMTChecker: Fix internal error when deleting struct member of function type.\n- SMTChecker: Fix internal error when using user-defined types as mapping indices or struct members.\n- SMTChecker: Improved readability for large integers that are powers of two or almost powers of two in error messages.\n- TypeChecker: Fix bug where private library functions could be attached with `using for` outside of their declaration scope.\n- Yul Optimizer: Hash hex and decimal literals according to their value instead of their representation, improving the detection of equivalent functions.\n\nAs always, a big thank you to all contributors who helped make this release possible!\n\n## How to install/upgrade\n\nTo upgrade to the latest version of the Solidity Compiler, simply follow the [installation instructions](https://docs.soliditylang.org/en/v0.8.18/installing-solidity.html) available in our documentation.\nOur team has made sure to provide detailed and straightforward steps to make the upgrade process as seamless as possible. If you have any questions or run into any issues during the upgrade process, don't hesitate to reach out to our [community Matrix channel](https://matrix.to/#/#ethereum_solidity:gitter.im).\n\nYou can download the new version of Solidity here: [v0.8.18](https://github.com/ethereum/solidity/releases/tag/v0.8.18).\nIf you want to build from the source code, do not use the source archives generated automatically by GitHub, instead please use [`solidity_0.8.18.tar.gz`](https://github.com/ethereum/solidity/releases/download/v0.8.18/solidity_0.8.18.tar.gz) and take a look at [our documentation on how to build from source](https://docs.soliditylang.org/en/v0.8.18/installing-solidity.html#building-from-source) if you need guidance.\n\nPlease note that for those using Solidity versions below 0.8.0, [there are breaking changes](https://docs.soliditylang.org/en/v0.8.18/080-breaking-changes.html).\nWe highly recommend reviewing the detailed list of breaking changes in our documentation to ensure a smooth upgrade process. Additionally, we encourage all Solidity users to regularly check for updates to stay up-to-date with the latest improvements and optimizations.\nWe advise all Solidity developers to upgrade to version 0.8.18 to take advantage of these improvements and optimizations. Our team remains dedicated to continuously enhancing Solidity to benefit the entire Ethereum ecosystem.\n\nGet ready to unleash your creativity and build impactful decentralized applications with the latest version of the Solidity Compiler. Happy coding!\n\n## UPDATE 2023-02-02: Rebuilt Linux binary for Solidity 0.8.18\n\nThe Linux binary for the 0.8.18 release was originally built against a too recent version of glibc and thereby did not run on older Linux systems.\nTherefore, we rebuilt and replaced the binary so that you may encounter an older version of `solc-linux-amd64-v0.8.18+commit.87f61d96` that does not match the hash you can find on the [list of currently published Linux binaries](https://binaries.soliditylang.org/linux-amd64/list.json).\nBoth versions of the compiler will behave identically other than the fact that only the new one will work on systems with glibc versions older than 2.32.\n\nTo be clear: both binaries will produce identical outputs under all circumstances, including the commit hash in the metadata. Only the hash of the compiler binary itself will change due to the replacement, but the new binary will always produce byte-identical output.\n\nIn the listings at https://binaries.soliditylang.org, the original, now replaced binary, was listed as follows:\n\n```json\n{\n \"path\": \"solc-linux-amd64-v0.8.18+commit.87f61d96\",\n \"version\": \"0.8.18\",\n \"build\": \"commit.87f61d96\",\n \"longVersion\": \"0.8.18+commit.87f61d96\",\n \"keccak256\": \"0x265ad8479d7c5d30ef3556c5c23efddbf1718c1112abd219a6add420489cf930\",\n \"sha256\": \"0xa1c0f33eb4482c26f56719ecf62b0ee05d7d7a4f8264ffbddf9ebcd9095c32bd\",\n \"urls\": [\n \"bzzr://bc795017b74430520c9fd41300536f45d43edb74ca3c497ce2117d1954bbca12\",\n \"dweb:/ipfs/QmPkAoHf5hNoZS9W7uZhrGgVTSPoCui3h9MEEKTTfSe8am\"\n ]\n}\n```\n\nIt has been replaced with:\n\n```json\n{\n \"path\": \"solc-linux-amd64-v0.8.18+commit.87f61d96\",\n \"version\": \"0.8.18\",\n \"build\": \"commit.87f61d96\",\n \"longVersion\": \"0.8.18+commit.87f61d96\",\n \"keccak256\": \"0x932901581a2ef0795851363522811fa160db5561e34cbb306e7105b6bbc3834d\",\n \"sha256\": \"0x95e6ed4949a63ad89afb443ecba1fb8302dd2860ee5e9baace3e674a0f48aa77\",\n \"urls\": [\n \"bzzr://61828ca55d703ddcd2ceff0e20a48ae6bca28a58b09725836893dc5f6b8e8018\",\n \"dweb:/ipfs/Qmf68UBPAspGAh6TJ1F9zKLFy3WjvH6W43HvzWWGAUQXTv\"\n ]\n}\n```\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/02/22/solidity-0.8.19-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/02/22/solidity-0.8.19-release-announcement.json deleted file mode 100644 index 6080c6c8..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/02/22/solidity-0.8.19-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.19 Release Announcement","date":"2023-02-22","author":"Solidity Team","category":"Releases"},"content":"\nWe are excited to announce the latest release of the Solidity Compiler, [Solidity v0.8.19](https://github.com/ethereum/solidity/releases/tag/v0.8.19).\nThis latest version includes a range of improvements and it also introduces the support for defining _operators_ on [user-defined value types](https://docs.soliditylang.org/en/latest/types.html#user-defined-value-types) (UDVTs)!\nYou can learn about it at length in our [feature deep-dive blogpost](https://blog.soliditylang.org/2023/02/22/user-defined-operators).\n\n### Notable New Features\n\nThese are the features we want to highlight in this release.\n\n#### Operators for User-Defined Value Types\n\nThe ability to use operators is meant to bring the UDVTs closer to being as natural to use\nas the built-in types and promote the use of type-safe interfaces. All details, code examples, and context on the design considerations for this feature can be found in [this blogpost](https://blog.soliditylang.org/2023/02/22/user-defined-operators).\n\n### Preventing Dead Code in Runtime Bytecode\n\nIn earlier releases and in the default legacy code generation, when an internal library function or a free function accessed via a module was called only during contract creation, e.g. only in the constructor,\na copy of the function still also occurred in the contract's runtime bytecode.\nThe underlying reason for this is that, generally, expressions of function type can be stored in storage during contract creation, while being called both during creation and at runtime.\nHowever, the bytecode of the function is located at different offsets in creation code vs. in runtime code and function pointers in legacy code generation are encoded as offsets into the bytecode.\nTherefore, a reference to both of the location in creation code and in runtime code has to be encoded in such function expressions during creation.\nSo a function pointer in creation code also refers to the offset of the function in runtime code, which requires the function to actually be present in runtime code.\nOf course, this is really only necessary for function pointers that can actually end up being stored in storage, which is generally an unlikely scenario.\nFor direct calls such a double-encoding is unnecessary.\nThat's why for direct calls to internal contract functions the full encoding of the function expression is bypassed by the compiler.\nHowever, this bypassing did not happen for internal library functions and for free functions called via modules, causing the undesirable behaviour that is now fixed in this release.\nThanks to @sifislag for reporting this.\n\n## Full Changelog\n\n### Language Features\n\n- Allow defining custom operators for user-defined value types via `using {f as +} for T global` syntax.\n\n### Compiler Features\n\n- SMTChecker: New trusted mode that assumes that any compile-time available code is the actual used code, even in external calls. This can be used via the CLI option `--model-checker-ext-calls trusted` or the JSON field `settings.modelChecker.extCalls: \"trusted\"`.\n\n### Bugfixes\n\n- Assembler: Avoid duplicating subassembly bytecode where possible.\n- Code Generator: Avoid including references to the deployed label of referenced functions if they are called right away.\n- ContractLevelChecker: Properly distinguish the case of missing base constructor arguments from having an unimplemented base function.\n- SMTChecker: Fix internal error caused by unhandled `z3` expressions that come from the solver when bitwise operators are used.\n- SMTChecker: Fix internal error when using the custom NatSpec annotation to abstract free functions.\n- TypeChecker: Also allow external library functions in `using for`.\n\nAs always, a big thank you to all contributors who helped make this release possible!\n\n## How to install/upgrade\n\nTo upgrade to the latest version of the Solidity Compiler, simply follow the [installation instructions](https://docs.soliditylang.org/en/v0.8.19/installing-solidity.html) available in our documentation.\nOur team has made sure to provide detailed and straightforward steps to make the upgrade process as seamless as possible. If you have any questions or run into any issues during the upgrade process, don't hesitate to reach out to our [community Matrix channel](https://matrix.to/#/#ethereum_solidity:gitter.im).\n\nYou can download the new version of Solidity here: [v0.8.19](https://github.com/ethereum/solidity/releases/tag/v0.8.19).\nIf you want to build from the source code, do not use the source archives generated automatically by GitHub, instead please use [`solidity_0.8.19.tar.gz`](https://github.com/ethereum/solidity/releases/download/v0.8.19/solidity_0.8.19.tar.gz) and take a look at [our documentation on how to build from source](https://docs.soliditylang.org/en/v0.8.19/installing-solidity.html#building-from-source) if you need guidance.\n\nPlease note that for those using Solidity versions below 0.8.0, [there are breaking changes](https://docs.soliditylang.org/en/v0.8.18/080-breaking-changes.html).\nWe highly recommend reviewing the detailed list of breaking changes in our documentation to ensure a smooth upgrade process. Additionally, we encourage all Solidity users to regularly check for updates to stay up-to-date with the latest improvements and optimizations.\nWe advise all Solidity developers to upgrade to version 0.8.18 to take advantage of these improvements and optimizations.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/02/22/user-defined-operators.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/02/22/user-defined-operators.json deleted file mode 100644 index 24f7711d..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/02/22/user-defined-operators.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Feature Deep-Dive: User-Defined Operators","date":"2023-02-22","author":"Kamil Śliwak, Matheus Aguiar","category":"Explainers"},"content":"\nThe highlight of [Solidity 0.8.19](https://github.com/ethereum/solidity/releases/tag/v0.8.19) release\nis the support for defining _operators_ on [user-defined value types](https://docs.soliditylang.org/en/latest/types.html#user-defined-value-types) (UDVTs).\n\nIf you have not been keeping up with recent features, UDVTs are a new class of types introduced in Solidity 0.8.8.\nThey provide an abstraction over an elementary value type that results in a completely new type.\nThis is similar to creating an alias, but the new type is distinct from the underlying value type\nand all other UDVTs derived from that underlying type.\nThe ability to use operators is meant to bring the UDVTs closer to being as natural to use as the\nbuilt-in types and promote the use of type-safe interfaces.\nBelow, we are going to take a closer look into the details of this new mechanism.\n\n### A Quick Refresher\n\nBefore we get into the details of the new feature and how it affects the language, it may be a good\nidea to first go over the two existing features that it builds upon: built-in operators and `using for`.\n\n#### Built-in Operators\n\nSolidity, like the vast majority of programming languages,\n[offers a set of operators](https://docs.soliditylang.org/en/latest/types.html#operators) as syntactic sugar\nover common arithmetical and logical functions.\nThe difference between operators and functions is purely syntactical, and the decision\nto choose one over the other is to a large extent a matter of readability.\nThe use of operators makes expressions more concise, which is helpful as long as they are well\nunderstood by the reader.\nWhat is included in that set varies widely from language to language.\n\nHere is the full list for Solidity:\n\n| Category | Operators |\n| -------------------- | ------------------------------------------------------------------- |\n| Bitwise | `&`, `\\|`, `^`, `<<`, `>>`, `~` |\n| Arithmetic | `+`, `-`, `*`, `/`, `%`, `**` |\n| Comparison | `==`, `!=`, `<`, `<=`, `>`, `>=` |\n| Boolean | `!`, `&&`, `\\|\\|` |\n| Increment/decrement | `++`, `--` |\n| Simple assignment | `=` |\n| Composite assignment | `+=`, `-=`, `^=`, `*=`, `/=`, `%=`, `&=`, `\\|=`, `^=`, `<<=`, `>>=` |\n| Miscellaneous | `delete`, `new`, `.`, `()`, `[]`, `?:` |\n\nIt is important to note that in many languages, an assignment is a statement that is handled in a special way.\nIn Solidity, like in the C-like languages it took inspiration from, an assignment operator can be freely used in\nexpressions on par with other operators.\n\nIn most cases, built-in operators are only defined for [value types](https://docs.soliditylang.org/en/latest/types.html#value-types).\nNotable exceptions are the simple assignment and the \"miscellaneous\" group.\nFor example, you can put almost anything in parentheses or branches of the ternary operator, as a part\nof a bigger expression, even if its type cannot be named or even assigned to anything.\n\n#### `using for`\n\nSince operators are a purely syntactic element, you can always use a function as a substitute.\nSolidity has a mechanism that is often used this way:\n[`using for`](https://docs.soliditylang.org/en/latest/contracts.html#using-for).\n\nThe directive `using ... for ...` can be used to attach functions to a type.\nThese functions can then be used as members on any object of that type and receive the object as\ntheir first parameter.\n\n```solidity\npragma solidity ^0.8.13;\n\ntype Int is int;\nusing {add} for Int global;\n\nfunction add(Int a, Int b) pure returns (Int) {\n return Int.wrap(Int.unwrap(a) + Int.unwrap(b));\n}\n\nfunction test(Int a, Int b) pure returns (Int) {\n return a.add(b);\n}\n```\n\nCurrently, `using for` has 3 forms:\n\n1. `using L for T`: attaches all non-private functions from library `L` to type `T`.\n1. `using L for *`: attaches all non-private functions from library `L` to any type, including types that\n cannot be named in the language and used explicitly (e.g. types of literals or array slices).\n1. `using {f, L.g, ...} for T`: attaches given free or library functions `f`, `L.g`, ... to type `T`.\n\nThe directive can be used:\n\n- ✅ At file level.\n- ✅ Inside contract and library definitions.\n\nThe directive can not be used:\n\n- ❌ Inside interface definitions.\n\nWhen used inside contracts, it is not inherited.\nIts effects extend only to the contract that has it and not to any other contracts derived from it.\n\nAt file level, the directive affects all the free functions, contracts and libraries defined within that file.\nIt does not affect other files that import the file containing it, unless it is marked as `global`.\n`global` extends its effect to all files.\nThe use of `global` is possible only with UDVTs, structs, and enums that are defined in its source unit.\n\n### Introducing User-Defined Operators\n\nThe new feature extends the third form of the `using for` syntax to allow binding operators to functions.\nThe function is invoked whenever the operator is used on the values of the type:\n\n```solidity\npragma solidity ^0.8.19;\n\ntype Int is int;\nusing {add as +} for Int global;\n\nfunction add(Int a, Int b) pure returns (Int) {\n return Int.wrap(Int.unwrap(a) + Int.unwrap(b));\n}\n\nfunction test(Int a, Int b) pure returns (Int) {\n return a + b; // Equivalent to add(a, b)\n}\n```\n\nAn operator can only be bound in a `global` directive and its definition must be a `pure` free function.\nThe type specified in `using for` must be a user-defined value type and must be the type\nof all the parameters of the function and its return value.\nThe only exception are comparison operator definitions, where the return type must be `bool`.\n\nSince currently there are no implicit conversions allowed to and from UDVTs, user-defined operators\nmust always be invoked with exact types.\n\nThe following operators can be defined:\n\n| Category | Operators |\n| ---------- | -------------------------------- |\n| Bitwise | `&`, `\\|`, `^`, `~` |\n| Arithmetic | `+`, `-`, `*`, `/`, `%` |\n| Comparison | `==`, `!=`, `<`, `<=`, `>`, `>=` |\n\nOf the operators listed above, `~` is unary, `-` can be both unary and binary and the rest is always binary.\nNote that Solidity does not have a unary `+`.\nUnary and binary `-` are considered different operators and need separate definitions.\nWhether `-` refers to the unary or binary variant depends on the number of parameters of the function.\n\nIt is not possible to replace operator definitions.\nThis applies both to the built-in operator definitions provided by the compiler and to operators\nbound to a function provided by the user.\nOnce the operator is bound, the definition cannot be changed.\n\n#### Operator Bindings vs Attached Functions\n\nUser-defined operators are independent of attached functions.\nOne can be done without the other, and both can be done simultaneously, even in the same `using for` directive.\n\nThe following example illustrates this:\n\n```solidity\npragma solidity ^0.8.19;\n\ntype Int is int;\nusing {add as +} for Int global;\nusing {sub as -, sub} for Int global;\n\nfunction add(Int a, Int b) pure returns (Int) {\n return Int.wrap(Int.unwrap(a) + Int.unwrap(b));\n}\n\nfunction sub(Int a, Int b) pure returns (Int) {\n return Int.wrap(Int.unwrap(a) - Int.unwrap(b));\n}\n\nfunction test(Int x, Int y) pure {\n x + y;\n x.add(y); // ERROR: Member \"add\" not found or not visible after argument-dependent lookup in Int.\n\n x - y;\n x.sub(y); // OK -- \"sub\" was also attached in \"using for\"\n}\n```\n\nIn the above example, the function `add()` is used _only_ as the operator `+`, and not callable as `x.add(y)`\n(but it can, of course, be also called as `add(x, y)`).\n`sub()`, on the other hand, can both be used as the operator `-` and called on the type.\n\nThe rules for `using for global` with operators are the same as for attached functions\n(with an additional restriction that operators _must_ be global), i.e.\nit is only allowed at file level, the type must be defined in the same file and it makes\nthe operator available everywhere.\nNote that only the directive itself must be colocated with the type.\nThe operator definitions may be imported from a separate file.\n\n#### Parameter Cleanup\n\nIf you decide to use inline assembly in your operator implementation, you should be aware of\na dangerous pitfall when using types that do not fill the whole stack slot.\nAccessing Solidity variables in inline assembly bypasses the\n[variable cleanup](https://docs.soliditylang.org/en/latest/internals/variable_cleanup.html)\nmechanism that normally masks the dirty bits of your value.\nIn inline assembly you must perform that cleanup manually.\n\nConsider an example that naively accesses the parameters and return values of operators\nwithout properly cleaning up `uint8` values:\n\n```solidity\npragma solidity ^0.8.19;\n\ntype U8 is uint8;\nusing {yoloAdd as +, yoloDiv as /} for U8 global;\n\nfunction yoloAdd(U8 x, U8 y) pure returns (U8 z) {\n assembly {\n z := add(x, y) // Wrong! No cleanup.\n }\n}\n\nfunction yoloDiv(U8 x, U8 y) pure returns (U8 z) {\n assembly {\n z := div(x, y) // Wrong! No cleanup.\n }\n}\n\ncontract C {\n function divAddNoOverflow(U8 a, U8 b, U8 c) external pure returns (U8) {\n return a / (b + c);\n }\n}\n```\n\nNow, let's see what happens when you call `divAddNoOverflow(4, 0xff, 3)`.\nYou might expect it to return 4, i.e. `8 / ((255 + 3) % 256)`.\nAfter all, `z` is based on `uint8` and an unchecked addition of 3 to 255 should wrap around and give you 2.\n`8 / 2` is 4.\nThis is not what happens.\nThe actual result is zero.\n\nNote that local variables take up whole stack slots and all calculations in inline assembly are\nperformed on 256-bit numbers.\nThe result of `add(0xff, 3)` is actually `0x0102` and `yoloAdd()` does not clear the higher bits.\n`yoloDiv()` then receives that value as `y`, and again does not clear the higher bits.\nThis results in an integer division by 258 rather than by 2.\n\nThe problem can be avoided with manual cleanup.\nThe code would work as designed if `add(x, y)` was replaced with\n\n```solidity\nand(0xff, add(and(0xff, x), and(0xff, y)))\n```\n\nand `div(x, y)` with\n\n```solidity\nand(0xff, div(and(0xff, x), and(0xff, y)))\n```\n\n#### Examples\n\n##### Unchecked Counter\n\nThis example shows how operators can be used to bypass the checked arithmetic for types\nspecifically defined for cases where those checks are superfluous:\n\n```solidity\npragma solidity ^0.8.19;\n\ntype UncheckedCounter is uint;\n\nusing {add as +, lt as <} for UncheckedCounter global;\n\nUncheckedCounter constant ONE = UncheckedCounter.wrap(1);\n\nfunction add(UncheckedCounter x, UncheckedCounter y) pure returns (UncheckedCounter) {\n unchecked {\n return UncheckedCounter.wrap(\n UncheckedCounter.unwrap(x) +\n UncheckedCounter.unwrap(y)\n );\n }\n}\n\nfunction lt(UncheckedCounter x, UncheckedCounter y) pure returns (bool) {\n return UncheckedCounter.unwrap(x) < UncheckedCounter.unwrap(y);\n}\n\ncontract C {\n uint internalCounter = 12;\n\n function testCounter() public returns (uint) {\n for (\n UncheckedCounter i = UncheckedCounter.wrap(12);\n i < UncheckedCounter.wrap(20);\n i = i + ONE\n )\n ++internalCounter;\n\n return internalCounter;\n }\n}\n```\n\n##### A More Complex Abstract Example\n\nThis is a more complex example that shows multiple aspects of user-defined operators.\nThe exact calculations it performs do not matter, the point is to show the syntax in a larger context.\n\n`redBlueScore.sol`\n\n```solidity\npragma solidity ^0.8.19;\n\nimport {Red, Blue, Score, RED_LIMIT, BLUE_LIMIT} from \"./types.sol\";\n\ncontract RedBlueScore {\n Red public redGauge;\n Blue public blueGauge;\n\n function voteRed(Red value, Red base) public {\n require(-RED_LIMIT <= value * base && value * base <= RED_LIMIT);\n redGauge = redGauge + value * base.exp(3);\n }\n\n function voteBlue(Blue value) public {\n require(-BLUE_LIMIT <= value && value <= BLUE_LIMIT);\n blueGauge = blueGauge + value - Blue.wrap(100);\n }\n\n function calculateScore() public view returns (Score) {\n return\n redGauge.toScore() / RED_LIMIT.toScore() -\n blueGauge.toScore() / BLUE_LIMIT.toScore();\n }\n}\n```\n\n`types.sol`\n\n```solidity\npragma solidity ^0.8.19;\n\nimport \"./operators.sol\" as op;\n\ntype Red is int;\nusing {op.RedLib.toScore, op.RedLib.exp, op.addRed as +, op.mulRed as *, op.unsubRed as -} for Red global;\nusing {op.lteRed as <=, op.gtRed as >} for Red global;\n\ntype Blue is int;\nusing {\n op.addBlue as +,\n op.unsubBlue as -,\n op.subBlue as -,\n op.BlueLib.toScore,\n op.lteBlue as <=,\n op.gtBlue as >\n} for Blue global;\n\ntype Score is int128;\nusing {op.addScore as +} for Score global;\nusing {op.subScore as -} for Score global;\nusing {op.divScore as /} for Score global;\n\nRed constant RED_LIMIT = Red.wrap(10);\nBlue constant BLUE_LIMIT = Blue.wrap(20);\n```\n\n`operators.sol`\n\n```solidity\npragma solidity ^0.8.19;\n\nimport {Red, Blue, Score} from \"./types.sol\";\n\nlibrary RedLib {\n function toScore(Red x) internal pure returns (Score) {\n return Score.wrap(int128(Red.unwrap(x))) + Score.wrap(10);\n }\n\n function exp(Red x, uint y) internal pure returns (Red) {\n return Red.wrap(Red.unwrap(x) ** y);\n }\n}\n\nlibrary BlueLib {\n function toScore(Blue x) internal pure returns (Score) {\n return Score.wrap(int128(Blue.unwrap(x))) - Score.wrap(20);\n }\n\n function add(Blue x, Blue y) external pure returns (Blue) {\n return Blue.wrap(Blue.unwrap(x) + Blue.unwrap(y));\n }\n}\n\nusing {BlueLib.add} for Blue;\n\nfunction addRed(Red x, Red y) pure returns (Red) { return Red.wrap(Red.unwrap(x) + Red.unwrap(y)); }\nfunction mulRed(Red x, Red y) pure returns (Red) { return Red.wrap(Red.unwrap(x) * Red.unwrap(y)); }\nfunction unsubRed(Red x) pure returns (Red) { return Red.wrap(-Red.unwrap(x)); }\nfunction lteRed(Red x, Red y) pure returns (bool) { return Red.unwrap(x) <= Red.unwrap(y); }\nfunction gtRed(Red x, Red y) pure returns (bool) { return !(x <= y); }\n\nfunction addBlue(Blue x, Blue y) pure returns (Blue) { return x.add(y); }\nfunction unsubBlue(Blue x) pure returns (Blue) { return Blue.wrap(-Blue.unwrap(x)); }\nfunction subBlue(Blue x, Blue y) pure returns (Blue) { return x + -y; }\nfunction lteBlue(Blue x, Blue y) pure returns (bool) { return Blue.unwrap(x) <= Blue.unwrap(y); }\nfunction gtBlue(Blue x, Blue y) pure returns (bool) { return !(x <= y); }\n\nfunction addScore(Score x, Score y) pure returns (Score) { return Score.wrap(Score.unwrap(x) + Score.unwrap(y)); }\nfunction subScore(Score x, Score y) pure returns (Score) { return Score.wrap(Score.unwrap(x) - Score.unwrap(y)); }\nfunction divScore(Score x, Score y) pure returns (Score) { return Score.wrap(Score.unwrap(x) / Score.unwrap(y)); }\n```\n\n### AST Changes\n\nThe new feature introduces two new attributes to the Abstract Syntax Tree (AST) produced by the compiler:\n\n1. `functionList` on `UsingForDirective` nodes can now contain operator entries of the following structure:\n ```json\n {\n \"operator\": \"+\",\n \"definition\": {\n /* function */\n }\n }\n ```\n in addition to the current entries for functions that are structured as follows:\n ```json\n {\n \"function\": {\n /* function */\n }\n }\n ```\n1. `BinaryOperation` and `UnaryOperation` nodes may now have a `function` attribute.\n If present, the attribute indicates that the operation is actually an invocation of a user-defined\n operator and specifies the ID of the function used to define it.\n\nThis effectively introduces a new way to perform a function call not represented by a `FunctionCall` node.\nIt will affect any tool that needs to detect and follow function calls, for example, to build a\ncontrol flow graph.\n\n### Design Rationale\n\n#### Why Does Solidity Need User-Defined Operators?\n\nThe support for user-defined value types in Solidity cannot be considered complete without more natural\nways to operate on them.\nThe ability to use operators was envisioned from the beginning, and the main reason it was not provided\nimmediately was the uncertainty regarding interactions with other features we plan to introduce.\nWe decided that it was best to release the feature in a minimal usable state and extend it over time,\ntaking into account user feedback.\n\nUDVTs in general were meant to fulfill two needs:\n\n1. More type-safety when performing operations on values of the same underlying value type that express\n conceptually different things.\n For example quantities of different dimensions could both be stored as `uint` but adding them without\n an explicit conversion is a mistake that can only be prevented if the compiler knows that they\n are values of different kinds.\n\n1. The ability to define new types using value types as the underlying representation.\n The best example of this are fixed-point types.\n\n Fixed-point types were originally planned to be an integral part of the language, and the\n partially implemented [`ufixed` and `fixed`](https://docs.soliditylang.org/en/latest/types.html#fixed-point-numbers)\n types are the vestiges of that old design.\n While trying to agree on the final design for the feature, however, we realized that no implementation\n will be a good enough trade-off for most situations and cannot become a suitable default choice.\n We decided to leave the choice up to library authors and instead focus on providing primitives\n necessary to build their own fixed-point types that feel like native types.\n User-defined operators are a step towards that goal.\n\n#### Will User-Defined Operators Make Auditing Harder?\n\nIn the feedback we received so far one of the most common concerns is the effect of the feature on contract\nauditing and potential to mask malicious code.\nWe want to address these concerns here.\n\nFirst of all, any new syntax increases the complexity of the language and has some potential to make code more obscure\nand harder to understand when abused.\nIt cannot be completely avoided and is always a trade-off between all the good and bad ways it can be used.\nWe think that improving the ergonomics of UDVTs is important enough that it outweighs any of the downsides we considered.\n\nThe readability benefits provided by operators cannot be overstated.\nCode containing even relatively simple expressions can be hard to understand at a glance when many function calls are involved:\n\n```solidity\nif (equals(add(mul(a, x), mul(b, y)), add(div(c, z), mod(d, w)))) {\n return add(div(c, z), mod(d, w));\n}\n```\n\nChaining attached functions somewhat helps by placing the operation name between the arguments (similar to an infix operator):\n\n```solidity\nif (a.mul(x).add(b.mul(y)).equals(c.div(z).add(d.mul(w)))) {\n return c.div(z).add(d.mod(w)));\n}\n```\n\nIt is, however, still a far cry from the clean, concise notation that can be achieved with the use of operators:\n\n```solidity\nif (a * x + b * y == c / z + d % w) {\n return c / z + d % w;\n}\n```\n\nThe last example is how we would prefer real code to look like.\nBy the way, did you spot the mistake in the second example?\n\nIt is also essential to realize the actual scope of the feature.\nYou may imagine an elaborate system from languages like C++, with complicated rules and many corner cases.\nAs implemented now the feature is deliberately very limited.\nWe tried both to limit surprises and to avoid prematurely adding support for cases that we have not carefully thought out.\n\nIn the current implementation, it is not possible to:\n\n1. Have operators on types other than UDVTs.\n - User-defined operators on [reference types](https://docs.soliditylang.org/en/latest/types.html#reference-types)\n like structs or arrays are not allowed.\n - It is not possible to define them on built-in value types, function types or enums.\n - You cannot define them to unnamed types using the type wildcard (`*`).\n1. Have operators that are not `pure`.\n Operators cannot modify storage.\n They can, at most, make pure external calls.\n\n The worst that is technically possible with tricks is for them to modify memory (only through inline assembly)\n or make staticcalls (through interfaces that do not match deployed code).\n\n1. Have operators on mixed types.\n Parameter and return value types of operators must be the same.\n Also, no implicit conversions are possible, so it is very simple to determine if a particular operation\n will invoke a user-define operator or a built-in one (just look at the type).\n1. Redefine operators.\n You cannot replace any of the built-in operators with a custom definition.\n For user-defined operators, only one definition can be provided.\n1. Bind operators to contract functions.\n This also means that operator definitions cannot be inherited, virtual, or remain unimplemented.\n1. Bind operators to overloaded functions.\n1. Use built-in functions to define operators.\n You cannot e.g. bind an operator directly to `keccak256()`.\n1. Change the precedence or associativity of an operator.\n1. Define any of the operators with more complex semantics.\n You cannot define:\n - `&&` and `||` due to their short-circuiting behavior.\n - `++` and `--` because they modify their argument and also have separate prefix and postfix variants with different semantics.\n - `+=`, `-=`, `^=`, `*=`, `/=`, `%=`, `&=`, `|=`, `^=`, `<<=`, `>>=` because they modify their argument.\n - `=`, `()`, `?:`, and `.` because they are built-in for all types.\n - `delete`, `new`, and `[]` because they are not usable with UDVTs.\n1. Define custom operators that do not exist in the language, like `===` or unary `+`.\n1. Bind operators in bulk or accidentally.\n The `using L for T` syntax for attaching a whole library to a type does not cover operators.\n Operators must always be bound explicitly.\n\nIn addition to these restrictions, we decided to limit them even more in response to feedback we received before releasing Solidity 0.8.18.\nThis means you also cannot:\n\n1. Use library functions to define operators.\n This excludes external, public, and private functions.\n It is also now impossible to apply modifiers to operators because free functions cannot have them.\n1. Have non-global operators, which has several consequences:\n - Operators can only be bound in the file that also defines the type.\n They are available wherever the type is available and cannot have different definitions in different scopes.\n - Local bindings at contract level are not possible (i.e. inside contracts and libraries).\n This also makes it impossible to define operators for local types that are defined inside contracts or libraries.\n1. Define `!`, `<<`, `>>` and `**`.\n\nWe may lift _some_ of these restrictions in the future, but we will consider every case carefully.\nSome of them, like the inability to use overloaded functions, stem from pre-existing limitations of the syntax, but\nothers, like a ban on redefining built-in operators, are very intentional and meant to limit potential misuse.\n\nIn the end, any audit must include a careful review of type definitions and functions, and we think\nthat this will reveal most cases of malicious behavior.\nGiven the above limitations, bad operators cannot do much more than mislead, which is something that\nwill come up in the review of the definition.\nWeird behavior, like `+` that does anything other than perform addition should raise a red flag,\njust like a function called `transfer()` that does not transfer anything.\n\nReviewing the invocations of an operator should not pose significant problems either, as long as\nthe reviewer is aware of the types involved, which is always necessary to understand the expression.\nThis is not a new thing, since the behavior of the built-in operators has always been affected by operand types.\nFor example the overflow semantics of integer types depend on the size of the type in question.\n\nNote that user-defined operators cannot alter semantics of the existing code.\nFor built-in types behavior cannot be altered at all.\nFor UDVTs any operator must necessarily be user-defined so seeing it is not much different from\nseeing a function call.\nAn operator can have only one definition, the definition must be explicitly bound in the file that\ndefines the type and cannot be shadowed.\nIn both cases the name may be misleading and a look at the definition may be necessary.\n\nIt is also worth noting that the feature is meant to be predominantly used in reusable libraries providing common types.\nIn this context, once the library is audited, the concern about operators having misleading or unexpected behavior should be minimal.\n\n### The Future of User-Defined Operators and UDVTs\n\nNow that we know the new feature and its limitations, the question on everyone's mind is probably\n\"Will it stay that way?\".\nHow will the feature evolve in the short and long term?\n\n#### Literal Suffixes\n\nThe very next step for UDVTs is the ability to provide custom literals of user-defined value types.\nThe ease of using literal values in expressions is a big part of what makes a type feel native.\nSolidity already provides fractional literals and our intention is to make them usable with custom\nfixed-point number implementations.\nTo achieve that we are going to allow defining suffix functions that return UDVT by converting\nliterals that are already available in the language:\n\n```solidity\ntype UFixed128x18 is uint128;\n\nfunction uf(int16 mantissa, uint8 exponent) pure suffix returns (UFixed128x18) { ... }\n```\n\n```solidity\nUFixed128x18 circumference = 2 uf * 3.14 uf * radius;\n```\n\nWhile the application of a suffix will involve a function call, eventually, with the help of\ncompile-time evaluation, literal suffixes are going to become as efficient as native literals.\n\n#### More Operators\n\nMany operators have been excluded from the initial implementation.\nSome of them will very likely be user-definable at some point:\n\n1. `<<`, `>>` and `**` were excluded due to their non-uniform arguments.\n For built-in types, the right-hand side is always an unsigned type.\n1. `!` was excluded because we have to decide whether it should return the same type as the argument\n or just `bool`.\n We are leaning towards the latter, but it needs more consideration.\n1. `++` and `--` are very convenient, and we want to have them eventually.\n They just need to be handled in a special way, and there is more than way to do so.\n1. Composite assignment operators, such as `+=`, will likely be provided automatically\n in the future as long as the corresponding arithmetic/bitwise operator is available.\n Allowing a direct implementation is currently not possible anyway, because there are no references\n to value types in the language.\n\nOn the other hand, it is unlikely that we will allow redefining some other operators:\n\n1. `=` is already provided by the compiler for all types and it is very unlikely that we will ever allow redefining it.\n\n#### Operators on Complex Types\n\nWhile UDVTs were the primary target, in some cases it may also be reasonable to build a custom type\nwith a more complex underlying representation, such as a struct or a dynamic array.\nThe main thing holding us back here are upcoming changes to the type system that are a significant part\nof our roadmap for the near future.\nTo avoid having to introduce breaking changes later, we decided to defer support for such operators until\nthese changes are behind us.\n\n#### What Will Not Change?\n\nDue to concerns about the safety of the feature, there are some key elements that are very unlikely to ever change regarding operators.\nOperators will likely always be global and defined at file level with free functions.\nIt will not be possible to replace built-in opertors or redefine already defined user-defined operators.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/03/10/solidity-developer-survey-2022-results.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/03/10/solidity-developer-survey-2022-results.json deleted file mode 100644 index a3a9af7f..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/03/10/solidity-developer-survey-2022-results.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2022 Results","date":"2023-03-10","author":"Franziska Heintel","category":"Announcements"},"content":"\nThe [2022 Solidity Developer Survey](https://blog.soliditylang.org/2022/12/07/solidity-developer-survey-2022-announcement/) results are in! In this post, we will be summarizing and analyzing them.\n\nFirst of all, a big thank you to everybody who took the time and participated and to everybody who helped us spread the word about it!\nThis year, we received a smashing 1401 responses. That is more than a 3x in responses compared to the previous survey and we couldn't be happier with the turnout.\nYour input is invaluable to us and plays a crucial role in helping to continuously improve the Solidity developer experience as a whole.\n\nBefore we get started, here are a few useful links:\n\n- In the spirit of open source, you can find all raw data of the survey results [here](https://docs.google.com/spreadsheets/d/1A5iF3aKhFv9wTTJ10ko_uxgoflc8oEpVe3gqAAWoC2w/edit?usp=sharing) and all graphs [here](https://docs.google.com/presentation/d/1xH5pGZ6rrAP_jzRQobf0Mn1XYquyg8bD17DBQyrErMo/edit?usp=sharing).\n- Since this is already our third time conducting a yearly survey, it may be interesting for you to compare the outcome to the previous surveys. The results from the 2021 developer survey are available [here](https://blog.soliditylang.org/2022/02/07/solidity-developer-survey-2021-results/) and from 2020 [here](https://blog.soliditylang.org/2021/01/26/solidity-developer-survey-2020-results/).\n\nWithout further ado, let’s dig into the 2022 results!\n\n## Summary & Notable Insights\n\n- **Survey Audience**: In total, 1401 developers from 100 different countries participated in the 2022 survey. That is more than a 222% increase in responses compared to the previous survey (435 respondents)! The coverage of different geographies also continuously increased from 48 countries in 2020 to 73 countries in 2021 to 100 countries in 2022. Roughly 18% stated to be residing in the US, followed by India (10%) and France (5%).\n- **Developer Profiles**: The level of coding experience remains at a medium to a high level, with the majority of respondents having coded professionally for 3 or more years, 12.5% even more than 15 years.\n- **Solidity Experience**: More than half of all respondents have been using Solidity for less than a year, while 13.8% have been using it for more than 3 years. 41% use Solidity daily, and 37.3% weekly.\n- **Solidity Expertise**: Many deem themselves Solidity experts, with a self-rating in the expertise of 7 or higher (out of 10). 4.6% rate their expertise as a 10 out of 10. 70% of those have been using Solidity for 2-3 years or longer.\n- **Developer Experience**: The majority (+75%) believe that the Solidity developer experience improved in the last year. 0.9% are of the opinion it got worse. Debugging issues are frequently encountered, followed by stack-too-deep errors and bytecode size limitations.\n- **Future Features**: Support for decimal numbers and generics was mentioned most often as the “most anticipated Solidity feature”.\n- **Liked & Dreaded Features**: Respondents most like Solidity's syntax, the simplicity of learning, reading, coding, and compiling, and the static typing. The most significant pain point is “stack-too-deep”, with 33.6% of all votes, followed by missing memory optimizations (waste of memory) (24.4%) and redundant checks (e.g. in checked arithmetic) (11.8%). 9.9% say that compiler performance is their biggest issue.\n\n![Demographics Header](/img/2023/02/header1.png)\n\n## Demographics of the Survey Audience\n\n_⚠️ Be aware that this survey has only been shared in English when interpreting results regarding the distribution of countries of residency and language preferences._\n\nAs usual, we begin by looking at the developers who participated in this survey: In this first chapter, we cover general information on the survey audience, which includes residency and spoken languages.\n\nIn total, 1401 developers from 100 different countries participated in the 2022 survey. Compared to the previous survey, this represents a 222% increase in responses.\n\nThe coverage of different geographies increased from 73 countries in 2021 to 100 countries in 2022.\n\n#### Residency\n\nRoughly 18% of respondents stated to be residing in the US, followed by India (10%), France (5%), and Nigeria (4.5%).\n\n![Survey Participants World Map](/img/2023/02/geo.png)\n\n![Survey Participants List of Countries with 20+](/img/2023/02/geo2.png)\n\n#### Language\n\nThe diversity of respondents did not only increase in terms of countries of residency but also in terms of the native language. In total, 70 different languages were mentioned as their native languages.\nThat’s a 40% increase compared to the previous year.\n\n31.5% state English as their native language, followed by Indian languages (12.4%), Spanish (8.4%), French (6.9%), Russian (6.4%), and German (4.7%).\n\n_ℹ️Hindi, Urdu, Telugu, Bengali, Tamil, Malayalam, Gujarati, Marathi, Kannada, and Odia were clustered as “Indian languages”. Chinese, Cantonese, and Mandarin were clustered as “Chinese languages”. Persian, Pashto, and Ossetian were clustered as “Iranian languages”._\n\n![Survey Participants Native Language](/img/2023/02/lang.png)\n\nWith almost 80%, the majority of respondents predominantly speak English at work.\nOther languages that are spoken at work: French (3.2%), Russian (3.1%), and Chinese languages (2.3%).\n\n![Survey Participants Work Language](/img/2023/02/lang_work.png)\n\nOf the respondents who didn't name English as their native language, 87% are okay with reading the Solidity documentation in English.\n\n12.9% would prefer to read it in their native language, the most mentioned ones being Spanish, Indian languages, and Russian.\n\n![Preferred Documentation Language](/img/2023/02/lang_docs.png)\n\n![Preferred Documentation Language Breakdown](/img/2023/02/lang_docs_integrated.png)\n\n_ℹ️ Note: This survey has only been conducted in English, which may have impacted the outcome of this question. We still believe internationalization of resources like the Solidity documentation is a crucial factor in lowering the barriers of entry, and we aim to support by helping coordinate the community-driven [translation efforts](https://github.com/solidity-docs)._\n\n![Developer Profile Header](/img/2023/02/header2.png)\n\n### Developer Profile\n\nIn the second section of the Solidity Developer Survey, we learn more about the professional experience and coding preferences of the survey audience.\n\n#### Work Experience & Employment\n\nRoughly 71% of respondents were employed at the time of the survey, while roughly 12% stated they were students, and 17% said they were currently not working professionally.\n\nCompared to the previous survey, there is a slight increase in both the number of students and currently unemployed developers.\n\n![Employment Status](/img/2023/02/employment.png)\n\nThe employed respondents predominantly work in the “crypto” (58.2%) and technology (21.6%) and financial services (5.4%) sector.\n\n![Industry Sector Breakdown](/img/2023/02/sector.png)\n\n37,1% of all respondents are seniors and have been coding professionally for 6 years or more, 12.5% of them even for 15+ years.\n\nOn the other side, roughly 12% are coding newbies and have only coded professionally for less than a year.\n\nWith approximately 22%, the biggest group sits in the middle of the distribution and has professional coding experience of 3-5 years.\n\nOverall, the level of coding experience is medium to high with the majority of respondents (59.2%) having coded professionally for 3 or more years.\n7.7% have never coded as part of their job, 37% of which are students.\n\n![Professional Coding Experience](/img/2023/02/coding_xp.png)\n\n#### Touch Points with Solidity\n\nAs in the previous survey, the majority of respondents (75.7%) still use Solidity for their personal projects.\n\nRoughly 64% of all respondents use Solidity at work.\n\nMore than 20% state they are leading a programming team.\n\n![Survey Participants Touch Points with Solidity](/img/2023/02/touchpoints.png)\n\nOnly 23.4% of respondents contribute to open-source projects written in Solidity on a daily or weekly basis. The rest states to do so monthly (27.4%) or never (47.1%).\n\n![Survey Participants Open Source Contributions](/img/2023/02/open_source.png)\n\n#### Programming Language Preferences\n\nSolidity marks the most used programming language for the survey audience (28.6%), closely followed by JavaScript (25.6%) and TypeScript (20.5%).\n\nOther less frequently mentioned languages are Python (8.7%), Rust (2.7%), and Go (2.5%).\n\n![Most Used Programming Language](/img/2023/02/progr_lang_use.png)\n\nSimilar to the previous year, the respondents' favorite programming languages are distributed more evenly across various languages.\n\nSolidity is the most popular, scoring 18.8% of all entries, followed by JavaScript (17.3%), Python (15.2%), TypeScript (15.0%), and Rust (8.6%).\n\n![Favorite Programming Language](/img/2023/02/progr_lang_fav.png)\n\n#### Operating System\n\nMost respondents use MacOS as their primary Operating System (41.8%). Windows and Linux seem comparatively popular, with 30.5 and 27.7%, respectively.\n\n![Operating System](/img/2023/02/os.png)\n\n![Solidity User Profile Header](/img/2023/02/header3.png)\n\n### Solidity User Profile\n\nIn this section of the survey, we asked respondents about their Solidity-specific development experience and usage habits.\n\n#### Solidity Experience\n\nAlmost 50% of all respondents deem themselves Solidity experts, with a self rating in expertise of 7 or higher (scale of 10).\n\n4.6% rate their expertise as a 10 out of 10, and 70% of those have been using Solidity for 2-3 years, or longer.\n\nRoughly 23% can be considered beginners or low-frequency users with a self-rated expertise level of 4 or lower.\n\nThe distribution of self rating remained similar to the previous survey, even though the survey audience tripled in size.\n\n![Solidity Expertise Level](/img/2023/02/sol_expertise.png)\n\nRoughly 50% of all respondents have been using Solidity for less than a year, with 13% having just started their Solidity journey (less than three months of experience).\n\n13.83% have been using Solidity for more than 3 years and can thus be considered “Solidity seniors''.\nTo put years into perspective: [“Version 0.1.1”](https://github.com/ethereum/solidity/commits/15dc5954c3a2e2a9ce96f2f77d41adef98a4cced), the oldest version of Solidity on `solc-bin`, is from August 2015 and thus roughly 7.5 year old.\nThe language is still relatively young and continues to evolve. We may add more granular selection options for “more than 3 years” of Solidity experience to distinguish this better in the next survey.\n\n![Solidity Experience Level](/img/2023/02/sol_experience.png)\n\nAs in previous years, Solidity appears rather easy to learn, with 21.2% of respondents feeling productive in less than a month and 39.3% in less than half a year.\n\n8.1% needed more than a year to feel comfortable with the language.\n\n17.8% don't feel productive yet, out of which more than 74.2% are beginners and have been using Solidity for 6 months or less, and 47% even less than three months.\n\n![Time to Productiveness](/img/2023/02/sol_productivity.png)\n\n#### Solidity User Profile and Usage Habits\n\nWith regards to usage frequency, more than 40% of respondents use Solidity on a daily basis!\n\n37.3% use it weekly, and 13.9% on a monthly basis.\n\nRoughly 8% indicated to be using Solidity \"rarely\" or \"never\".\n\nMost of them indicated before that they use Solidity for personal projects and code in a different programming language at work.\n\n![Solidity Usage Frequency](/img/2023/02/sol_frequency.png)\n\nA striking 81.8% of all respondents use Visual Studio Code as their editor when writing Solidity code.\nVim and IntelliJ follow in the second and third ranks with 3.7 and 3.4% usage, respectively.\n\nCompared to the previous survey in 2021, Visual Studio code gained significantly in popularity (from roughly 50% to 81.8%).\n\n![Editor Overview](/img/2023/02/editor.png)\n\nDepending on the chosen IDE, we also asked respondents which Solidity-related plugins they use, if any.\n\n“HardHat VSCode” by Nomic Foundation and the “Solidity” extension by Juan Blanco (both for Visual Studio Code) are the most popular.\n\n![Editor Plugins Overview](/img/2023/02/editor_plugins.png)\n\nHardhat remains the most popular Ethereum-specific development environment, with roughly 75% of all respondents using Hardhat.\n\nRemix follows with 42%. Foundry has significantly increased its share from 1.6% in 2021 to 30% in 2022.\n\nTruffle continues to move more into the background, with 17% of respondents indicating that they use it.\n\nRather \"niche\" Ethereum-specific development environments are Brownie (6.7%), Ape (3.3%), Dapptools (2.3%), and Embark (0.8%).\n\n4.4% of respondents are not using any Ethereum-specific development environment.\n\nIt’s worth noting that this question was a checkbox question, allowing respondents to select multiple answers.\n\n_⚠️ Comparing the results from 2020, 2021, to 2022 may offer some insights like Truffle losing a significant share (2020: 59.3% -> 2021: 26.2% -> 2022: 17%), while Hardhat, and newcomers like Foundry increased their share in users. However, it's important to consider that the previous surveys had significantly fewer responses (2020: 194, 2021: 435, 2022: 1401). A year-on-year comparison can only be interpreted as a loose trend and it’s not the intent of this study to analyze user splits between IDEs in detail._\n\n![Ethereum IDE Overview](/img/2023/02/eth_ide.png)\n\nWith roughly 90%, 0.8.x Solidity versions remain to be the by far most used ones. The usage share of both the 0.7.x (10.2%) and the 0.6.x (7.7%) series continues to decrease since the previous survey. Everything older than that is hardly in use anymore.\n\n![Used Solidity Versions](/img/2023/02/versions.png)\n\n_⚠️ Reminder: Please make sure to frequently update your code (and compiler) to the latest Solidity version. [Several important bug fixes and security improvements](https://github.com/ethereum/solidity/blob/develop/docs/bugs_by_version.json) are added in the newer versions!_\n\n#### Solidity Usage Details\n\nThis year, we also asked specific questions about Solidity usage habits.\n\nFor charts and figures on those, please refer to the [presentation with all graphs](https://docs.google.com/presentation/d/1xH5pGZ6rrAP_jzRQobf0Mn1XYquyg8bD17DBQyrErMo/edit?usp=sharing) and the [raw data file](https://docs.google.com/spreadsheets/d/1A5iF3aKhFv9wTTJ10ko_uxgoflc8oEpVe3gqAAWoC2w/edit?usp=sharing).\n\nTo summarize:\n\n- Command line: Roughly two thirds of respondents do not use the Solidity compiler directly via the command line. 37.5% do.\n- Command line: When using the compiler on the command line, 61.3% still use Standard JSON.\n- Optimizer: 93.6% do not disable the optimizer. The 6.4% that enabled the optimizer, stated that they would do so due to contract size limits, slow compilation, in order to pass EtherScan verification, for gas testing purposes or because of security concerns.\n- Gas estimator: 23.4% use the gas estimator that is built into the compiler. 25% have tried it, but don’t use it regularly, while 41.5% never use it.\n- SMTChecker: 81% of all respondents never use the SMTChecker. 13.7% have tried it and 5.4% use it frequently. You can learn more about the SMTChecker [here](https://docs.soliditylang.org/en/latest/smtchecker.html).\n- `via-IR` compilation pipeline: 70.8% do not know what `via-IR` is. 18.6% use the `via-IR` pipeline already. In the following weeks, we will share more context about why you should switch from the legacy compilation pipeline to `via-IR` and what this means.\n- Metadata publication: 53.5% publish the metadata of their smart contracts. 27.8% don’t, while 18.7% don’t know what this means.\n- Sourcify: 11% of all respondents use Sourcify for smart contract verification, while 21.2% claim to not need it. 67.8% don’t know what Sourcify is. If you want to learn more about Sourcify, visit [sourcify.dev](https://sourcify.dev/).\n\n#### Fixed-Point Types\n\nApproximately 91% of all survey respondents don’t use fixed-point types.\n\nThe 9% (100 people) that do primarily use [PRB Math](https://github.com/PaulRBerg/prb-math), [solmate’s FixedPointMathLib](https://github.com/transmissions11/solmate/blob/main/src/utils/FixedPointMathLib.sol), and custom implementations.\n\n![Fixed-Point Types Usage](/img/2023/02/fixed_point_types.png)\n\n![Fixed-Point Types Libraries](/img/2023/02/fixed_point_types_libs.png)\n\n#### Other EVM Networks\n\nMore than half of all respondents use Solidity outside of [Ethereum Mainnet](https://ethereum.org/en/glossary/#mainnet) and [testnets](https://ethereum.org/en/glossary/#testnet).\nWhen asked which other networks they deploy their smart contracts on, the most popular chain was by far Polygon (formerly Matic Network).\nOther often mentioned blockchains include Binance Smart Chain, Arbitrum, Avalanche and Optimism.\n\n![Deployment To Other Chains](/img/2023/02/solidity_other_chains.png)\n\n![Deployment To Other Chains Breakdown](/img/2023/02/solidity_other_chains_breakdown.png)\n\n#### Other Smart Contract Languages\n\nHalf of all respondents use other smart contract languages alongside Solidity.\nThe most used other smart contract language is [Yul](https://docs.soliditylang.org/en/latest/yul.html), an intermediate language for Solidity, with 17.2%, followed by [Vyper](https://docs.vyperlang.org), a pythonic EVM language, with 10.5%.\n[Cairo](https://www.cairo-lang.org/docs/) (7.1%), a STARK based language targeting StarkNet, and [Huff](https://docs.huff.sh) (6.2%), a low-level assembly language for the EVM, are also mentioned several times.\nOther “newcomers” like [Sway](https://fuellabs.github.io/sway/) (2.4%) and [Fe](https://fe-lang.org/docs/) (1.5%) also make it into the chart.\n\n![Other Smart Contract Languages](/img/2023/02/smart_contr_langs.png)\n\n![Solidity Developer Experience Header](/img/2023/02/header4.png)\n\n## Solidity Developer Experience\n\n76.5% of all respondents believe that the Solidity developer experience generally improved throughout the last year. 25.1% are of the opinion that they noticed a big improvement compared to the previous year.\n\n7.8% say that nothing has changed in their experience, while 0.9% of the respondents think it got worse.\n\nCompared to the previous year’s results, the share of “got worse” and “I don’t know” decreased, while “no change” slightly increased. Overall, the picture is very comparable.\n\n![Solidity Developer Experience](/img/2023/02/dev_ex.png)\n\nWhen getting stuck on a Solidity problem, most respondents visit Ethereum StackExchange / StackOverflow for help or search for a solution on the Internet.\nMany also ask their coworkers for help or watch tutorial videos.\n\n![Solving Problems](/img/2023/02/solidity_problem.png)\n\n### Recurring Issues\n\n60% of respondents don't encounter the same or similar issues multiple times when developing in Solidity.\n\nAmongst the 40% that do, debugging issues are encountered most frequently, followed by stack-too-deep errors and bytecode size limitations.\n\n_ℹ️On the topic of debugging issues, we'd like to use the opportunity to highlight a new initiative aimed at defining a common debugging data format for languages built on top of the EVM: [ethdebug](https://github.com/ethdebug/format/). The end result will be a specification that will allow debuggers, analyzers, and other tools to reliably map between the EVM bytecode produced by compilers and the high-level language features. This has been a common pain point across the ecosystem for years and is becoming more pressing with the introduction of the new IR-based code generator (i.e. the `via-IR` pipeline) in Solidity, which often breaks implicit assumptions tools made based on how the legacy pipeline worked. We encourage all developers working on such tools to join the working group. The group has regular bi-weekly meetings and coordinates via the [ethdebug channel](https://matrix.to/#/#ethdebug:matrix.org) on Matrix._\n\n![Recurring Issues](/img/2023/02/recurring_issues.png)\n\n![Recurring Issues](/img/2023/02/recurring_issues_breakdown.png)\n\n### Getting Started & Documentation\n\nMost respondents considered it easy or “okay” to get started using the Solidity compiler.\n4.2% (55 people) stated that it was difficult for them. When asked what made it difficult to get started, some mentioned a previous lack of technical background or development experience, and others also pointed out a lack of good learning resources or outdated learning resources.\n\n![Getting Started](/img/2023/02/getting_started.png)\n\nAlmost 64% of survey respondents consider the Solidity documentation helpful, followed by 33% who deem it “somewhat” useful. Only 3.3% don’t find it useful at all.\n\nIdeas for improvement most prominently ask for more code examples but also a better high-level overview of syntax, better in-docs search, better SEO, and easier wording.\n\n![Solidity Documentation Usefulness](/img/2023/02/docs.png)\n\n### Biggest Pain Points\n\nDifferent from the previous years, this year, we tried to structure the question around the “biggest pain points” better and clustered the first step into several prominent categories: Stack-to-deep, gas related issues, compiler performance, and “other”.\n\nThe biggest pain point is “stack-too-deep”, with 33.6% of all votes, followed by missing memory optimizations (waste of memory) (24.4%) and redundant checks (e.g. in checked arithmetic) (11.8%).\n9.9% say that compiler performance is their biggest issue.\n\n15.8% selected “other” and were able to specify their most significant pain point in a free text field. Most prominently mentioned: Contract size limit, error messages, and issues with debugging.\n\n![Solidity Pain Points](/img/2023/02/pain_points.png)\n\n### High-Impact Compiler Bugs\n\nAs part of this year’s study, we were also curious to find out whether Solidity developers had been affected by any of the high-impact compiler bugs (codegen bugs that are announced with [Security Alerts](https://blog.soliditylang.org/category/security-alerts/) on the Solidity blog).\n\nInitially, 4.7% said yes. However, when asked which one they were affected by, only two out of the 63 people were able to point to actual Solidity vulnerabilities in the follow-up question.\nThis gives room to assume the actual number of affected developers from this survey is significantly lower than 4.7%, and some respondents may have simply misunderstood the question.\nWe will try to phrase this question more precisely in the next survey.\n\n![High Impact Bugs](/img/2023/02/security_bugs.png)\n\n## Language Design & Upcoming Features\n\n### Favorite Feature / Solidity Aspect\n\nRespondents most like Solidity's syntax, the simplicity with regards to learning, reading, coding and compiling and static typing.\n\nThe most mentioned liked features in descending order were:\n\n- Syntax\n- Easy to... read/code/compile/learn\n- Simplicity\n- Static/strong/strict typing\n- Similarity to other languages (most mentioned JS/TS and object-orientedness, also mentioned: Rust, C++, Python)\n- Modifiers\n- Inline assembly\n- Mappings\n- Inheritance\n- (User-defined) types\n- SafeMath / checked and unchecked\n- Yul\n\n### Most Dreaded Aspect\n\nThis year, we asked the survey audience a slightly different question: “If you could change one thing about Solidity, what would it be?”\n\nMost mentioned “change requests” in descending order were:\n\n- Fix stack-too-deep\n- Better array handling\n- Gas optimizations\n- Add fractional numbers (fixed point types / floating types)\n- Better error handling, descriptions\n- Better debugging\n- Higher contact bytecode size limit\n\n### Future Features\n\n#### Most Anticipated Feature\n\nSupport for fractional numbers and generics was mentioned most often as the “most anticipated Solidity feature”.\n\n_⚠️ Similar to the previous year, we noted that respondents were using various different terms like \"floats\", \"floating point arithmetic\", \"floating point number\", \"fixed point numbers\", and \"fixed point math\". We categorized those as \"fractional numbers\"._\n\nMost mentioned anticipated features in descending order:\n\n- Support for fractional numbers (fixed point types / floating points)\n- Generics\n- Better optimization\n- No stack-too-deep\n- Better debugging\n- Transient storage\n- Standard library\n- Better error messages\n\n#### EIP Support\n\nWe also wanted to know what Solidity-related EIPs the survey respondents think need support in the compiler.\n\nEIP-2535 “‘Diamonds, Multi-Facet Proxy” was mentioned most often, followed by EIP-1153 “Transient Storage” and EIP-3540 “EOF - EVM Object Format”.\n\n![Solidity-related EIPs](/img/2023/02/EIP_support.png)\n\n### Restrictiveness\n\nRegarding language restrictiveness, roughly 43% of respondents wish that Solidity stays “as is”. 41% tend towards more restrictive/explicit, having more checks, while approximately 16% would like Solidity to be less restrictive.\n\n![Solidity Restrictiveness Ranking](/img/2023/02/restrictiveness.png)\n\n![Solidity Developer Community Header](/img/2023/02/header6.png)\n\n## Solidity Developer Community\n\n### Language Design Community Participation\n\nLess than 10% of all respondents ever participated in Solidity language design related efforts.\n\nThe distribution between participating in forum discussion and proposing features or language changes as a Github issue is fairly similar,\nwhile language design discussions and feedback calls have slightly less participation (all between 80 - 108 people, multiple selections possible).\n\nOf the roughly 90% that did not participate in language design, most state they don’t know how, followed by being “too busy with work or other things”.\nRoughly 30% say that they are not interested in or qualified for the discussions.\n\n![Language Design Participation](/img/2023/02/lang_design.png)\n\n### Staying Informed\n\nSimilar to the previous years, most people like to stay up-to-date about Solidity versions, security alerts, and announcements by following Solidity on [Twitter](https://twitter.com/solidity_lang) or [Mastodon](https://fosstodon.org/@solidity).\n\nOther often used means for information are the [Solidity blog](https://blog.soliditylang.org/) and [Solidity GitHub release page](https://github.com/ethereum/solidity/releases).\n\nInterestingly, almost 30% claim to not be doing any of the above.\n\nAs part of “other”, respondents specified several community based means to stay up-to-date:\n\n- YouTube\n- Crypto Twitter / Community chats\n- [Solidity docs](https://docs.soliditylang.org/en/latest/)\n- [\"Week in Ethereum News\" Newsletter](https://www.weekinethereumnews.com/)\n- \"Crypto influencers\" / Popular Solidity developers\n- Updating [RemixIDE](https://remix.ethereum.org/) / [Hardhat](https://hardhat.org/) / [VS Code](https://code.visualstudio.com/)\n- Coworkers\n- Google\n- Newsletters\n- Conferences / Meetups\n- [OpenZeppelin forum](https://forum.openzeppelin.com/)\n- [Solidity website](https://soliditylang.org/)\n- Reddit\n\n![Means To Stay Up-To-Date](/img/2023/02/stay_informed.png)\n\n### Interaction with Other Solidity Developers\n\nMore than half of respondents interact with other Solidity developers.\n\n16.7% don’t interact with other Solidity developers at all.\n\n![Developer Interaction](/img/2023/02/interaction.png)\n\nLike in the previous years, as the last part of the survey, we wanted to hear how many participants agree or disagree with several statements regarding the Solidity community and the work of the Solidity team.\n\n- 66% of respondents feel (somewhat) welcome in the Solidity developer community.\n- Roughly 77% agree or somewhat agree that they feel confident in the work of the Solidity team.\n- More than half feel welcome to contribute to Solidity, however, only less than 40% say that they know how to contribute ideas or feedback to Solidity.\n- Roughly 25% are confident that the Solidity team understands their needs as a developer. Another 35% somewhat agree, while approximately 9% disagree or strongly disagree.\n\nThe results of this “community and Solidity team confidence ranking” are very comparable to the previous year.\n\nOne can derive that while the community seems confident in the competency/qualification of the Solidity team, the communications around ways to contribute as well as understanding of the community’s needs, can be improved.\nThose are things that we have been working on improving throughout the last years and will continue to do so.\n\n![Community and Solidity Team Confidence Ranking](/img/2023/02/community_statements.png)\n\n## Thank You & See You Next Year!\n\nLastly, we want to take the opportunity to thank you for all your lovely and motivating messages and the feedback received.\nWe were overwhelmed by the sheer number of survey responses and hope to continue this trend in the coming years!\nWe hope the insights from this survey were useful to you, as they certainly are for us!\nWe will continue to collect feedback on an ongoing basis.\n\nTo not miss anything, make sure to:\n\n- Follow Solidity on [Twitter](https://twitter.com/solidity_lang) or [Mastodon](https://fosstodon.org/@solidity).\n- Join the language design discussions in the [Solidity forum](https://forum.soliditylang.org/) or provide us feedback there.\n- Follow announcements and security alerts on the [Solidity blog](https://blog.soliditylang.org/).\n- Follow and ⭐ the [Solidity repo on Github](https://github.com/ethereum/solidity).\n\n---\n\n_All graphs can be found [here](https://docs.google.com/presentation/d/1xH5pGZ6rrAP_jzRQobf0Mn1XYquyg8bD17DBQyrErMo/edit?usp=sharing). The raw and analyzed data can be found [here](https://docs.google.com/spreadsheets/d/1A5iF3aKhFv9wTTJ10ko_uxgoflc8oEpVe3gqAAWoC2w/edit?usp=sharing)._\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/05/10/solidity-0.8.20-release-announcement.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/05/10/solidity-0.8.20-release-announcement.json deleted file mode 100644 index 2db94b4e..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/2023/05/10/solidity-0.8.20-release-announcement.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.20 Release Announcement","date":"2023-05-10","author":"Solidity Team","category":"Releases"},"content":"\nWe are excited to announce the latest release of the Solidity Compiler, [Solidity v0.8.20](https://github.com/ethereum/solidity/releases/tag/v0.8.20).\nThis latest version includes a range of improvements in the via-IR pipeline and improves the list of events exposed in the contract ABI, and, most importantly, support for the [Shanghai hard fork](https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md)!\n\n### Important Note\n\nThis compiler switches the **default** target EVM version to Shanghai, which means that the generated bytecode will include `PUSH0` opcodes.\nBe sure to [select the appropriate EVM](https://docs.soliditylang.org/en/v0.8.20/using-the-compiler.html#setting-the-evm-version-to-target) version in case you intend to deploy on a chain other than mainnet like L2 chains that may not yet support `PUSH0`,\notherwise, deployment of your contracts will fail.\n\n### Experimental AST import via Standard JSON\n\nAn interesting new feature for tooling developers is the ability to import JSON ASTs via the Standard JSON interface using `SolidityAST` as input language.\nWe have released this as an experimental feature so far, mainly due to the lack of proper error reporting on malformed ASTs and the fact that for now we\ngenerally don't guarantee sound behavior on invalid input ASTs.\n\nSo while we strongly advise against using the AST import in any production pipeline, and especially against relying on the bytecode generated from imported\nASTs for production use, we hope that this new feature will enable the easier development of tools in the ecosystem, and we encourage giving it a try and\ngetting back to us with any feedback.\n\nAlso, note that the compiler will perform type-checking and analysis on the imported AST again - to make sure that the compiler honors the transformation you\nmay perform on the AST, you can re-export the imported AST and check the result.\n\n## Full Changelog\n\n### Compiler Features\n\n- Assembler: Use `push0` for placing `0` on the stack for EVM versions starting from \"Shanghai\". This decreases the deployment and runtime costs.\n- EVM: Set default EVM version to \"Shanghai\".\n- EVM: Support for the EVM Version \"Shanghai\".\n- NatSpec: Add support for NatSpec documentation in `enum` definitions.\n- NatSpec: Add support for NatSpec documentation in `struct` definitions.\n- NatSpec: Include NatSpec from events that are emitted by a contract but defined outside of it in userdoc and devdoc output.\n- Optimizer: Re-implement simplified version of `UnusedAssignEliminator` and `UnusedStoreEliminator`. It can correctly remove some unused assignments in deeply nested loops that were ignored by the old version.\n- Parser: Unary plus is no longer recognized as a unary operator in the AST and triggers an error at the parsing stage (rather than later during the analysis).\n- SMTChecker: Group all messages about unsupported language features in a single warning. The CLI option `--model-checker-show-unsupported` and the JSON option `settings.modelChecker.showUnsupported` can be enabled to show the full list.\n- SMTChecker: Properties that are proved safe are now reported explicitly at the end of analysis. By default, only the number of safe properties is shown. The CLI option `--model-checker-show-proved-safe` and the JSON option `settings.modelChecker.showProvedSafe` can be enabled to show the full list of safe properties.\n- Standard JSON Interface: Add experimental support for importing ASTs via Standard JSON.\n- Yul EVM Code Transform: If available, use `push0` instead of `codesize` to produce an arbitrary value on stack in order to create equal stack heights between branches.\n\n### Bugfixes\n\n- ABI: Include events in the ABI that are emitted by a contract but defined outside of it.\n- Immutables: Disallow initialization of immutables in try/catch statements.\n- SMTChecker: Fix false positives in ternary operators that contain verification targets in its branches, directly or indirectly.\n\n### AST Changes\n\n- AST: Add the `internalFunctionIDs` field to the AST nodes of contracts containing IDs of functions that may be called via the internal dispatch. The field is a map from function AST IDs to internal dispatch function IDs. These IDs are always generated, but they are only used in via-IR code generation.\n- AST: Add the `usedEvents` field to `ContractDefinition` which contains the AST IDs of all events emitted by the contract as well as all events defined and inherited by the contract.\n\nAs always, a big thank you to all contributors who helped make this release possible!\n\n## How to install/upgrade\n\nTo upgrade to the latest version of the Solidity Compiler,\nsimply follow the [installation instructions](https://docs.soliditylang.org/en/v0.8.20/installing-solidity.html) available in our documentation.\nOur team has made sure to provide detailed and straightforward steps to make the upgrade process as seamless as possible.\nIf you have any questions or run into any issues during the upgrade process,\ndon't hesitate to reach out to our [community Matrix channel](https://matrix.to/#/#ethereum_solidity:gitter.im).\n\nYou can download the new version of Solidity here: [v0.8.20](https://github.com/ethereum/solidity/releases/tag/v0.8.20).\nIf you want to build from the source code, do not use the source archives generated automatically by GitHub,\ninstead please use [`solidity_0.8.20.tar.gz`](https://github.com/ethereum/solidity/releases/download/v0.8.20/solidity_0.8.20.tar.gz)\nand take a look at [our documentation on how to build from source](https://docs.soliditylang.org/en/v0.8.20/installing-solidity.html#building-from-source)\nif you need guidance.\n\nPlease note that for those using Solidity versions below 0.8.0, [there are breaking changes](https://docs.soliditylang.org/en/v0.8.20/080-breaking-changes.html).\nWe highly recommend reviewing the detailed list of breaking changes in our documentation to ensure a smooth upgrade process.\nAdditionally, we encourage all Solidity users to regularly check for updates to stay up-to-date with the latest improvements and optimizations.\nWe advise all Solidity developers to upgrade to version 0.8.20 to take advantage of these improvements and optimizations.\n","availableURLs":["/2023/05/10/solidity-0.8.20-release-announcement","/2023/03/10/solidity-developer-survey-2022-results","/2023/02/22/user-defined-operators","/2023/02/22/solidity-0.8.19-release-announcement","/2023/02/01/solidity-0.8.18-release-announcement","/2022/12/07/solidity-developer-survey-2022-announcement","/2022/12/05/solidity-core-team-updates","/2022/09/08/storage-write-removal-before-conditional-termination","/2022/09/08/solidity-0.8.17-release-announcement","/2022/08/08/solidity-0.8.16-release-announcement","/2022/08/08/calldata-tuple-reencoding-head-overflow-bug","/2022/06/15/solidity-0.8.15-release-announcement","/2022/06/15/inline-assembly-memory-side-effects-bug","/2022/06/15/dirty-bytes-array-to-storage-bug","/2022/05/17/solidity-0.8.14-release-announcement","/2022/05/17/data-location-inheritance-bug","/2022/05/17/calldata-reencode-size-check-bug","/2022/05/03/solidity-summit-2022-recap","/2022/04/08/announcing-the-underhanded-contest-winners-2022","/2022/03/16/solidity-0.8.13-release-announcement","/2022/03/16/encodecall-bug","/2022/02/22/solidity-summit-2022-announcement","/2022/02/16/solidity-0.8.12-release-announcement","/2022/02/09/underhanded-solidity-contest-2022-announcement","/2022/02/07/solidity-developer-survey-2021-results","/2021/12/20/solidity-0.8.11-release-announcement","/2021/11/18/solidity-developer-survey-2021","/2021/11/09/solidity-0.8.10-release-announcement","/2021/09/29/user-defined-value-types-bug","/2021/09/29/solidity-0.8.9-release-announcement","/2021/09/29/signed-immutables-bug","/2021/09/27/user-defined-value-types","/2021/09/27/solidity-0.8.8-release-announcement","/2021/08/11/solidity-0.8.7-release-announcement","/2021/06/22/solidity-0.8.6-release-announcement","/2021/06/10/solidity-0.8.5-release-announcement","/2021/05/03/soliditylangorg-umbrella-domain","/2021/04/21/solidity-0.8.4-release-announcement","/2021/04/21/decoding-from-memory-bug","/2021/04/21/custom-errors","/2021/04/01/announcing-solidity-collectibles","/2021/03/23/solidity-0.8.3-release-announcement","/2021/03/23/keccak-optimizer-bug","/2021/03/02/solidity-0.8.2-release-announcement","/2021/03/02/saving-gas-with-simple-inliner","/2021/02/15/contributing-to-solidity-101","/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach","/2021/02/01/launching-the-solidity-forum","/2021/01/27/solidity-0.8.1-release-announcement","/2021/01/26/solidity-developer-survey-2020-results","/2020/12/16/solidity-v0.8.0-release-announcement","/2020/12/16/solidity-0.7.6-release-announcement","/2020/12/09/solidity-developer-survey-2020","/2020/12/03/solidity-underhanded-contest-winners","/2020/11/18/solidity-0.7.5-release-announcement","/2020/11/04/solidity-ama-1-recap","/2020/10/28/solidity-0.8.x-preview","/2020/10/19/solidity-0.7.4-release-announcement","/2020/10/19/empty-byte-array-copy-bug","/2020/10/07/solidity-dynamic-array-cleanup-bug","/2020/10/07/solidity-0.7.3-release-announcement","/2020/09/28/solidity-0.7.2-release-announcement","/2020/09/21/solidity-underhanded-contest","/2020/09/18/meet-the-team","/2020/09/02/solidity-0.7.1-release-announcement","/2020/07/28/solidity-v0.7.0-release-announcement","/2020/07/22/Solidity-0612-release-announcement","/2020/07/08/solidity-turns-5","/2020/07/07/Solidity-0611-release-announcement","/2020/06/25/sourcify-faq","/2020/06/18/solidity-0.6-inheritance","/2020/06/11/Solidity-0610-release-announcement","/2020/06/09/solidity-summit-recap","/2020/06/05/Solidity-069-release-announcement","/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans","/2020/05/26/array-slices","/2020/05/14/Solidity-068-release-announcement","/2020/05/13/immutable-keyword","/2020/05/04/solidity-0.6.7-release-announcement","/2020/04/17/Solidity-Summit-2020-Goes-Interspace","/2020/04/09/solidity-0.6.6-release-announcement","/2020/04/06/solidity-0.6.5-release-announcement","/2020/04/06/memory-creation-overflow-bug","/2020/03/23/fallback-receive-split","/2020/03/17/solidity-0.5.17-release-announcement","/2020/03/10/solidity-0.6.4-release-announcement","/2020/02/18/solidity-0.6.3-release-announcement","/2020/01/29/solidity-0.6-try-catch","/2020/01/27/solidity-0.6.2-release-announcement","/2020/01/02/solidity-0.6.1-release-announcement","/2020/01/02/solidity-0.5.16-release-announcement","/2019/12/17/solidity-0.6.0-release-announcement","/2019/12/17/solidity-0.5.15-release-announcement","/2019/12/09/solidity-0.5.14-release-announcement","/2019/11/14/solidity-0.5.13-release-announcement","/2019/10/01/solidity-0.5.12-release-announcement","/2019/08/12/solidity-0.5.11-release-announcement","/2019/06/25/solidity-storage-array-bugs","/2019/06/25/solidity-0.5.10-release-announcement","/2019/05/28/solidity-0.5.9-release-announcement","/2019/04/30/solidity-0.5.8-release-announcement","/2019/04/29/solidity-0.4.26-release-announcement","/2019/03/26/solidity-optimizer-and-abiencoderv2-bug","/2019/03/26/solidity-0.5.7-release-announcement","/2019/03/13/solidity-0.5.6-release-announcement","/2019/03/05/solidity-0.5.5-release-announcement","/2019/02/12/solidity-0.5.4-release-announcement","/2019/01/22/solidity-0.5.3-release-announcement","/2018/12/19/solidity-0.5.2-release-announcement","/2018/12/03/solidity-0.5.1-release-announcement","/2018/11/13/solidity-0.5.0-release-announcement","/2018/09/13/solidity-bugfix-release","/2018/09/13/solidity-0.4.25-release-announcement","/2018/05/16/solidity-0.4.24-release-announcement","/2018/04/19/solidity-0.4.23-release-announcement","/2018/04/17/solidity-0.4.22-release-announcement","/2018/03/08/solidity-0.4.21-release-announcement","/2018/02/14/solidity-0.4.20-release-announcement","/2017/11/30/solidity-0.4.19-release-announcement","/2017/10/18/solidity-0.4.18-release-announcement","/2017/09/21/solidity-0.4.17-release-announcement","/2017/08/24/solidity-0.4.16-release-announcement","/2017/08/08/solidity-0.4.15-release-announcement","/2017/07/31/solidity-0.4.14-release-announcement","/2017/07/06/solidity-0.4.13-release-announcement","/2017/07/03/solidity-0.4.12-release-announcement","/2017/05/03/solidity-optimizer-bug","/2017/05/03/solidity-0.4.11-release-announcement","/2017/03/15/solidity-0.4.10-release-announcement","/2017/01/31/solidity-0.4.9-release-announcement","/2017/01/13/solidity-0.4.8-release-announcement","/2016/12/15/solidity-0.4.7-release-announcement","/2016/11/22/solidity-0.4.6-release-announcement","/2016/11/21/solidity-0.4.5-release-announcement","/2016/11/09/analysis-storage-corruption-bug","/2016/11/01/solidity-0.4.4-release-announcement","/2016/11/01/security-alert-solidity-variables-can-overwritten-storage","/2016/10/25/solidity-0.4.3-release-announcement","/2016/09/17/solidity-0.4.2-release-announcement","/2016/09/09/solidity-0.4.1-release-announcement","/2016/09/08/solidity-0.4.0-release-announcement","/2016/09/01/formal-methods-roadmap","/2016/08/10/solidity-0.3.6-release-announcement","/2016/06/10/solidity-0.3.5-release-announcement","/2016/06/10/smart-contract-security","/2016/05/31/solidity-0.3.4-release-announcement","/2016/05/27/solidity-0.3.3-release-announcement","/2016/04/18/solidity-0.3.2-release-announcement","/2016/03/31/solidity-0.3.1-release-announcement","/2016/03/11/solidity-0.3.0-release-announcement","/2016/02/17/solidity-0.2.2-release-announcement","/2016/01/30/solidity-0.2.1-release-announcement","/2015/12/01/solidity-0.2.0-release-announcement","/2015/11/17/solidity-0.1.7-release-announcement","/2015/10/16/solidity-0.1.6-release-announcement","/2015/10/07/solidity-0.1.5-release-announcement","/2015/09/30/solidity-0.1.4-release-announcement","/2015/09/22/solidity-0.1.3-release-announcement","/2015/08/21/solidity-0.1.2-release-announcement"]},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/category/announcements.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/category/announcements.json deleted file mode 100644 index 0b3aab8f..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/category/announcements.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"categoryPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2022 Results","date":"2023-03-10","author":"Franziska Heintel","category":"Announcements"},"content":"\nThe 2022 Solidity Developer Survey results are in! In this post, we will be summarizing and analyzing them.\n\nFirst of all, a big thank you to everybody who took the time and participated and to everybody who helped us spread the word about it!\nThis year, we received a smashing 1401 responses. That is more than a 3x in responses compared to the previous survey and we couldn't be happier with the turnout.\nYour input is invaluable to us and plays a crucial...","url":"/blog/2023/03/10/solidity-developer-survey-2022-results"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2022 is Live!","date":"2022-12-07","author":"Franziska Heintel","category":"Announcements"},"content":"\nIt’s that time of the year. Drumroll, please! 🥁🥁🥁\nWe are launching the Solidity Developer Survey 2022!\n\nBefore we wrap up 2022 for good, we want to reach out to collect your feedback and insights so we can improve on it!\n\n📝 TAKE THE SURVEY! 📝\n\nYou can find the previous results of the Solidity Developer Survey 2021 here. In 2021, 435 developers from 73 different countries participated with 80% of respondents using Solidity daily or weekly.\n\nAbout the Survey 🪄\n\nLike in previous years, this...","url":"/blog/2022/12/07/solidity-developer-survey-2022-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Core Team Updates","date":"2022-12-05","author":"Solidity Team","category":"Announcements"},"content":"\nMore than two years have passed since we introduced Solidity core team members on the blog and we realized it is high time for some updates: Meet new team members, find out who moved on to other adventures and learn about recent changes in the team structure!\n\nBefore we dive in, a reminder that the Solidity programming language and compiler are open-source community projects. This post dives into the core team that leads the development. Nevertheless, we cannot stress enough how...","url":"/blog/2022/12/05/solidity-core-team-updates"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Summit 2022 Recap","date":"2022-05-03","author":"Franziska Heintel","category":"Announcements"},"content":"\nWe can't believe it's already been two weeks since we met in Amsterdam for the second Solidity Summit!\n\nSolidity Summit 2022 was part of Devconnect and took place on Wednesday, April 20, 2022.\n\nWith roughly 250 participants, the event was well attended. In addition, approximately 400 people joined remotely by watching the Livepeer livestream.\n\nThe day was packed with 20+ talks on\n\nSolidity internals & deep dives\nSolidity language design\nSolidity tooling\nSecurity\nProgramming patterns\n\n... and more.\n\nThe full agenda of the day can be found here. You can...","url":"/blog/2022/05/03/solidity-summit-2022-recap"},{"frontmatter":{"layout":"post","published":true,"title":"Announcing the Winners of the Underhanded Solidity Contest 2022","date":"2022-04-09","author":"Franziska Heintel & USC Judges","category":"Announcements"},"content":"\nThe time has come to share this year's winners of the Underhanded Solidity Contest!\n\nBefore we dive into the winning submissions, let's revisit the most important features of the USC:\n\nIn a nutshell, the USC is about finding loopholes or “hiding spots” in the Solidity language and using those to write seemingly innocent and straightforward-looking Solidity code which contains malicious behavior or backdoors.\n\nThe Underhanded Solidity Contest aims to...\n\nRaise awareness about smart contract security.\nUncover language design faults.\nBattle-test recently introduced language features and restrictions.\nHighlight...","url":"/blog/2022/04/08/announcing-the-underhanded-contest-winners-2022"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Summit 2022 Goes Amsterdam","date":"2022-02-22","author":"Franziska Heintel","category":"Announcements"},"content":"\nThe Solidity Summit is finally back! After a first virtual Solidity Summit in 2020, we are excited to announce an in-person event for 2022!\n\nSolidity Summit 2022 is part of Devconnect and will happen on Wednesday, April 20 2022, in Amsterdam.\n\nWhat is the Solidity Summit?\n\nThe Solidity Summit is a collaborative event focusing on the future of Solidity. It's a get together for advanced Solidity users and other Solidity ecosystem stakeholders such as developers interested in language design, tooling builders, auditors and...","url":"/blog/2022/02/22/solidity-summit-2022-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Underhanded Solidity Contest 2022","date":"2022-02-09","author":"Franziska Heintel","category":"Announcements"},"content":"\nThe long wait is over: The Underhanded Solidity Contest is back with a 2022 edition!\n\nAfter a successful revival in 2020, we believe it's time for the great Solidity minds to get together again and compete over the next big underhanded hack!\n\nIn case you're new to this, let's get you up to speed with a quick recap on what the Underhanded Solidity Contest (USC) is all about:\n\nIn a nutshell, the USC is about finding loopholes or \"hiding spots\" in the Solidity...","url":"/blog/2022/02/09/underhanded-solidity-contest-2022-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2021 Results","date":"2022-02-07","author":"Franziska Heintel","category":"Announcements"},"content":"\nIn this post, we will be summarizing and analyzing the results of the 2021 Solidity Developer Survey.\n\nA big thank you goes out to everybody who took the time and participated!\n\nYour input is invaluable to us and plays a crucial role in helping to continuously improve the Solidity developer experience as a whole.\n\nSummary & Notable Insights\n\nSurvey Audience**: In total, 435 developers from 73 different countries participated in the 2021 survey. Compared to 2020, that is more than a 100% increase in...","url":"/blog/2022/02/07/solidity-developer-survey-2021-results"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2021 is Live!","date":"2021-11-18","author":"Franziska Heintel","category":"Announcements"},"content":"\nToday, we launched the Solidity Developer Survey 2021. Please all take 10 minutes to participate and let us know your feedback!\n\nThis marks the second time we are conducting a structured big developer survey. You can find the results of last year's Solidity developer survey here.\n\nShape the Future of Solidity 🔮\n\nThe survey helps us to further improve the Solidity language and compiler and shape the future roadmap of Solidity. We can't wait to hear your thoughts on the prioritization of new...","url":"/blog/2021/11/18/solidity-developer-survey-2021"},{"frontmatter":{"layout":"post","published":true,"title":"Announcing Solidity Version Collectibles & Community Governance 💎","date":"2021-04-01","author":"Franziska Heintel","category":"Announcements"},"content":"⚠️ Attention: This post is an April Fools' Day joke. Please consume it at your own risk. We will not distribute any Solidity NFTs in the foreseeable future. Stay safe.\n\nToday, we are excited to announce a little surprise we’ve been working on silently for the last couple of weeks. We heard that you really like crypto-related collectibles and we listened.\n\nYou will soon be able to own a digital piece of Solidity’s history: We’re tokenizing each Solidity version as an NFT!...","url":"/blog/2021/04/01/announcing-solidity-collectibles"},{"frontmatter":{"layout":"post","published":true,"title":"Launching the Solidity Forum 🗃️","date":"2021-02-01","author":"Franziska Heintel","category":"Announcements"},"content":"\nIn our effort to foster exchange of information, encourage more developers to give feedback about Solidity and join the discussions on language design and future direction of the compiler, we are happy to launch the Solidity forum today!\n\nMoving forward the Solidity forum will be the dedicated place to discuss topics and questions related to…\n\nThe design of the Solidity programming language.\nThe Solidity compiler.\nUseful Solidity tips and code snippets.\nSolidity documentation and its translation.\nDiscussions and announcements about Solidity releases.\n\nIt will not be the...","url":"/blog/2021/02/01/launching-the-solidity-forum"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2020 Results","date":"2021-01-26","author":"Franziska Heintel","category":"Announcements"},"content":"\nBefore we dive into the results we want to extend a big thank you to all of the Solidity developers that participated in the very first Solidity Developer Survey, which we conducted at the end of last year!\n\nWe were overwhelmed by the high quality of the submissions and are happy to extract important insights from your input.\n\nIn this post, we'll be summarizing and commenting on the results of the survey.\n\nPlease note that none of the questions in the survey were...","url":"/blog/2021/01/26/solidity-developer-survey-2020-results"},{"frontmatter":{"layout":"post","published":true,"title":"Launching the Solidity Developer Survey 2020","date":"2020-12-09","author":"Franziska Heintel","category":"Announcements"},"content":"\nToday we are launching the Solidity Developer Survey 2020. It is the first time we share a proper language survey and we hope to turn this into an annual tradition moving forward.\n\nYou might remember the small feedback survey we did this year as part of the Solidity Summit registration in which we asked you for the most liked and dreaded Solidity features. If you're curious to revisit the results of that click here.\n\nHelp shape the future of Solidity 🔮\n\nSo why...","url":"/blog/2020/12/09/solidity-developer-survey-2020"},{"frontmatter":{"layout":"post","published":true,"title":"Announcing the Winners of the Underhanded Solidity Contest 👨‍💻🏅","date":"2020-12-03","author":"Franziska Heintel","category":"Announcements"},"content":"\nAfter thorough assessment of all submissions, we are happy to share the winners of this year's Underhanded Solidity Contest!\n\nIf you are not familiar with it, please read the announcement from September.\n\nBefore we dive into the winning submissions, we'd like to thank all participants for taking part. In total, we received 16 qualifying submissions which you can find in this repo. All 16 submissions are eligible for a \"qualified submission\" Underhanded Solidity POAP NFT - winners will receive an additional \"Winners\"...","url":"/blog/2020/12/03/solidity-underhanded-contest-winners"},{"frontmatter":{"layout":"post","published":true,"title":"Ask the Solidity Team Anything #1 Recap","date":"2020-11-04","author":"Solidity Team","category":"Announcements"},"content":"\nWe hosted our very first Solidity team AMA on Reddit last week! We would like to take the opportunity to summarize the most interesting and most upvoted questions & answers in this post.\n\nIf you are interested in going through the full AMA thread you can do so here.\n\nGeneral Questions\n\nRoadmap Outlook: What does the Solidity team see as its most important feature goals in the medium-long term and what are the biggest blockers to achieving those goals?\n\nAs far as the compiler...","url":"/blog/2020/11/04/solidity-ama-1-recap"},{"frontmatter":{"layout":"post","published":true,"title":"The Underhanded Solidity Contest is back!","date":"2020-09-21","author":"Franziska Heintel","category":"Announcements"},"content":"\nWe're excited to share that the Underhanded Solidity Contest is finally back!\n\nInspired by the Underhanded C Contest and the first Underhanded Solidity Contest, organized in 2017 by Nick Johnson, we decided it is time for a much needed revival.\n\nUnderhanded Solidity Contest\n\nThe goal of this contest is to write innocent-looking Solidity code, which pretends to be clear and straightforward, but actually contains malicious behavior or backdoors.\n\nBy hosting such a contest we aim to:\n\nRaise awareness about smart contract security.\nUncover language design flaws.\nBattle-test...","url":"/blog/2020/09/21/solidity-underhanded-contest"},{"frontmatter":{"layout":"post","published":true,"title":"Meet the Solidity team! 🧑‍💻👩‍💻","date":"2020-09-18","author":"Solidity Team","category":"Announcements"},"content":"\nAs you might know, Solidity is an open-source community project mainly developed and maintained by a core team.\n\nToday, we would like to introduce some of our team members and share insights into their professional background, which components of Solidity they mostly work on, what they would like to see in Solidity and in the ecosystem in future and more! Since almost all of our work happens on Github you can find each team member's Github handle next to their name.\n\nBefore...","url":"/blog/2020/09/18/meet-the-team"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity v0.1.0 turns 5! A walk down memory lane...","date":"2020-07-08","author":"Franziska Heintel","category":"Announcements"},"content":"\nSolidity v0.1.0 turns 5\n\nWith happiness and a tad of nostalgia, we'd like to share that Solidity v0.1.0 turns 5 years old today! (To be fair, v0.1.0 wasn't an actual release, but it marks the time where the Solidity team started appointing version numbers.) We are puzzled over how fast time flew by. We'd like to use this opportunity to take a look back and walk down the Solidity memory lane together with you.\n\nIn short: The Solidity language evolved rapidly, the...","url":"/blog/2020/07/08/solidity-turns-5"},{"frontmatter":{"layout":"post","published":true,"title":"Wrapping up the Virtual Solidity Summit 2020","date":"2020-06-09","author":"Franziska Heintel","category":"Announcements"},"content":"\nRoughly one month ago, we held the first Solidity Summit - a free interactive forum with discussions and talks on Solidity, Yul, language design and tooling. It took place on April 29-30 and was powered by a virtual meeting infrastructure based on open-source, self-hosted Jitsi video chat rooms. The platform was supplied by Interspace.Chat.\n\nBefore we dive into the recap: Your input and active participation was much appreciated and we want to take this opportunity to say thank you! We hope...","url":"/blog/2020/06/09/solidity-summit-recap"},{"frontmatter":{"layout":"post","published":true,"title":"Sourcify: Towards Safer Contract Interaction for Humans","date":"2020-06-02","author":"Edi Sinovčić, Franziska Heintel","category":"Announcements"},"content":"\ntl;dr: Building sensible blockchain applications for humans is hard. You can enhance the user experience of\nyour dapp today by leveraging the power of open source. Increase awareness and give more transparency on what users\nare actually doing when interacting with your code on the blockchain, i.e. when signing a transaction, by publishing\nthe source code to this decentralized repository and using metadata files, which translate “random” hex strings into\nhuman-readable language. Sourcify is a tool to help you do exactly that. If you...","url":"/blog/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Summit 2020 Goes Interspace","date":"2020-04-17","author":"Franziska Heintel","category":"Announcements"},"content":"\nTl;dr: As already announced on Twitter, we transformed the Solidity Summit, which was initially planned to be an in-person meeting in Berlin, into an online event. Today, we are excited to share that the summit will be powered by Interspace.Chat. Interspace is a virtual meeting infrastructure based on self-hosted Jitsi video chat rooms. Check out the Solidity Summit's preliminary event agenda here and make sure to register if you want to partipate!\n\nWhat is the Solidity Summit?\n\nThe Solidity Summit is a...","url":"/blog/2020/04/17/Solidity-Summit-2020-Goes-Interspace"},{"frontmatter":{"layout":"post","published":true,"title":"Dev Update: Formal Methods","date":"2016-09-01","author":"Christian Reitwiessner","category":"Announcements"},"content":"\nThis post was originally published on the Ethereum blog.\n\nToday, I am delighted to announce that Yoichi Hirai (@pirapira on github) is joining the Ethereum project as a formal verification engineer. He holds a PhD from the University of Tokyo on the topic of formalizing communicating parallel processes and created formal verification tools for Ethereum in his spare time.\n\nIn his own words:\nI’m joining Ethereum as a formal verification engineer. My reasoning: formal verification makes sense as a profession only in a...","url":"/blog/2016/09/01/formal-methods-roadmap"}],"category":"Announcements"},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/category/explainers.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/category/explainers.json deleted file mode 100644 index f8f36d59..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/category/explainers.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"categoryPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Feature Deep-Dive: User-Defined Operators","date":"2023-02-22","author":"Kamil Śliwak, Matheus Aguiar","category":"Explainers"},"content":"\nThe highlight of Solidity 0.8.19 release\nis the support for defining operators on user-defined value types (UDVTs).\n\nIf you have not been keeping up with recent features, UDVTs are a new class of types introduced in Solidity 0.8.8.\nThey provide an abstraction over an elementary value type that results in a completely new type.\nThis is similar to creating an alias, but the new type is distinct from the underlying value type\nand all other UDVTs derived from that underlying type.\nThe ability to use operators...","url":"/blog/2023/02/22/user-defined-operators"},{"frontmatter":{"layout":"post","published":true,"title":"User Defined Value Types in Solidity","date":"2021-09-27","author":"Solidity Team","category":"Explainers"},"content":"\nSolidity v0.8.8 introduces user defined\nvalue types as a\nmeans to create zero-cost abstractions over an elementary value type that also increases type safety\nand improves readability.\n\nMotivation\n\nA problem with primitive value types is that they are not very descriptive: they only specify how\nthe data is stored and not how it should be interpreted. For example, one may want to use uint128\nto store the price of some object as well as the quantity available. It is quite useful to have\nstricter type rules to avoid...","url":"/blog/2021/09/27/user-defined-value-types"},{"frontmatter":{"layout":"post","published":true,"title":"What Happened with Solidity-related Domains?","date":"2021-05-03","author":"Franziska Heintel","category":"Explainers"},"content":"\nSome time ago we decided to get a domain that the Solidity team has easy access to in\norder to streamline efforts and initiatives that were hosted on other domains before.\n\nAnd so soliditylang.org was born! 🎉\n\nWe announced most of these domain changes individually on Twitter, but we want to take a moment to\nalso officially announce it here on the blog\nand explain the various subdomains we have now, what they are for and which older\ndomains may be deprecated in the future.\n\nIn short,...","url":"/blog/2021/05/03/soliditylangorg-umbrella-domain"},{"frontmatter":{"layout":"post","published":true,"title":"Custom Errors in Solidity","date":"2021-04-21","author":"Solidity Team","category":"Explainers"},"content":"\nStarting from Solidity v0.8.4, there is\na convenient and gas-efficient way to explain to users why an operation failed through the use of\ncustom errors. Until now, you could already use strings to give more information about failures\n(e.g., revert(\"Insufficient funds.\");), but they are rather expensive, especially when it comes to\ndeploy cost, and it is difficult to use dynamic information in them.\n\nCustom errors are defined using the error statement, which can be used inside and outside of\ncontracts (including interfaces and libraries).\n\nExample\n\nThe following contract...","url":"/blog/2021/04/21/custom-errors"},{"frontmatter":{"layout":"post","published":true,"title":"Saving Gas with Simple Inlining","date":"2021-03-02","author":"Christian Reitwiessner","category":"Explainers"},"content":"\nSolidity v0.8.2 adds a simple inliner to the low-level optimizer of Solidity. In this post, we examine how it works and take a look at synergies with other steps of the optimizer.\n\nLow-Level Inliner\n\nThe Low-Level Inliner is a component of the low-level optimizer of the Solidity compiler.\nTo save gas, it can inline short functions that do not contain control-flow branches or\nopcodes with side-effects.\n\nThe decision to inline or not is based on the trade-off parameter \"runs\":\nThe combined code deposit cost and execution...","url":"/blog/2021/03/02/saving-gas-with-simple-inliner"},{"frontmatter":{"layout":"post","published":true,"title":"Contributing to Solidity 101","date":"2021-02-15","author":"Franziska Heintel","category":"Explainers"},"content":"\nThe Solidity programming language is an open-source project governed by a core team. We rely on the community’s feedback, input and contributions to make the language as effective, safe and useful as possible.\n\nIn this post, we will walk you through the various different ways how you can get involved contributing to Solidity! Do not hesitate to contact us in case anything is left unclear after reading the post.\n\nOverview of Contribution Opportunities\n\nThere are plenty of options how you can contribute to...","url":"/blog/2021/02/15/contributing-to-solidity-101"},{"frontmatter":{"layout":"post","published":true,"title":"An Introduction to Solidity's Fuzz Testing Approach","date":"2021-02-10","author":"Bhargava Shastry","category":"Explainers"},"content":"\nSecurity vulnerabilities and bugs detract from software quality.\nTo discover them early, at best before they are released, we have adopted fuzz testing: feeding randomly generated programs to the Solidity compiler and observing the compilation runtime and code generated.\n\nSince Q1 2019, the Solidity compiler is fuzz tested via Google's open-source software fuzz (oss-fuzz) framework.\n\nIn this post, we briefly describe the work that has been done on this front, and work that is currently in progress.\n\nFuzzer Overview\n\nBroadly speaking, we have developed two...","url":"/blog/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach"},{"frontmatter":{"layout":"post","published":true,"title":"All you need to know about Sourcify","date":"2020-06-25","author":"Franziska Heintel","category":"Explainers"},"content":"\nWelcome to Sourcify's first short FAQ! If your questions around source verification haven't been answered after reading\nthis post, please feel free to drop by the Sourcify Gitter channel and ask us\nany question there. Also stay tuned on more turorials and developer focused content to follow here and on the Remix blog!\n\nSource Verification\n\nWhat is source verification?\n\nSolidity contract source code can be verified by checking whether the on-chain deployed code\nis matching with published source code files. In order to allow for source...","url":"/blog/2020/06/25/sourcify-faq"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: inheritance","date":"2020-06-18","author":"Elena Gesheva","category":"Explainers"},"content":"\nSimilar to object-oriented programming in Solidity - a contract-oriented language - the inheritance and polymorphism features are as widely adopted and critical for the language evolution. There is hardly any Solidity developer who hasn't used these language features in their contracts to decouple logic and increase code reuse. With version 0.6 of the language the main improvements introduced are to make existing rules explicit in addition to introducing interface inheritance and disallowing the dangerous state variable shadowing. The compiler continues...","url":"/blog/2020/06/18/solidity-0.6-inheritance"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: Array Slices","date":"2020-05-26","author":"Solidity Team","category":"Explainers"},"content":"\nStarting from version 0.6.0, Solidity supports array slices.\nArray slices are handy when you want to reference a\ncontiguous portion of an array but do not want to perform a full copy of that portion. For now, array slices are only\nsupported for calldata arrays.\n\nHow to use Array Slices\n\nThe expression x[start:end] references a portion of the calldata array x starting at index start and ending just\nbefore index end.\n\nBoth start and end are optional. If not provided, start defaults to 0 and end defaults...","url":"/blog/2020/05/26/array-slices"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: Saving Storage Costs with Immutables","date":"2020-05-13","author":"Daniel Kirchner","category":"Explainers"},"content":"\nWith version 0.6.5, Solidity introduced the\nimmutable keyword\nfor state variables. Immutable state variables can only be assigned during contract creation, but will remain\nconstant throughout the life-time of a deployed contract.\nThe big advantage of immutables is that reading them is significantly cheaper than reading from regular state variables,\nsince immutables will not be stored in storage, but their values will be directly inserted into the runtime code.\n\nHow to use Immutables\n\nImmutable state variables can be declared using the immutable keyword. They cannot be read...","url":"/blog/2020/05/13/immutable-keyword"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: fallback and receive functions","date":"2020-03-26","author":"Elena Gesheva","category":"Explainers"},"content":"\nIn versions of Solidity before 0.6.x, developers typically used the fallback function to handle logic in two scenarios:\n\ncontract received ether and no data\ncontract received data but no function matched the function called\n\nThe main use case of the pre-0.6.x fallback function is to receive ether and react\nto it, a typical pattern used by token-style contracts to reject transfers, emit\nevents or forward the ether. The function executes when a contract is called\nwithout any data e.g. via .send() or .transfer() functions. The 0.5.x\nsyntax...","url":"/blog/2020/03/23/fallback-receive-split"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: try/catch statement","date":"2020-01-29","author":"Elena Gesheva","category":"Explainers"},"content":"\nThis post was originally published on the Ethereum blog.\n\nThe try/catch syntax introduced in 0.6.0 is arguably the biggest leap in error handling capabilities in Solidity, since reason strings for revert and require were released in v0.4.22. Both try and catch have been reserved keywords since v0.5.9 and now we can use them to handle failures in external function calls without rolling back the complete transaction (state changes in the called function are still rolled back, but the ones in the...","url":"/blog/2020/01/29/solidity-0.6-try-catch"}],"category":"Explainers"},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/category/releases.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/category/releases.json deleted file mode 100644 index 14b42ecb..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/category/releases.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"categoryPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.20 Release Announcement","date":"2023-05-10","author":"Solidity Team","category":"Releases"},"content":"\nWe are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.20.\nThis latest version includes a range of improvements in the via-IR pipeline and improves the list of events exposed in the contract ABI, and, most importantly, support for the Shanghai hard fork!\n\nImportant Note\n\nThis compiler switches the default target EVM version to Shanghai, which means that the generated bytecode will include PUSH0 opcodes.\nBe sure to select the appropriate EVM version in case you intend to deploy on a...","url":"/blog/2023/05/10/solidity-0.8.20-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.19 Release Announcement","date":"2023-02-22","author":"Solidity Team","category":"Releases"},"content":"\nWe are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.19.\nThis latest version includes a range of improvements and it also introduces the support for defining operators on user-defined value types (UDVTs)!\nYou can learn about it at length in our feature deep-dive blogpost.\n\nNotable New Features\n\nThese are the features we want to highlight in this release.\n\nOperators for User-Defined Value Types\n\nThe ability to use operators is meant to bring the UDVTs closer to being as natural to use\nas the...","url":"/blog/2023/02/22/solidity-0.8.19-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.18 Release Announcement","date":"2023-02-01","author":"Solidity Team","category":"Releases"},"content":"\nIntroducing the newest version of the Solidity Compiler!\n\nWe are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.18.\nThis latest version includes a range of improvements and it also introduces support for the Paris upgrade!\n\nNotable New Features\n\nThese are the features we want to highlight in this release.\n\nDisabling CBOR metadata\n\nA new command-line flag (--no-cbor-metadata) and Standard JSON option (settings.metadata.appendCBOR: false) to prevent compiler from appending the CBOR metadata section at the end of the bytecode.\nUntil now, it was only...","url":"/blog/2023/02/01/solidity-0.8.18-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.17 Release Announcement","date":"2022-09-08","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.17\nfixes an important bug, makes overflow checks on multiplication more efficient and adds an LSP feature to\nalways analyze all files in a project.\n\nImportant Bugs\n\nStorage Write Removal Bug On Conditional Early Termination\n\nThe bug may result in storage writes being incorrectly considered redundant and removed by the optimizer.\nThe problem manifests in presence of assembly functions that may conditionally terminate the external\nEVM call using the return() or stop() opcode.\n\nSee the security alert post on Storage Write Removal Bug On Conditional Early Termination\nfor...","url":"/blog/2022/09/08/solidity-0.8.17-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.16 Release Announcement","date":"2022-08-08","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.16\nfixes an important bug.\n\nThe bug may result in small parts of dynamic tuple components being inadvertently zeroed during\nABI re-encoding when the last component is a statically-sized uint or bytes32 calldata array.\nSee Head Overflow Bug in Calldata Tuple ABI-Reencoding\nfor more information.\n\nApart from that, there are several minor bug fixes and improvements like more gas-efficient overflow checks\nfor addition and subtraction.\n\nFull Changelog\n\nImportant Bugfixes:\n\nCode Generation: Fix data corruption that affected ABI-encoding of calldata values represented by tuples: structs at any nesting level; argument...","url":"/blog/2022/08/08/solidity-0.8.16-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.15 Release Announcement","date":"2022-06-15","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.15\nfixes two important bugs, improves inlining heuristics and adds a .selector member for errors and events.\n\nImportant Bugs\n\nThe first one is an optimizer bug that can lead to memory write operations in inline assembly being removed if\nthe result of such an operation is not read back from within the same assembly block.\nThe bug can be triggered only when using the default legacy compiler pipeline (the new compilation pipeline via\nIR is not affected) and happens only in assembly blocks that never...","url":"/blog/2022/06/15/solidity-0.8.15-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.14 Release Announcement","date":"2022-05-18","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.14\nfixes two important bugs.\n\nThe first one is related to ABI-encoding nested arrays directly from calldata.\nYou can find more information in the blog post.\n\nThe second bug is triggered in certain inheritance structures and can\ncause a memory pointer to be interpreted as a calldata pointer or\nvice-versa. We also have a dedicated blog post about this bug.\n\nApart from these, there are several minor bug fixes and improvements.\n\nPlease note: Unfortunately, the npm wrapper package of this version is corrupted. Using the new soljson.js...","url":"/blog/2022/05/17/solidity-0.8.14-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.13 Release Announcement","date":"2022-03-16","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.13\nfixes an important bug related to abi.encodeCall, extends the using for\ndirective and implements \"go to definition\" for the language server.\n\nFurthermore, compiling via the new Yul IR pipeline is now considered production ready.\n\nImportant Bugs\n\nWhen abi.encodeCall was introduced in Solidity 0.8.11,\nhex literals (0x1234) and string literals (\"abcd\") were not handled properly.\nPlease read more about it in the security alert.\n\nNotable New Features\n\nYul IR Pipeline Production Ready\n\nWe have been working on Yul as an intermediate language for Solidity for several years now.\nYul in...","url":"/blog/2022/03/16/solidity-0.8.13-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.12 Release Announcement","date":"2022-02-16","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.12\nimproves the JavaScript / Wasm binary and fixes several bugs.\n\nNotable New Features\n\nEmscripten Build / solc-js\n\nWe were able to reduce the size of the JavaScript / WebAssembly\nbinaries from 27 MB to just over 8 MB. The reason for the large binary\nin the first place is that we include the SMT solver Z3.\n\nThe size reduction is achieved by compressing the binary using LZ4 and\ndecompressing it when it is loaded, which should be completely transparent to the user.\nWe were initially worried that...","url":"/blog/2022/02/16/solidity-0.8.12-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.11 Release Announcement","date":"2021-12-20","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.11\nadds a first implementation of a Language Server, allows a safer way to\nperform ABI-encoding and fixes several bugs.\n\nNotable New Features\n\nLanguage Server Preview\n\nLanguage Server Protocol\nis an initiative that allows better interoperability between IDEs and\ncompilers, or more generally, language diagnostics tools. The idea is that\ninstead of writing a different plugin for each combination of IDEs and\nlanguages, every IDE implements a single client and every compiler implements\na single server and since both of them use the same protocol, you can combine\nall of...","url":"/blog/2021/12/20/solidity-0.8.11-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.10 Release Announcement","date":"2021-11-09","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.10 can now report contract invariants and reentrancy properties through the SMTChecker. It also contains some new optimizations with regards to external function calls and enables the new EVM code generator for pure Yul mode.\n\nNotable New Features\n\nNew EVM Code Transform for Compilation via Yul IR\n\nWith this release, we introduce a new EVM code generation backend that is used for the experimental compilation pipeline of Solidity via Yul (with enabled optimizer), as well as for optimized compilation of Yul input.\n\nWhile...","url":"/blog/2021/11/09/solidity-0.8.10-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.9 Release Announcement","date":"2021-09-29","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.9 is a pure bugfix release and fixes two important, but low severity, bugs.\n\nThe first bug is related to immutables of signed integer types shorter than 256 bits. The bug causes sign extension (cleanup) of those values to not always being properly performed. It was introduced in Solidity 0.6.5. Read more in the respective security alert.\nThe second bug was introduced with user defined value types in Solidity v0.8.8 (released two days ago). User defined types with underlying type shorter...","url":"/blog/2021/09/29/solidity-0.8.9-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.8 Release Announcement","date":"2021-09-27","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.8 introduces user defined\nvalue types as a major feature. The override keyword is now optional for interface functions,\nimmutable variables can be read in the constructor, there is support for retrieving the smallest\nand largest value of an enum, you can specify include directories and the commandline interface was cleaned up.\nFurthermore, we fixed several bugs and the SMTChecker has improved language coverage.\n\nNotable New Features\n\nUser Defined Value Types\n\nA user defined value type allows creating a zero-cost-abstraction over an elementary value type that\nalso...","url":"/blog/2021/09/27/solidity-0.8.8-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.7 Release Announcement","date":"2021-08-11","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.7 introduces support for\nthe London upgrade, includes\nvarious improvements to Yul to EVM code transformation, the SMTChecker and some bugfixes.\n\nPlease note: Unfortunately, the npm package of this version is corrupted. Pulling the solc-js repository directly will work.\n\nSupport for London Upgrade\n\nSolidity adds support for the BASEFEE opcode (EIP-3198\nand EIP-1559) which exposes the block's base fee. This\ncan be accessed via the global block.basefee or using basefee() in inline assembly or Yul.\n\nThe following contract illustrates an example:\n\ncontract Basefee {\n function...","url":"/blog/2021/08/11/solidity-0.8.7-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.6 Release Announcement","date":"2021-06-22","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.6 fixes some\nnon-critical but annoying bugs, especially a warning about unreachable code that\nis in fact reachable.\n\nBugfixes\n\nUnreachable Warning\n\nWith Solidity 0.8.5, we released a new feature that detects if code is unreachable\nbecause a called function always reverts before the code is executed. This detection contained a bug\nin connection with nested calls to internal library functions where the \"reverting behaviour\"\nof a function was not properly updated after a\nfunction called by it was determined to be not always reverting.\n\nBecause the bug was rather...","url":"/blog/2021/06/22/solidity-0.8.6-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.5 Release Announcement","date":"2021-06-10","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.5 allows conversions\nfrom bytes to bytesNN values, adds the verbatim builtin function to inject\narbitrary bytecode in Yul and fixes several smaller bugs.\n\nNotable New Features\n\nBytes Conversion\n\nFind the complete feature documentation here.\n\nThis release introduces the ability to convert bytes and bytes slices to fixed bytes types bytes1 / ... / bytes32. While conversion between fixed-length bytes types has always been possible, it is now also possible to convert dynamically-sized bytes types to fixed-length bytes types.\n\nIn case a byte array is longer...","url":"/blog/2021/06/10/solidity-0.8.5-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.4 Release Announcement","date":"2021-04-21","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.4 adds custom structured errors, bytes.concat(...), allows more flexible\nconfiguration of the SMT checker and fixes a bug in the Solidity ABI decoder v2.\n\nImportant Bugfixes:\n\nOn April 5th, 2021, a bug in the Solidity ABI decoder v2 was reported by John Toman of the Certora development team. For two-dimensional arrays and specially crafted data in memory, the result of abi.decode can depend on data elsewhere in memory. Calldata decoding is not affected. The bug is present in all prior versions of...","url":"/blog/2021/04/21/solidity-0.8.4-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.3 Release Announcement","date":"2021-03-23","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.3 fixes the Solidity Optimizer Keccak Caching Bug, which is present in all prior versions of Solidity, and, in addition, includes two improvements to the optimizer which can provide a big gas benefit when writing structs that cover a full storage slot to storage.\n\nImportant Bugfixes\n\nSolidity Optimizer Keccak Caching Bug\n\nOn March 20, 2021, a bug in Solidity’s bytecode optimizer was found by differential fuzzing. The bug is fixed with this version. The bug is present in all prior versions of...","url":"/blog/2021/03/23/solidity-0.8.3-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.2 Release Announcement","date":"2021-03-02","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.2 adds an optimizer stage that can inline small amounts of code to save gas and\nprovides more means to work with code documentation by exporting inline comments\nand allowing custom natspec tags.\n\nNotable New Features\n\nInliner\n\nThis release adds a simple inliner to the low-level optimizer of Solidity.\nIt can inline short functions that do not contain control-flow branches or\nopcodes with side-effects. If you want to learn more about the inliner, read this post.\n\nCustom Natspec and Exported Documentation\n\nIt is now possible to use documentation...","url":"/blog/2021/03/02/solidity-0.8.2-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.1 Release Announcement","date":"2021-01-27","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.1 introduces\nmany new features for the SMTChecker (see below), updates the\nemscripten version for building soljson.js to 2.0.12,\nallows to catch panic errors and adds other small improvements.\n\nNotable New Features\n\nSMTChecker Counterexamples and Synthesis of External Functions\n\nThe SMTChecker already reports transaction traces as counterexamples to failing verification\ntargets, but 0.8.1 adds internal calls, msg.value and synthesized unknown code called\nexternally in the form of reentrant calls to counterexamples.\nA recent blog post\npresents that topic in more detail.\n\nHow to select SMTChecker targets\n\nPrior to 0.8.1, the SMTChecker...","url":"/blog/2021/01/27/solidity-0.8.1-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.0 Release Announcement","date":"2020-12-16","author":"Solidity Team","category":"Releases"},"content":"\nSolidity 0.8.0 is a breaking release of the Solidity compiler and language.\n\nSome of the new features of this release have been elaborated in the 0.8.x preview release post. Please consider the preview release binary superseded and do not use it anymore.\n\nNotable New Features and Changes\n\nAs per ususal, this breaking release does not include many features but rather changes that require a\nbackwards-incompatible adjustment in syntax or semantics. For a detailed explanation,\nplease see the documentation.\n\nThe change that will affect most users is...","url":"/blog/2020/12/16/solidity-v0.8.0-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.6 Release Announcement","date":"2020-12-16","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.7.6 adds better support for calldata types. Furthermore, the fallback function can now have a parameter and explicitly return data.\n\nNotable New Features\n\nDetection of Overflowing Unicode Direction Markers\n\nThe winning entry in the\nSolidity Underhanded Contest\nused a clever combination of Unicode direction markers to deceive the reader about\nthe semantics of a time-locked upgrade mechanism. Starting from Solidity 0.7.6, the parser will reject\ncomments and Unicode strings where the text direction is not properly reset before the end of the\ncomment or string.\n\nBetter Support for...","url":"/blog/2020/12/16/solidity-0.7.6-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.5 Release Announcement","date":"2020-11-18","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.7.5 adds the ability so select the ABI coder via pragma abicoder v1 and pragma abicoder v2 in preparation for making ABI coder v2 the default for 0.8.0 and introduces --experimental-via-ir which compiles via the new experimental Yul-based compiler pipeline.\n\nFull Changelog\n\nLanguage Features:\n\nAbility to select the abi coder using pragma abicoder v1 and pragma abicoder v2.\nInline Assembly: Use .offset and .length for calldata variables of dynamic array type to access their calldata offset and length (number of elements). Both of...","url":"/blog/2020/11/18/solidity-0.7.5-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.x Preview Release","date":"2020-10-28","author":"Solidity Team","category":"Releases"},"content":"\nWith the Solidity 0.8.x series being just around the corner, we would like to provide insights into the upcoming breaking changes that will come with it.\n\nWe want to provide a preview release binary for everyone to try out so that you can give your feedback.\n\nThe main change for 0.8.x is the switch to checked arithmetic operations by default.\nThis means that x + y will throw an exception on overflow. In other words: You will not need SafeMath anymore!\n\nSince the scope...","url":"/blog/2020/10/28/solidity-0.8.x-preview"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.4 Release Announcement","date":"2020-10-19","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.7.4 fixes a storage corruption bug of medium severity.\nTo learn more about the bug and to check if your contract is vulnerable please read this post with further details about the bug. The bug has been reported by John Toman of the Certora development team.\n\nAdditionally, v0.7.4 adds constants at file-level.\n\nImportant Bugfixes\n\nCode Generator: Fix data corruption bug when copying empty byte arrays from memory or calldata to storage. Read more here.\n\nNotable New Features\n\nConstants at File-Level\n\nIn order to make functions at...","url":"/blog/2020/10/19/solidity-0.7.4-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.3 Release Announcement","date":"2020-10-07","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.7.3 fixes a bug in the dynamic-array cleanup.\nTo learn more about the bug and check if your contract is vulnerable please read this post with further details about the bug.\nAdditionally, v0.7.3 adds the option to stop compilation after the parsing stage using solc --stop-after parsing.\n\nImportant Bugfixes\n\nCode Generator: Properly cleanup after copying dynamic-array to storage for packed types. Read more here.\n\nNotable New Features\n\nStop Compilation after Parsing\n\nsolc --stop-after parsing (or settings.stopAfter = 'parsing' in standard-json) can now be used to instruct...","url":"/blog/2020/10/07/solidity-0.7.3-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.2 Release Announcement","date":"2020-09-28","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.7.2 fixes a bug in free functions, which had been introduced with v0.7.1, and adds compiler-generated utility file export. Furthermore, it comes with a considerably broadened language support of the SMTChecker.\n\nImportant Bugfixes\n\nFree Function Overloading Checks\n\nFree functions were introduced in the previous release (Solidity v0.7.1). It turned out that it was possible\nto define a function with the same name multiple times, even containing the same parameter types.\nAllowing two functions with the same name, but different parameter types is called \"overloading\"\nand...","url":"/blog/2020/09/28/solidity-0.7.2-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.1 Release Announcement","date":"2020-09-02","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.7.1 adds functions at file-level and fixes several small bugs.\n\nNotable New Features\n\nFunctions At File-Level\n\nFunctions can now be defined at file-level. Such functions are called \"free functions\"\n(as opposed to functions bound to a specific contract).\n\nFree functions are always internal functions\nand are meant to replace internal library functions and their very special behaviour.\n\nA free function behaves like an internal function of the contract that called it.\nThe main difference is that a free function cannot directly access state variables and internal\nfunctions of...","url":"/blog/2020/09/02/solidity-0.7.1-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.0 Release Announcement","date":"2020-07-28","author":"Solidity Team","category":"Releases"},"content":"\nSolidity 0.7.0 is a breaking release of the Solidity compiler and language.\n\nThis release does not include many features but rather changes that require a\nbackwards-incompatible adjustment in syntax or semantics. For a detailed explanation,\nplease see the documentation.\n\nMost notably, further cleanup of visibility and state mutability has been performed\nand several unpopular keywords have been removed. Types with mappings\nin memory are disallowed and shift and exponentiation operations use more reasonable types.\n\nSince we usually do not backport bugfixes, it is recommended to upgrade all...","url":"/blog/2020/07/28/solidity-v0.7.0-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.12 Release Announcement","date":"2020-07-22","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.6.12 adds more flexibility\nwhen using inheritance with NatSpec comments and introduces many small improvements to the optimizer.\n\nNotable New Features\n\nNatSpec Inheritance\n\nAs explained in the Solidity 0.6.11 release announcement,\nNatSpec comments are now inherited automatically if you do not provide any\nNatSpec in the derived function. Starting from Solidity 0.6.12, you can\nexplicitly inherit comments from a base contract using the tag @inheritdoc\neven if you specify some of the tags.\nThe tags that are not given will then be taken from the specified base class'\nfunction.\n\n//...","url":"/blog/2020/07/22/Solidity-0612-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.11 Release Announcement","date":"2020-07-07","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.6.11 adds inheritance to NatSpec comments,\nimproves debugging data output and fixes some minor issues with opening up calldata for non-external functions.\n\nNotable New Features\n\nNatSpec Inheritance and on Events\n\nNatSpec comments are a way to describe the behaviour of a function to end-users. It also allows\nto provide more detailed information to developers.\n\nOne regular use-case is that you document the behaviour of an interface and then implement\nthe interface in a derived contract. Previously, you had to repeat the documentation in the derived\ncontract. This...","url":"/blog/2020/07/07/Solidity-0611-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.10 Release Announcement","date":"2020-06-11","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.6.10 fixes an important bug that was introduced in the previous release and adds error codes.\n\nPlease upgrade if you are using internal library functions with calldata parameters in connection with using for.\n\nImportant Bugfixes\n\nInvalid Access for Calldata Parameters in Internal Library Functions\n\nProblem: The previous release, Solidity 0.6.9, introduced the possibility to use calldata types in internal and not, as previously, only in external functions.\nThis resulted in a bug related to calling library functions with calldata parameters via using for.\nMore specifically,...","url":"/blog/2020/06/11/Solidity-0610-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.9 Release Announcement","date":"2020-06-05","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.6.9 adds SMT-checking to solc-js,\nallows calldata for all variables and provides a mechanism to specify an import directory.\n\nPlease note that the solc-js / soljson binary includes the Z3 SMT solver built-in, which causes an increase in the binary size.\n\nNotable New Features\n\nSMTChecker\n\nThe SMTChecker is a component of the Solidity compiler which has been in development for quite some time now.\n\nIts aim is to bring formal verification methods to the Solidity compiler. Solidity implements a formal verification approach based on SMT/Horn...","url":"/blog/2020/06/05/Solidity-069-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.8 Release Announcement","date":"2020-05-14","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.6.8 fixes three important bugs in the code generator and introduces a recommendation to use SPDX license identifiers. Furthermore, support for WebAssembly has been extended and it is now possible to access the min and max values of an integer type directly.\n\nPlease upgrade if you are using array slices, backslashes in string literals for ABIEncoderV2 or are concerned about non-payable constructors.\n\nImportant Bugfixes\n\nPlease note that the three bugs outlined below have all been rated with a severity level of \"very...","url":"/blog/2020/05/14/Solidity-068-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.7 Release Announcement","date":"2020-05-04","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.6.7 introduces support for EIP-165 via type(InterfaceName).interfaceId.\n\nLanguage Features:\n\nAdd support for EIP 165 interface identifiers with type(I).interfaceId.\nAllow virtual modifiers inside abstract contracts to have empty body.\n\nCompiler Features:\n\nOptimizer: Simplify repeated AND and OR operations.\nOption to specify optimization steps to be performed by Yul optimizer with yul-optimizations in the commandline interface or optimizer.details.yulDetails.optimizerSteps in standard-json.\nStandard Json Input: Support the prefix file:// in the field urls.\n\nBugfixes:\n\nSMTChecker: Fix internal error when fixed points are used.\nSMTChecker: Fix internal error when using array slices.\nType Checker: Disallow...","url":"/blog/2020/05/04/solidity-0.6.7-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.6 Release Announcement","date":"2020-04-09","author":"Solidity Team","category":"Releases"},"content":"\nThis is a small bugfix release that solves an issue with certain tuple assignments.\n\nImportant Bugfixes:\n\nFix tuple assignments with components occupying multiple stack slots and different stack size on left- and right-hand-side.\n\nBugfixes:\n\nAST export: Export immutable property in the field mutability.\nSMTChecker: Fix internal error in the CHC engine when calling inherited functions internally.\nType Checker: Error when trying to encode functions with call options gas and value set.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version...","url":"/blog/2020/04/09/solidity-0.6.6-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.5 Release Announcement","date":"2020-04-06","author":"Solidity Team","category":"Releases"},"content":"\nVersion 0.6.5 of Solidity fixes an important bug and introduces immutable as a major feature.\n\nThe bug concerns the allocation of dynamic memory arrays using e.g. new uint. The bug is considered to have a severity level of \"low\" but is present in all prior versions of Solidity. Therefore, please read more about how check if your contract is vulnerable in this blog post.\n\nThe immutable feature supports setting contract-level variables at construction time if they do not change later on. These...","url":"/blog/2020/04/06/solidity-0.6.5-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.17 Release Announcement","date":"2020-03-17","author":"Solidity Team","category":"Releases"},"content":"\nThis maintenance release of the 0.5.x series fixes a bug that was always present in the compiler. Some people do not even consider it a bug, though, which might explain why it was undiscovered for so long:\n\nA private function can be overridden in a derived contract by a private function of the same name and types. In other words, the virtual function calling mechanism does not respect visibility.\nThe same applies to two private functions of the same name and type...","url":"/blog/2020/03/17/solidity-0.5.17-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.4 Release Announcement","date":"2020-03-10","author":"Solidity Team","category":"Releases"},"content":"\nVersion 0.6.4 of Solidity fixes a bug that did not allow calling base contract functions directly, another bug that caused issues with variable scoping in try/catch and it allows for greater flexibility with regards to storage: It is now possible to set storage slots for storage reference variables from inline assembly. We expect this to allow new patterns in connection to delegatecall proxies and upgradable contracts. Please be careful when using this feature!\n\nLanguage Features:\n\nGeneral: Deprecated value(...) and gas(...) in favor...","url":"/blog/2020/03/10/solidity-0.6.4-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.3 Release Announcement","date":"2020-02-18","author":"Solidity Team","category":"Releases"},"content":"\nThis release adds reason strings for compiler-generated reverts if you specify revert-strings debug or use the setting settings.debug.revertStrings = \"debug\". Furthermore, contract types and enums are now allowed as keys for mappings and the doxygen-style comments are better supported by the AST.\n\nLanguage Features:\n\nAllow contract types and enums as keys for mappings.\nAllow function selectors to be used as compile-time constants.\n\nCompiler Features:\n\nAST: Add a new node for doxygen-style, structured documentation that can be received by contract, function, event and modifier definitions.\nCode Generator:...","url":"/blog/2020/02/18/solidity-0.6.3-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.2 Release Announcement","date":"2020-01-27","author":"Solidity Team","category":"Releases"},"content":"\nAfter long discussions, we finally enabled a high-level way to use the create2 opcode introduced in Constantinople: When creating a contract, you can specify the salt as a \"function call option\": new Contract{salt: 0x1234}(arg1, arg2). We took this opportunity and also extended the use of these function call options to specifying the gas and value options in external function calls: c.f{value: 10, gas: 20000}(arg1, arg2).\n\nFurthermore, interfaces can now inherit from interfaces, making them even more useful for specification purposes.\n\nTo allow...","url":"/blog/2020/01/27/solidity-0.6.2-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.1 Release Announcement","date":"2020-01-02","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug in the Yul optimizer related to break and continue statements in loops. The Yul optimizer is part of the regular optimizer since version 0.6.0. In version 0.5.x, you had to explicitly activate the Yul optimizer in addition to the regular optimizer. The Yul optimizer only operates on the code generated by ABIEncoderV2 or if you use it in a stand-alone way. The code generated by ABIEncoderV2 does not make use of break and continue, but...","url":"/blog/2020/01/02/solidity-0.6.1-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.16 Release Announcement","date":"2020-01-02","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug in the Yul optimizer. You are only affected if you manually enabled the Yul optimizer (not the regular optimizer) and either used Yul stand-alone or via ABIEncoderV2. For more details, please see buglist.json.\n\nBugfixes:\n\nYul Optimizer: Fix bug in redundant assignment remover in combination with break and continue statements.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2020/01/02/solidity-0.5.16-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.0 Release Announcement","date":"2019-12-17","author":"Solidity Team","category":"Releases"},"content":"\nThis is a major breaking release of the Solidity compiler and language. Changes include explicit virtual and override keywords in inheritance, support for try/catch, splitting the fallback function into a receive Ether function and an actual fallback function and limitations on how the length of an array can be changed, among others. For a detailed explanation, please see the documentation or refer to the list below that shows every single change.\n\nFrom this release on, ABIEncoderV2 is not considered experimental any...","url":"/blog/2019/12/17/solidity-0.6.0-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.15 Release Announcement","date":"2019-12-17","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug that was introduced in 0.5.14 (the previous release). You are only affected if you manually enabled the Yul optimizer (not the regular optimizer) and either used Yul stand-alone or via ABIEncoderV2. For more details, please see buglist.json.\n\nBugfixes:\n\nYul Optimizer: Fix incorrect redundant load optimization crossing user-defined functions that contain for-loops with memory / storage writes.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2019/12/17/solidity-0.5.15-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.14 Release Announcement","date":"2019-12-09","author":"Solidity Team","category":"Releases"},"content":"\nSolidity 0.5.14 sets the default EVM version to \"Istanbul\" and is targeted as the last release in the 0.5.x series.\n\nThe SMT checker supports constructors now and it is possible to directly translate EVM-flavoured Yul to Ewasm from the commandline interface.\n\nLanguage Features:\n\nAllow to obtain the selector of public or external library functions via a member .selector.\nParser: Allow splitting string and hexadecimal string literals into multiple parts.\nInline Assembly: Support constants that reference other constants.\n\nCompiler Features:\n\nCommandline Interface: Allow translation from yul / strict...","url":"/blog/2019/12/09/solidity-0.5.14-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.13 Release Announcement","date":"2019-11-14","author":"Solidity Team","category":"Releases"},"content":"\nSolidity 0.5.13 provides Istanbul-EVM compatibility (default is still set to Petersburg), is the first version to generate Ethereum-Webassembly (EWasm) binary output (not fully working yet, though), improves the developer experience by listing potential overloads when resolution fails and can output the layout of the storage variables of a contract. As with all other releases, the coverage of the SMT checker is further improved.\n\nLanguage Features:\n\nAllow to obtain the address of a linked library with address(LibraryName).\n\nCompiler Features:\n\nCode Generator: Use SELFBALANCE opcode for...","url":"/blog/2019/11/14/solidity-0.5.13-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.12 Release Announcement","date":"2019-10-01","author":"Solidity Team","category":"Releases"},"content":"\nThis is a small bugfix release that also includes loop support for the SMT solver and some improvements to the Yul optimizer. The reason for the smaller feature set is that we are mainly working on the upcoming 0.6.0 release.\n\nLanguage Features:\n\nType Checker: Allow assignment to external function arguments except for reference types.\n\nCompiler Features:\n\nABI Output: Change sorting order of functions from selector to kind, name.\nOptimizer: Add rule that replaces the BYTE opcode by 0 if the first argument is larger than...","url":"/blog/2019/10/01/solidity-0.5.12-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.11 Release Announcement","date":"2019-08-12","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug related to calldata structs in ABIEncoderV2 and calldata decoding in V1. Several internal bugs of the SMT checker are fixed.\nFurthermore, internal types are added to the ABI output which allows you to see which struct type is behind an ABI tuple. Finally, Yul and web assembly support are progressing.\n\nWe also improved our testing framework which now allows for semantics tests to run in 4 seconds instead of 1 minute.\n\nLanguage Features:\n\nInline Assembly: Support direct constants of...","url":"/blog/2019/08/12/solidity-0.5.11-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.10 Release Announcement","date":"2019-06-25","author":"Solidity Team","category":"Releases"},"content":"\nApart from further invisible work on the Yul optimizer, the Solidity to Yul code generation, the eWasm backend and the SMT checker, this release contains two important bug fixes related to storage arrays.\n\nFor details see our earlier blog post.\n\nIt also contains an experimental mode that allows recovery from parser error (implemented by @rocky, funded by ConsenSys) in the hope that this might be useful for IDE developers.\n\nImportant Bugfixes:\n\nABIEncoderV2: Fix incorrect abi encoding of storage array of data type that occupy...","url":"/blog/2019/06/25/solidity-0.5.10-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.9 Release Announcement","date":"2019-05-28","author":"Solidity Team","category":"Releases"},"content":"\nAs in previous releases, we spent most of the time making Solidity future-proof by further working on the Yul optimizer, the Solidity to Yul (and eWasm) translator and the SMT Checker.\n\nCode generated from Solidity now always includes the version number in the CBOR metadata so that it becomes possible to quickly assess whether a contract might be affected by a compiler bug or not.\n\nLanguage Features:\n\nInline Assembly: Revert change introduced in 0.5.7: The callvalue() instruction does not require payable anymore.\nStatic Analyzer:...","url":"/blog/2019/05/28/solidity-0.5.9-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.8 Release Announcement","date":"2019-04-30","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes important but very unlikely bugs and further completes ABIEncoderV2, SMTChecker and Yul and improves the optimizer.\n\nNotably, if ABIEncoderV2 is activated, the ABI decoder will now revert on input with dirty higher order bits instead of ignoring those bits.\n\nImportant Bugfixes:\n\nCode Generator: Fix initialization routine of uninitialized internal function pointers in constructor context.\nType System: Use correct type name for contracts in event parameters when used in libraries. This affected code generation.\nYul Optimizer: Fix SSA transform for multi-assignments.\n\nLanguage Features:\n\nABIEncoderV2: Implement...","url":"/blog/2019/04/30/solidity-0.5.8-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.26 Release Announcement","date":"2019-04-29","author":"Solidity Team","category":"Releases"},"content":"\nThis is a bugfix release for the 0.4.x series that contains backported fixes for important bugs that affected code generation. It also contains a fix that makes the emscripten target compatible with newer browser versions.\n\nImportant Bugfixes:\n\nCode Generator: Fix initialization routine of uninitialized internal function pointers in constructor context.\nType System: Use correct type name for contracts in event parameters when used in libraries. This affected code generation.\n\nBugfixes:\n\nABIEncoderV2: Refuse to generate code that is known to be potentially buggy.\nGeneral: Split rule list...","url":"/blog/2019/04/29/solidity-0.4.26-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.7 Release Announcement","date":"2019-03-26","author":"Solidity Team","category":"Releases"},"content":"\nThis release mainly fixes bugs in the optimizer and in the experimental ABI encoder. For details about the bug, please see the official announcement.\n\nFurthermore, this release also allows you to use Yul as a language option (instead of \"Solidity\") in the standard-json-interface.\n\nImportant Bugfixes:\n\nABIEncoderV2: Fix bugs related to loading short value types from storage when encoding an array or struct from storage.\nABIEncoderV2: Fix buffer overflow problem when encoding packed array from storage.\nOptimizer: Fix wrong ordering of arguments in byte optimization rule...","url":"/blog/2019/03/26/solidity-0.5.7-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.6 Release Announcement","date":"2019-03-13","author":"Solidity Team","category":"Releases"},"content":"\nThis release mainly fixes an optimizer bug related to multiple shift opcodes that was introduced in the previous release. It is unlikely that any existing contracts are affected, but you should still not use Solidity 0.5.5.\n\nApart from that, the support for calldata structs and arrays by ABIEncoderV2 is almost finished now, we added some more optimizer rules and added enums and one-dimensional arrays to the SMT checker.\n\nImportant Bugfixes:\n\nYul Optimizer: Fix visitation order bug for the structural simplifier.\nOptimizer: Fix overflow in...","url":"/blog/2019/03/13/solidity-0.5.6-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.5 Release Announcement","date":"2019-03-05","author":"Solidity Team","category":"Releases"},"content":"\nThis release focuses on the stabilization of the ABIEncoderV2 and the optimizer. We also prepared for the Petersburg release which is the default EVM now and improved the SMT checker, such that it now reports less false positives when using SafeMath.\nYou can now activate the experimental Yul optimizer using settings: {optimizer: {enabled: true, details: {yul: true}}} or in the commandline via solc optimize-yul.\n\nLanguage Features:\n\nAdd support for getters of mappings with string or bytes key types.\nMeta programming: Provide access to the...","url":"/blog/2019/03/05/solidity-0.5.5-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.4 Release Announcement","date":"2019-02-12","author":"Solidity Team","category":"Releases"},"content":"\nThis release adds support for calldata structs and packed encoding with ABIEncoderV2. We also introduced some changes to the C API and added support for continuous fuzzing via Google oss-fuzz. In addition to that, we added a new commandline option for improved (colorized) diagnostics formatting.\n\nLanguage Features:\n\nAllow calldata structs without dynamically encoded members with ABIEncoderV2.\n\nCompiler Features:\n\nABIEncoderV2: Implement packed encoding.\nC API (libsolc / raw soljson.js): Introduce solidity_free method which releases all internal buffers to save memory.\nCommandline Interface: Adds new option new-reporter for...","url":"/blog/2019/02/12/solidity-0.5.4-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.3 Release Announcement","date":"2019-01-22","author":"Solidity Team","category":"Releases"},"content":"\nThis release adds support for accessing the code of a contract type, which will hopefully make the new CREATE2 opcode easier to use. We also added some static analysis features to the compiler, but most changes were done \"under the hood\" to pave the way for using the new Yul-based optimizer with ABIEncoderV2.\n\nLanguage Features:\n\nProvide access to creation and runtime code of contracts via type(C).creationCode / type(C).runtimeCode.\n\nCompiler Features:\n\nControl Flow Graph: Warn about unreachable code.\nSMTChecker: Support basic typecasts without truncation.\nSMTChecker: Support external...","url":"/blog/2019/01/22/solidity-0.5.3-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.2 Release Announcement","date":"2018-12-19","author":"Solidity Team","category":"Releases"},"content":"\nThis release of the Solidity compiler includes several performance optimizations. These include faster compilation time but also cheaper contracts in some situations. This version also checks for all instances of uninitialized storage references, has some improved error messages and other checks.\n\nYou can now create complete contracts in Yul through the support of the Yul object format and the special functions datasize, dataoffset and datacopy.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of...","url":"/blog/2018/12/19/solidity-0.5.2-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.1 Release Announcement","date":"2018-12-03","author":"Solidity Team","category":"Releases"},"content":"\nThis release improves the usability of interfaces, fixes some bugs, extends the SMT checker and provides an early preview of the Yul optimizer.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2018/12/03/solidity-0.5.1-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.0 Release Announcement","date":"2018-11-13","author":"Solidity Team","category":"Releases"},"content":"\nThis is a major breaking release of the Solidity language and compiler that includes many new safety features. In general, programmers have to be more explicit, some weird edge-cases are removed from the language and the low-level compiler interface is much simpler.\n\nThis release was long overdue and as a result has amassed an incredibly long list of changes. Please refer to the \"Solidity v0.5.0 Breaking Changes” section in the documentation about a good description of what has changed and how...","url":"/blog/2018/11/13/solidity-0.5.0-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.25 Release Announcement","date":"2018-09-13","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixed a cleanup error concerning the exponentiation operator. It is a bugfix-only release\nand does not contain any features. A more detailed description of the bugs fixed can be found\non the ethereum blog.\n\nNote that nightly builds of Solidity currently contain changes unrelated to this bugfix release.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2018/09/13/solidity-0.4.25-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.24 Release Announcement","date":"2018-05-16","author":"Solidity Team","category":"Releases"},"content":"\nAll remaining breaking changes planned for version 0.5.0 that can be implemented in a backwards-compatible way made it into this release. Solidity can now detect uninitialized storage pointers using control-flow analysis. It is again possible to assign multiple return values from a function to newly declared variables and the SMT checker is able to work with simple storage variables.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2018/05/16/solidity-0.4.24-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.23 Release Announcement","date":"2018-04-19","author":"Solidity Team","category":"Releases"},"content":"\nBugfix release: In the previous release, it was possible to define two constructors (one using the new constructor-keyword syntax, another one with the old syntax) for a contract, but only one of them got used in the end. We also included other bugfixes.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2018/04/19/solidity-0.4.23-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.22 Release Announcement","date":"2018-04-17","author":"Solidity Team","category":"Releases"},"content":"\nThis release features several major and long-awaited changes:\n\nIt is now possible to access dynamic data (arrays, strings, etc) returned by function calls.\nYou can specify error reason strings for revert and require (support by tooling is still pending).\nWe added the global functions abi.encode(), abi.encodePacked(), abi.encodeWithSelector() and abi.encodeWithSignature() which expose the ABI encoding functions and each return a bytes value.\nConstructors should now be defined using constructor(uint arg1, uint arg2) { ... } to make them stand out and avoid bugs when contracts...","url":"/blog/2018/04/17/solidity-0.4.22-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.21 Release Announcement","date":"2018-03-08","author":"Solidity Team","category":"Releases"},"content":"\nWe again introduced several changes that are scheduled for version 0.5.0 and can be activated using pragma experimental \"v0.5.0\";. In this release, this pragma does not generate a warning anymore, so you can (and should) use it in production code.\n\nIn addition to that, you can now specify which EVM version the contract should be compiled for. Valid values are \"homestead\", \"tangerineWhistle\", \"spuriousDragon\", \"byzantium\" (the default) and \"constantinople\". Depending on this setting, different opcodes will be used in some cases. The...","url":"/blog/2018/03/08/solidity-0.4.21-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.20 Release Announcement","date":"2018-02-14","author":"Solidity Team","category":"Releases"},"content":"\nThis release includes some usability and security improvements and a further evolution of the SMT component. The var keyword has been deprecated for security reasons.\n\nSignificant steps were made in writing optimisation stages for the intermediate language, which will be used by the new ABI encoder to produce highly optimised output. The main goal is to have a resulting bytecode size similar to the old ABI encoder, while having more runtime checks for a stricter decoding process. This is not yet...","url":"/blog/2018/02/14/solidity-0.4.20-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.19 Release Announcement","date":"2017-11-30","author":"Solidity Team","category":"Releases"},"content":"\nIn the last weeks, we have mainly been working on big internal changes. One of them is the new ABI decoder, which is still in experimental mode, but will hopefully be production-usable soon. External contributions like allowing constant variables for array lengths and improved error messages should make your life as a programmer easier. Finally, the standard-json-io-system now allows to select certain artifacts from a contract which should speed up your code-compile-test-cycle even more!\n\nFeatures:\n\nCode Generator: New ABI decoder which supports...","url":"/blog/2017/11/30/solidity-0.4.19-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.18 Release Announcement","date":"2017-10-18","author":"Solidity Team","category":"Releases"},"content":"\nThis release adds further backwards-incompatible security measures enabled via pragma experimental \"v0.5.0\"; and contains another important feature: You can now select to compile only certain contracts using the outputSelection field of the standard-json-io compiler interface, which should speed up tools like truffle tremendously.\n\nThere are also two important bug fixes: One was an oversight in the way bytes variables are allocated in memory and can reduce the memory requirements 32-fold. The second is a security fix: In extremely specific circumstances, it...","url":"/blog/2017/10/18/solidity-0.4.18-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.17 Release Announcement","date":"2017-09-21","author":"Solidity Team","category":"Releases"},"content":"\nAs we are getting closer to the next breaking release, we want to give everyone a heads up by introducing pragma experimental \"v0.5.0\" which already enables some of the new safety features of the 0.5.0 release.\n\nFurthermore, this release finally checks the modifiers view (used to be named constant) and pure on functions. As a rule of thumb, use view if your function does not modify storage and pure if it does not even read any state information - but the...","url":"/blog/2017/09/21/solidity-0.4.17-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.16 Release Announcement","date":"2017-08-24","author":"Solidity Team","category":"Releases"},"content":"\nThis release introduces several new features, some of which have to be\nexplicitly activated using pragma experimental ;.\n\nWe split the constant keyword for functions into pure (neither reads from nor writes to the state)\nand view (does not modify the state). They are not enforced yet, but will most likely make use\nof the the new STATIC_CALL feature after Metropolis.\n\nFurthermore, the ABI encoder was re-implemented in a much cleaner way using our new intermediate language. It can encode arbitrarily nested arrays and will...","url":"/blog/2017/08/24/solidity-0.4.16-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.15 Release Announcement","date":"2017-08-08","author":"Solidity Team","category":"Releases"},"content":"\nThis is mainly a bugfix release that corrects a problem with the return value of the low-level delegatecall function and removes some invalid warning messages.\n\nFeatures:\n\nType Checker: Show unimplemented function if trying to instantiate an abstract class.\n\nBugfixes:\n\nCode Generator: .delegatecall() should always return execution outcome.\nCode Generator: Provide \"new account gas\" for low-level callcode and delegatecall.\nType Checker: Constructors must be implemented if declared.\nType Checker: Disallow the .gas() modifier on ecrecover, sha256 and ripemd160.\nType Checker: Do not mark overloaded functions as shadowing other functions.\nType...","url":"/blog/2017/08/08/solidity-0.4.15-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.14 Release Announcement","date":"2017-07-31","author":"Solidity Team","category":"Releases"},"content":"\nThis release contains several new features and bugfixes and also an important security fix: The ecrecover function can be forced to return invalid data, which can be used to bypass authentication in very special circumstances.\n\nFeatures:\n\nC API (jsonCompiler): Export the license method.\nCode Generator: Optimise the fallback function, by removing a useless jump.\nInline Assembly: Show useful error message if trying to access calldata variables.\nInline Assembly: Support variable declaration without initial value (defaults to 0).\nMetadata: Only include files which were used to compile...","url":"/blog/2017/07/31/solidity-0.4.14-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.13 Release Announcement","date":"2017-07-06","author":"Solidity Team","category":"Releases"},"content":"\nThis is a small bugfix release that fixes several trivial but very annoying bugs that were introduced with 0.4.12. We also deprecate some old features in preparation of the breaking release 0.5.0.\n\nFeatures:\n\nSyntax Checker: Deprecated throw in favour of require(), assert() and revert().\nType Checker: Warn if a local storage reference variable does not explicitly use the keyword storage.\n\nBugfixes:\n\nCode Generator: Correctly unregister modifier variables.\nCompiler Interface: Only output AST if analysis was successful.\nError Output: Do not omit the error type.\n\nA big thank you...","url":"/blog/2017/07/06/solidity-0.4.13-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.12 Release Announcement","date":"2017-07-03","author":"Solidity Team","category":"Releases"},"content":"\nThis release introduces the AST export, solidifies inline assembly, introduces some more warnings and fixes several bugs.\n\nManual jumps in assembly are deprecated in favour of the structured constructs switch, for and function calls also to provide better portability in the future.\n\nFeatures:\n\nAssembly: Add CREATE2 (EIP86), STATICCALL (EIP214), RETURNDATASIZE and RETURNDATACOPY (EIP211) instructions.\nAssembly: Display auxiliary data in the assembly output.\nAssembly: Renamed SHA3 to KECCAK256.\nAST: export all attributes to JSON format.\nC API (jsonCompiler): Use the Standard JSON I/O internally.\nCode Generator: Added the Whiskers...","url":"/blog/2017/07/03/solidity-0.4.12-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.11 Release Announcement","date":"2017-05-03","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug in the optimizer (more about this on the blog), introduces the standard JSON interface, adds interface contracts and implements some additional safety checks.\n\nThe standard JSON interface provides a unified way to invoke the Solidity compiler in order to ease cross-platform adoption and compilation verification.\n\nFeatures:\n\nImplement the Standard JSON Input / Output API\nSupport interface contracts.\nC API (jsonCompiler): Add the compileStandard() method to process a Standard JSON I/O.\nCommandline interface: Add the standard-json parameter to process a Standard JSON...","url":"/blog/2017/05/03/solidity-0.4.11-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.10 Release Announcement","date":"2017-03-15","author":"Solidity Team","category":"Releases"},"content":"\nThis release is focused on stability and also introduces some new smart contract safety features: require, assert and transfer. Note that the new revert function will only be gas-efficient starting from homestead.\n\nFeatures:\n\nAdd assert(condition), which throws if condition is false (meant for internal errors).\nAdd require(condition), which throws if condition is false (meant for invalid input).\nCommandline interface: Do not overwrite files unless forced.\nIntroduce .transfer(value) for sending Ether.\nCode generator: Support revert() to abort with rolling back, but not consuming all gas.\nInline assembly: Support...","url":"/blog/2017/03/15/solidity-0.4.10-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.9 Release Announcement","date":"2017-01-31","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes quite some bugs and also adds several new features.\n\nThings to look out for:\n\nTo disambiguate contracts and libraries of the same name in different files, everything is now prefixed by \"filename:\". This applies to the compiler output, the linker input and other things.\nInternal exceptions are now thrown by using an invalid opcode (0xfe), manual exceptions still use an invalid jump.\n\nFeatures:\n\nCompiler interface: Contracts and libraries can be referenced with a file: prefix to make them unique.\nCompiler interface: Report source...","url":"/blog/2017/01/31/solidity-0.4.9-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.8 Release Announcement","date":"2017-01-13","author":"Solidity Team","category":"Releases"},"content":"\nFeatures:\n\nOptimiser: Performance improvements.\nOutput: Print assembly in new standardized Solidity assembly format.\n\nBugfixes:\n\nRemappings: Prefer longer context over longer prefix.\nType checker, code generator: enable access to events of base contracts' names.\nImports: import \".dir/a\" is not a relative path. Relative paths begin with directory . or ...\nType checker: disallow inheritances of different kinds (e.g. a function and a modifier) of members of the same name\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2017/01/13/solidity-0.4.8-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.7 Release Announcement","date":"2016-12-15","author":"Solidity Team","category":"Releases"},"content":"\nFeatures:\n\nBitshift operators.\nType checker: Warn when msg.value is used in non-payable function.\nCode generator: Inject the Swarm hash of a metadata file into the bytecode.\nCode generator: Replace expensive memcpy precompile by simple assembly loop.\nOptimizer: Some dead code elimination.\n\nBugfixes:\n\nCode generator: throw if calling the identity precompile failed during memory (array) copying.\nType checker: string literals that are not valid UTF-8 cannot be converted to string type\nCode generator: any non-zero value given as a boolean argument is now converted into 1.\nAST Json Converter: replace VariableDefinitionStatement...","url":"/blog/2016/12/15/solidity-0.4.7-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.6 Release Announcement","date":"2016-11-22","author":"Solidity Team","category":"Releases"},"content":"\nBugfixes:\n\nOptimizer: Knowledge about state was not correctly cleared for JUMPDESTs\n\nSwarm hash of js compiler: bzzr:/b873fa122233c91b1531527c390f6ca49df4d2a2c5f75706f4b612a0c813cb6a\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2016/11/22/solidity-0.4.6-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.5 Release Announcement","date":"2016-11-21","author":"Solidity Team","category":"Releases"},"content":"\nThis Solidity release adds function types. Use-cases include supplying callbacks for asynchronous or off-chain operations or generic library features (for example map-reduce-style programming). This release also improves the safety of enums and sending Ether to a contract constructor.\n\nFeatures:\n\nFunction types\nDo-while loops: support for a do while (); control structure\nInline assembly: support invalidJumpLabel as a jump label.\nType checker: now more eagerly searches for a common type of an inline array with mixed types\nCode generator: generates a runtime error when an out-of-range...","url":"/blog/2016/11/21/solidity-0.4.5-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.4 Release Announcement","date":"2016-11-01","author":"Solidity Team","category":"Releases"},"content":"\nThis is a bugfix release that fixes a storage corruption that appears when multiple variables are stored in the same slot (details).\n\nBugfixes:\n\nType checker: forbid signed exponential that led to an incorrect use of EXP opcode.\nCode generator: properly clean higher order bytes before storing in storage.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2016/11/01/solidity-0.4.4-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.3 Release Announcement","date":"2016-10-25","author":"Solidity Team","category":"Releases"},"content":"\nThis is a real bugfix release as you can see from the changelog below. The most important fix concerns the optimizer which generated invalid code connected to the SHA3 opcode in certain situations.\n\nFeatures:\n\nInline assembly: support both suicide and selfdestruct opcodes\n (note: suicide is deprecated).\nInline assembly: issue warning if stack is not balanced after block.\nInclude keccak256() as an alias to sha3().\nSupport shifting constant numbers.\n\nBugfixes:\n\nCommandline interface: Disallow unknown options in solc.\nName resolver: Allow inheritance of enum definitions.\nType checker: Proper type checking...","url":"/blog/2016/10/25/solidity-0.4.3-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.2 Release Announcement","date":"2016-09-17","author":"Solidity Team","category":"Releases"},"content":"\nBugfixes:\n\nCode Generator: Fix library functions being called from payable functions.\nType Checker: Fixed a crash about invalid array types.\nCode Generator: Fixed a call gas bug that became visible after\n version 0.4.0 for calls where the output is larger than the input.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2016/09/17/solidity-0.4.2-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.1 Release Announcement","date":"2016-09-09","author":"Solidity Team","category":"Releases"},"content":"\nThis is a bugfix release that fixes an error when compiling libraries with the latest version 0.4.0.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2016/09/09/solidity-0.4.1-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.0 Release Announcement","date":"2016-09-08","author":"Solidity Team","category":"Releases"},"content":"\nNote: Version 0.4.0 is unable to compile libraries. Please upgrade to 0.4.1.\n\nThis release deliberately breaks backwards compatibility mostly to enforce some safety features. The most important change is that you have to explicitly specify if functions can receive ether via the payable modifier. Furthermore, more situations cause exceptions to be thrown.\n\nMinimal changes to be made for upgrade:\n\nAdd payable to all functions that want to receive Ether (including the constructor and the fallback function).\nChange ` to ;` in modifiers.\nAdd version pragma...","url":"/blog/2016/09/08/solidity-0.4.0-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.6 Release Announcement","date":"2016-08-10","author":"Solidity Team","category":"Releases"},"content":"\nThis is the first release from the new \"solidity-standalone\" repository. It does not have dependencies to cpp-ethereum anymore and can be built just from the solidity github repository.\n\nNote that the optimizer was disabled in some situations which could lead to larger (but correcter) code.\n\nFeatures:\n\nFormal verification: Take external effects on a contract into account.\nType Checker: Warning about unused return value of low-level calls and send.\nOutput: Source location and node id as part of AST output\nOutput: Source location mappings for bytecode\nOutput: Formal...","url":"/blog/2016/08/10/solidity-0.3.6-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.5 Release Announcement","date":"2016-06-10","author":"Solidity Team","category":"Releases"},"content":"\nFeatures:\n\nContext-dependent path remappings (different modules can use the same library in different versions)\n\nBugfixes:\n\nType Checking: Dynamic return types were removed when fetching data from external calls, now they are replaced by an \"unusable\" type.\nType Checking: Overrides by constructors were considered making a function non-abstract.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2016/06/10/solidity-0.3.5-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.4 Release Announcement","date":"2016-05-31","author":"Solidity Team","category":"Releases"},"content":"\nThis release contains no changes outside of the documentation.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2016/05/31/solidity-0.3.4-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.3 Release Announcement","date":"2016-05-27","author":"Solidity Team","category":"Releases"},"content":"\nThis release mainly makes libraries more flexible in that it allows internal functions to be called.\n\nFeatures\n\nAllow internal library functions to be called (by \"inlining\")\nFractional/rational constants (only usable with fixed point types, which are still in progress)\nInline assembly has access to internal functions (as jump labels)\nRunning solc without arguments on a terminal will print help.\n\nFixes\n\nCode Generation: Remove some non-determinism in code generation.\nCode Generation: Corrected usage of not / bnot / iszero in inline assembly\nCode Generation: Correctly clean bytesNN types before comparison\n\nA...","url":"/blog/2016/05/27/solidity-0.3.3-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.2 Release Announcement","date":"2016-04-18","author":"Solidity Team","category":"Releases"},"content":"\nThis is mainly a bugfix release. Under the hood, we are in the process of separating the Solidity source code from the rest of the cpp-ethereum source code so that it can soon be built (and released) in isolation.\n\nFixes:\n\nCode generation: Dynamic arrays of structs were not deleted correctly.\nCode generation: Static arrays in constructor parameter list were not decoded correctly.\nParser: Inline assembly parser: byte opcode was unusable\nError reporting: tokens for variably-sized types were not converted to string properly\n\nA big thank you...","url":"/blog/2016/04/18/solidity-0.3.2-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.1 Release Announcement","date":"2016-03-31","author":"Solidity Team","category":"Releases"},"content":"\nThis release mainly introduces inline assembly (documentation). Inline assembly provides a way to write low-level but still well readable code. Together with the coming features of inline library functions and templates, it allows to move much of the development that had to be done in the compiler itself into libraries written in Solidity. In the future, it will be possible to introduce new versatile types that still look like builtins.\n\nFeatures:\n\ninline assembly\n\nFixes:\n\nCode generation: array access with narrow types did not clean...","url":"/blog/2016/03/31/solidity-0.3.1-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.0 Release Announcement","date":"2016-03-11","author":"Solidity Team","category":"Releases"},"content":"\nThis version is synchronized to the Homestead changes on the main Ethereum network and introduces various breaking changes.\n\nBREAKING CHANGES:\n\nYou should not rely on division for literals resulting in a (truncated) integer. This is still the case but will change once we implement fixed point types, i.e. in the future 1/2 == 0.5 will be true, currently we have 1/2 == 0. Note that this only applies to literals ((2 + 7) / 2) and not variables (x / 2).\nLibrary calls...","url":"/blog/2016/03/11/solidity-0.3.0-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.2.2 Release Announcement","date":"2016-02-17","author":"Solidity Team","category":"Releases"},"content":"\nFeatures:\n\nIndex access for types bytes1, ..., bytes32 (only read access for now).\n\nBugfixes:\n\nType checker crash for wrong number of base constructor parameters.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2016/02/17/solidity-0.2.2-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.2.1 Release Announcement","date":"2016-01-30","author":"Solidity Team","category":"Releases"},"content":"\nThis release includes three major features and one very important bugfix in the optimizer.\n\nIn some situations, the optimizer generated incorrect code. Please always test your code before you use it, unfortunately, we can never guarantee 100% correctness.\n\nWe are especially grateful about the many voluntary community contributions this release received.\nTwo fearless individuals dived deep into the solidity code and delivered two major features: Thanks a lot to @VoR0220 for the inline arrays and to @guanqun for the ternary operator!\nFurthermore, @bobsummerwill spent...","url":"/blog/2016/01/30/solidity-0.2.1-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.2.0 Release Announcement","date":"2015-12-01","author":"Solidity Team","category":"Releases"},"content":"\nFeatures:\n\nAllocation of memory arrays using new.\nBinding library functions to types via using x for y\nBreaking Change**: new ContractName.value(10)() has to be written as (new ContractName).value(10)()\nAdded selfdestruct as an alias for suicide.\n\nBugfixes:\n\nConstructor arguments of fixed array type were not read correctly.\nMemory allocation of structs containing arrays or strings.\nData location for explicit memory parameters in libraries was set to storage.\n\nThe two main features of this release is the ability to create memory arrays (of dynamic length) and to\nattach library functions to types....","url":"/blog/2015/12/01/solidity-0.2.0-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.7 Release Announcement","date":"2015-11-17","author":"Solidity Team","category":"Releases"},"content":"\nFeatures:\n\nImproved error messages for unexpected tokens.\nProof-of-concept transcompilation to why3 for formal verification of contracts.\n\nBugfixes:\n\nWriting to elements of bytes or string overwrite others.\nArrays (also strings) as indexed parameters of events.\n\"Successor block not found\" on Windows.\nUsing string literals in tuples.\nCope with invalid commit hash in version for libraries.\nSome test framework fixes on windows.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2015/11/17/solidity-0.1.7-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.6 Release Announcement","date":"2015-10-16","author":"Solidity Team","category":"Releases"},"content":"\nFeatures:\n\n.push() for dynamic storage arrays.\nTuple expressions ((1,2,3) or return (1,2,3);)\nDeclaration and assignment of multiple variables (var (x,y,) = (1,2,3,4,5); or var (x,y) = f();)\nDestructuring assignment ((x,y,) = (1,2,3))\nHandling of multiple source files in the json compiler.\n\nBugfixes:\n\nInternal error about usage of library function with invalid types.\nCorrectly parse Library.structType a at statement level.\nCorrectly report source locations of parenthesized expressions (as part of \"tuple\" story).\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2015/10/16/solidity-0.1.6-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.5 Release Announcement","date":"2015-10-07","author":"Solidity Team","category":"Releases"},"content":"\nChanges:\n\nBreaking change in storage encoding: Encode short byte arrays and strings together with their length in storage.\nReport warnings.\nAllow storage reference types for public library functions.\nAccess to types declared in other contracts and libraries via ..\nVersion stamp at beginning of runtime bytecode of libraries.\nBugfix: Problem with initialized string state variables and dynamic data in constructor.\nBugfix: Resolve dependencies concerning new automatically.\nBugfix: Allow four indexed arguments for anonymous events.\nBugfix: Detect too large integer constants in functions that accept arbitrary parameters.\n\nA big thank you...","url":"/blog/2015/10/07/solidity-0.1.5-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.4 Release Announcement","date":"2015-09-30","author":"Solidity Team","category":"Releases"},"content":"\nChanges:\n\nBugfix: combined-json output of solc incorrectly returned the runtime binary instead of the binary.\nBugfix: Accessing fixed-size array return values.\nBugfix: Disallow assignment from literal strings to storage pointers.\nRefactoring: Move type checking into its own module.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2015/09/30/solidity-0.1.4-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.3 Release Announcement","date":"2015-09-22","author":"Solidity Team","category":"Releases"},"content":"\nChanges:\n\nthrow statement.\nLibraries that contain functions which are called via CALLCODE.\nLinker stage for compiler to insert other contract's addresses (used for libraries).\nCompiler option to output runtime part of contracts.\nCompile-time out of bounds check for access to fixed-size arrays by integer constants.\nVersion string includes libevmasm/libethereum's version (contains the optimizer).\nBugfix: Accessors for constant public state variables.\nBugfix: Propagate exceptions in clone contracts.\nBugfix: Empty single-line comments are now treated properly.\nBugfix: Properly check the number of indexed arguments for events.\nBugfix: Strings in struct constructors.\n\nA big thank...","url":"/blog/2015/09/22/solidity-0.1.3-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.2 Release Announcement","date":"2015-08-21","author":"Solidity Team","category":"Releases"},"content":"\nChanges:\n\nImproved commandline interface (breaking change).\nExplicit conversion between bytes and string.\nBugfix: Value transfer used in clone contracts.\nBugfix: Problem with strings as mapping keys.\nBugfix: Prevent usage of some operators.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2015/08/21/solidity-0.1.2-release-announcement"}],"category":"Releases"},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/category/security-alerts.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/category/security-alerts.json deleted file mode 100644 index fc4be85c..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/category/security-alerts.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"categoryPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Storage Write Removal Bug On Conditional Early Termination","date":"2022-09-08","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn September 5, 2022, a bug in Solidity's Yul optimizer was found by differential fuzzing.\n\nThe bug was introduced in version 0.8.13 and Solidity version 0.8.17, released on September 08, 2022, provides a fix. The bug is significantly easier to trigger with optimized via-IR code generation, but can theoretically also occur in optimized legacy code generation.\n\nWe assigned the bug a severity of \"medium/high\".\n\nWho Should Be Concerned\n\nIf you're using optimized legacy code generation, you only need to be concerned, if you use...","url":"/blog/2022/09/08/storage-write-removal-before-conditional-termination"},{"frontmatter":{"layout":"post","published":true,"title":"Head Overflow Bug in Calldata Tuple ABI-Reencoding","date":"2022-08-08","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn July 5, 2022, Chance Hudson (@vimwitch) from the Ethereum Foundation discovered a bug in the Solidity code generator.\n\nThe earliest affected version of the compiler is 0.5.8, which introduced ABI-reencoding of calldata arrays and structs.\nSolidity version 0.8.16, released on August 08, 2022, provides a fix.\n\nWe assigned the bug a severity of \"medium\".\n\nWhich Contracts are Affected?\n\nThe effects of the bug manifest when a contract performs ABI-encoding of a tuple that meets all of the following conditions:\n\nThe last component of the tuple...","url":"/blog/2022/08/08/calldata-tuple-reencoding-head-overflow-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Optimizer Bug Regarding Memory Side Effects of Inline Assembly","date":"2022-06-15","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn June 5, 2022, John Toman of the Certora development team reported an optimizer bug\nthat can cause memory writes in inline assembly blocks to be incorrectly removed\nunder certain conditions.\n\nThe bug was introduced in Solidity 0.8.13 with a new Yul optimizer step meant to\nremove unused writes to memory and storage.\n\nWe assigned the bug a severity of \"medium\".\n\nWhich Contracts are Affected?\n\nThe Yul optimizer considers all memory writes in the outermost Yul block that are\nnever read from as unused and removes them. This...","url":"/blog/2022/06/15/inline-assembly-memory-side-effects-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Bug when Copying Dirty Bytes Arrays to Storage","date":"2022-06-15","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn July 1, 2021, a bug in the Solidity code generator was found by differential fuzzing.\nThe bug causes the legacy code generation pipeline to generate code that\nmay write dirty values to storage when copying bytes arrays from calldata or memory.\n\nInitially, it was assumed that the dirty values in storage are only observable using inline\nassembly. However, resizing a bytes array using an empty .push() without actually\nwriting values to it, can expose the dirty bytes without any use of inline assembly.\n\nThe bug...","url":"/blog/2022/06/15/dirty-bytes-array-to-storage-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Bug Concerning Data Location during Inheritance","date":"2022-05-17","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn February 5th 2021, Nicolas Venturo reported a bug that allows\noverriding functions to change the data location of parameters from\nmemory to calldata.\n\nThe bug was introduced in Solidity 0.6.9 together with the ability to use calldata\ndata location for all variables (and not just parameters of external functions).\n\nWe assigned the bug a severity of \"very low\".\n\nWhich Contracts are Affected?\n\nThe effect of the bug is that a memory pointer is interpreted as a calldata pointer\nor vice-versa. It can only happen if you change...","url":"/blog/2022/05/17/data-location-inheritance-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Size Check Bug in Nested Calldata Array ABI-Reencoding","date":"2022-05-17","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn April 7, 2022, a bug in the Solidity code generator was reported by\nJohn Toman of the Certora development team. Certora's bug disclosure post can be found here.\n\nThe bug is fixed with Solidity version 0.8.14\nreleased on May 17, 2022. The bug was first introduced in Solidity version 0.5.8.\n\nWe assigned the bug a severity of \"very low\".\n\nWhich Contracts are Affected?\n\nYou might be affected if you pass a nested array directly to another external\nfunction call or use abi.encode on it.\n\nIf calldata is...","url":"/blog/2022/05/17/calldata-reencode-size-check-bug"},{"frontmatter":{"layout":"post","published":true,"title":"abi.encodeCall Literals Bug","date":"2022-03-16","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn March 10th, 2022, the Solidity team discovered a bug in the implementation of\nabi.encodeCall when used together with fixed-length bytes literals.\n\nIt was introduced together with abi.encodeCall in Solidity 0.8.11 and is fixed in 0.8.13.\n\nWe assigned the bug a severity of \"very low\".\n\nWhich Contracts are Affected?\n\nYou might be affected if you use abi.encodeCall(f, (...)) where f takes a\nbytesNN parameter and you provide the value for that parameter either as a\nhex literal (0x1234 or hex\"abcd\") or\nas a string literal (\"abcd\").\n\nIf you only...","url":"/blog/2022/03/16/encodecall-bug"},{"frontmatter":{"layout":"post","published":true,"title":"User Defined Value Types Bug","date":"2021-09-29","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn September 28th, 2021, Harry Altman (@haltman-at) of Truffle\ndiscovered a bug in user defined value types.\n\nThe bug has no influence on the correctness of Solidity contracts, but contracts compiled with\nSolidity 0.8.8 that use the new feature are unnecessarily wasteful and might have problems with\ntooling or contract upgrades.\n\nThe bug exists only in Solidity 0.8.8 and is fixed in 0.8.9.\n\nWe assigned the bug a severity of \"very low\".\n\nStorage Layout of User Defined Value Types\n\nThe compiler did not correctly compute the storage layout...","url":"/blog/2021/09/29/user-defined-value-types-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Signed Immutables Bug","date":"2021-09-29","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn September 28th, 2021, the Solidity team discovered that\nfor immutable variables of a signed integer type shorter than 256 bits,\nsign extension (cleanup) of its value is not always properly performed.\n\nTo our knowledge, the value can only be accessed in its unclean state\nwhen using inline assembly.\nThe bug is present since the introduction of the\nimmutable feature in Solidity 0.6.5 and is fixed in 0.8.9.\n\nWe assigned the bug a severity of \"very low\".\n\nTechnical Details\n\nWhen immutable variables are assigned in Solidity during the construction...","url":"/blog/2021/09/29/signed-immutables-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity ABI Decoder Bug For Multi-Dimensional Memory Arrays","date":"2021-04-21","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn April 5th, 2021, a bug in the Solidity ABI decoder v2 was reported by\nJohn Toman of the Certora development team. Certora's bug disclosure post\ncan be found here: Memory Isolation Violation in Deserialization Code.\n\nThe bug is fixed with Solidity version 0.8.4\nreleased on April 21st, 2021. The bug is present in all prior versions of ABI coder v2.\n\nWe assigned the bug a severity level of \"very low\", mainly due to the\nfact that it is very hard to exploit the bug.\n\nWe are...","url":"/blog/2021/04/21/decoding-from-memory-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Optimizer Keccak Caching Bug","date":"2021-03-23","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn March 20, 2021, a bug in Solidity's bytecode optimizer was found by differential fuzzing. The bug\nis fixed with version 0.8.3 released on\nMarch 23, 2021. The bug is present in all prior versions of Solidity.\n\nWe assigned the bug a severity level of \"medium\".\n\nTechnical Details\n\nSummary: The bytecode optimizer incorrectly re-used previously evaluated Keccak-256 hashes. You\nare unlikely to be affected if you do not compute Keccak-256 hashes in inline assembly.\n\nSolidity's bytecode optimizer has a step that can compute Keccak-256 hashes, if the...","url":"/blog/2021/03/23/keccak-optimizer-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Empty Byte Array Copy Bug","date":"2020-10-19","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn October 14, 2020, a bug in the Solidity code generator was reported by\nJohn Toman of the Certora development team. Certora's bug disclosure post can be found here.\n\nThe bug is fixed with Solidity version 0.7.4\nreleased on October 19, 2020. The bug is present in all prior versions of Solidity.\n\nWe assigned the bug a severity level of \"medium\".\n\nWho should be concerned\n\nThis bug can cause newly created elements of bytes or string arrays in storage\nto be initialized by a non-zero value. For...","url":"/blog/2020/10/19/empty-byte-array-copy-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Dynamic Array Cleanup Bug","date":"2020-10-07","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn September 17, 2020, a bug in the Solidity code generator was found. The bug is fixed with version 0.7.3\nreleased on October 7, 2020. The bug is present in all prior versions of Solidity.\n\nWe assigned the bug a severity level of \"medium\".\n\nTechnical Details of the Bug\n\nSummary: For a dynamically-sized storage-array with types of size at most 16 bytes,\nassignments that require deleting slots did not zero out the deleted slots properly.\n\nConsider a dynamically-sized array in storage whose base-type is small enough...","url":"/blog/2020/10/07/solidity-dynamic-array-cleanup-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Memory Array Creation Overflow Bug","date":"2020-04-06","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn the 28th of March, a bug in the Solidity code generator was reported through the\nEthereum Foundation Bounty program,\nby John Toman of Certora. The bug is fixed with version 0.6.5,\nreleased on 2020-04-06.\nThe bug is present in all prior versions of Solidity.\n\nWe assigned a severity level of \"low\" because we found the bug to be uncommon and at the same time hard to exploit.\n\nWho should be concerned\n\nIf you have deployed a contract which allocates a memory array of user-supplied length,\nbut does...","url":"/blog/2020/04/06/memory-creation-overflow-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Storage Array Bugs","date":"2019-06-25","author":"Solidity and Security Team","category":"Security Alerts"},"content":"\nThis post was originally published on the Ethereum blog.\n\nThis blog post is about two bugs connected to storage arrays which are otherwise unrelated. Both have been present in the compiler for a long time and have only been discovered now even though a contract containing them should very likely show malfunctions in tests.\n\nDaenam Kim with help from Nguyen Pham, both from Curvegrid discovered an issue where invalid data is stored in connection with arrays of signed integers.\n\nThis bug has been...","url":"/blog/2019/06/25/solidity-storage-array-bugs"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Optimizer and ABIEncoderV2 Bugs","date":"2019-03-26","author":"Solidity and Security Team","category":"Security Alerts"},"content":"\nThis post was originally published on the Ethereum blog.\n\nThrough the Ethereum bug bounty program, we received a report about a flaw within the new experimental ABI encoder (referred to as ABIEncoderV2). Upon investigation, it was found that the component suffers from a few different variations of the same type. The first part of this announcement explains this bug in detail. The new ABI encoder is still marked as experimental, but we nevertheless think that this deserves a prominent announcement since...","url":"/blog/2019/03/26/solidity-optimizer-and-abiencoderv2-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Bugfix Release","date":"2018-09-13","author":"Solidity Team","category":"Security Alerts"},"content":"\nThis post was originally published on the Ethereum blog.\n\nThe latest version 0.4.25 release of Solidity fixes\ntwo important bugs.\nAnother important bug has already been fixed in version 0.4.22 but it was only discovered recently that the bug existed.\n\nNote that the Ethereum Foundation runs a bounty program for the code generator part of Solidity.\n\nCleanup of Exponent in Exponentiation\n\nLikelihood of occurrence: very low\nExploitability: high\nDiscoverability by tests: low\nFixed in version: 0.4.25\n\nSummary: Using short types in the exponent of an exponentiation operation can lead to...","url":"/blog/2018/09/13/solidity-bugfix-release"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Optimizer Bug","date":"2017-05-03","author":"Martin Swende","category":"Security Alerts"},"content":"\nThis post was originally published on the Ethereum blog.\n\nA bug in the Solidity optimizer was reported through the Ethereum Foundation Bounty program, by Christoph Jentzsch. This bug is patched as of 2017-05-03, with the release of Solidity 0.4.11.\n\nBackground\n\nThe bug in question concerned how the optimizer optimizes on constants in the byte code. By \"byte code constants\", we mean anything which is PUSHed on the stack (not to be confused with Solidity constants). For example, if the value 0xfffffffffffffffffffffffffffffffffffffffffffffffe is PUSHed,...","url":"/blog/2017/05/03/solidity-optimizer-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Analysis of Storage Corruption Bug","date":"2016-11-09","author":"Christian Reitwiessner","category":"Security Alerts"},"content":"\nThis post was originally published on the Ethereum blog.\n\nThis blog post provides an update on our findings following the discovery of the storage corruption bug last week.\nIn summary, the bug was much less severe than we initially thought. The small number of affected contracts we found is either only exploitable by the owner, or the exploit can only cause a disruption in the user interface and not in the actual contract logic. All exploitable contracts/dapps we reviewed can be fixed...","url":"/blog/2016/11/09/analysis-storage-corruption-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Security Alert: Variables can be overwritten in storage","date":"2016-11-01","author":"Christian Reitwiessner","category":"Security Alerts"},"content":"\nThis post was originally published on the Ethereum blog.\n\nSummary: In some situations, variables can overwrite other variables in storage.\n\n*Affected Solidity compiler versions: *0.1.6 to 0.4.3 (including 0.4.4 pre-release versions)\n\nDetailed description:\n\nStorage variables that are smaller than 256 bits are packed together into the same 256 bit slot if they can fit. If a value larger than what is allowed by the type is assigned to the first variable, that value will overwrite the second variable.\n\nThis means if an attacker can cause...","url":"/blog/2016/11/01/security-alert-solidity-variables-can-overwritten-storage"},{"frontmatter":{"layout":"post","published":true,"title":"Smart Contract Security","date":"2016-06-10","author":"Christian Reitwiessner","category":"Security Alerts"},"content":"\nThis post was originally published on the Ethereum blog.\n\nSolidity was started in October 2014 when neither the Ethereum network nor the virtual machine had any real-world testing, the gas costs at that time were even drastically different from what they are now. Furthermore, some of the early design decisions were taken over from Serpent. During the last couple of months, examples and patterns that were initially considered best-practice were exposed to reality and some of them actually turned out to...","url":"/blog/2016/06/10/smart-contract-security"}],"category":"Security Alerts"},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/1.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/1.json deleted file mode 100644 index 02980461..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/1.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.20 Release Announcement","date":"2023-05-10","author":"Solidity Team","category":"Releases"},"content":"\nWe are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.20.\nThis latest version includes a range of improvements in the via-IR pipeline and improves the list of events exposed in the contract ABI, and, most importantly, support for the Shanghai hard fork!\n\nImportant Note\n\nThis compiler switches the default target EVM version to Shanghai, which means that the generated bytecode will include PUSH0 opcodes.\nBe sure to select the appropriate EVM version in case you intend to deploy on a...","url":"/blog/2023/05/10/solidity-0.8.20-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2022 Results","date":"2023-03-10","author":"Franziska Heintel","category":"Announcements"},"content":"\nThe 2022 Solidity Developer Survey results are in! In this post, we will be summarizing and analyzing them.\n\nFirst of all, a big thank you to everybody who took the time and participated and to everybody who helped us spread the word about it!\nThis year, we received a smashing 1401 responses. That is more than a 3x in responses compared to the previous survey and we couldn't be happier with the turnout.\nYour input is invaluable to us and plays a crucial...","url":"/blog/2023/03/10/solidity-developer-survey-2022-results"},{"frontmatter":{"layout":"post","published":true,"title":"Feature Deep-Dive: User-Defined Operators","date":"2023-02-22","author":"Kamil Śliwak, Matheus Aguiar","category":"Explainers"},"content":"\nThe highlight of Solidity 0.8.19 release\nis the support for defining operators on user-defined value types (UDVTs).\n\nIf you have not been keeping up with recent features, UDVTs are a new class of types introduced in Solidity 0.8.8.\nThey provide an abstraction over an elementary value type that results in a completely new type.\nThis is similar to creating an alias, but the new type is distinct from the underlying value type\nand all other UDVTs derived from that underlying type.\nThe ability to use operators...","url":"/blog/2023/02/22/user-defined-operators"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.19 Release Announcement","date":"2023-02-22","author":"Solidity Team","category":"Releases"},"content":"\nWe are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.19.\nThis latest version includes a range of improvements and it also introduces the support for defining operators on user-defined value types (UDVTs)!\nYou can learn about it at length in our feature deep-dive blogpost.\n\nNotable New Features\n\nThese are the features we want to highlight in this release.\n\nOperators for User-Defined Value Types\n\nThe ability to use operators is meant to bring the UDVTs closer to being as natural to use\nas the...","url":"/blog/2023/02/22/solidity-0.8.19-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.18 Release Announcement","date":"2023-02-01","author":"Solidity Team","category":"Releases"},"content":"\nIntroducing the newest version of the Solidity Compiler!\n\nWe are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.18.\nThis latest version includes a range of improvements and it also introduces support for the Paris upgrade!\n\nNotable New Features\n\nThese are the features we want to highlight in this release.\n\nDisabling CBOR metadata\n\nA new command-line flag (--no-cbor-metadata) and Standard JSON option (settings.metadata.appendCBOR: false) to prevent compiler from appending the CBOR metadata section at the end of the bytecode.\nUntil now, it was only...","url":"/blog/2023/02/01/solidity-0.8.18-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2022 is Live!","date":"2022-12-07","author":"Franziska Heintel","category":"Announcements"},"content":"\nIt’s that time of the year. Drumroll, please! 🥁🥁🥁\nWe are launching the Solidity Developer Survey 2022!\n\nBefore we wrap up 2022 for good, we want to reach out to collect your feedback and insights so we can improve on it!\n\n📝 TAKE THE SURVEY! 📝\n\nYou can find the previous results of the Solidity Developer Survey 2021 here. In 2021, 435 developers from 73 different countries participated with 80% of respondents using Solidity daily or weekly.\n\nAbout the Survey 🪄\n\nLike in previous years, this...","url":"/blog/2022/12/07/solidity-developer-survey-2022-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Core Team Updates","date":"2022-12-05","author":"Solidity Team","category":"Announcements"},"content":"\nMore than two years have passed since we introduced Solidity core team members on the blog and we realized it is high time for some updates: Meet new team members, find out who moved on to other adventures and learn about recent changes in the team structure!\n\nBefore we dive in, a reminder that the Solidity programming language and compiler are open-source community projects. This post dives into the core team that leads the development. Nevertheless, we cannot stress enough how...","url":"/blog/2022/12/05/solidity-core-team-updates"},{"frontmatter":{"layout":"post","published":true,"title":"Storage Write Removal Bug On Conditional Early Termination","date":"2022-09-08","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn September 5, 2022, a bug in Solidity's Yul optimizer was found by differential fuzzing.\n\nThe bug was introduced in version 0.8.13 and Solidity version 0.8.17, released on September 08, 2022, provides a fix. The bug is significantly easier to trigger with optimized via-IR code generation, but can theoretically also occur in optimized legacy code generation.\n\nWe assigned the bug a severity of \"medium/high\".\n\nWho Should Be Concerned\n\nIf you're using optimized legacy code generation, you only need to be concerned, if you use...","url":"/blog/2022/09/08/storage-write-removal-before-conditional-termination"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.17 Release Announcement","date":"2022-09-08","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.17\nfixes an important bug, makes overflow checks on multiplication more efficient and adds an LSP feature to\nalways analyze all files in a project.\n\nImportant Bugs\n\nStorage Write Removal Bug On Conditional Early Termination\n\nThe bug may result in storage writes being incorrectly considered redundant and removed by the optimizer.\nThe problem manifests in presence of assembly functions that may conditionally terminate the external\nEVM call using the return() or stop() opcode.\n\nSee the security alert post on Storage Write Removal Bug On Conditional Early Termination\nfor...","url":"/blog/2022/09/08/solidity-0.8.17-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.16 Release Announcement","date":"2022-08-08","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.16\nfixes an important bug.\n\nThe bug may result in small parts of dynamic tuple components being inadvertently zeroed during\nABI re-encoding when the last component is a statically-sized uint or bytes32 calldata array.\nSee Head Overflow Bug in Calldata Tuple ABI-Reencoding\nfor more information.\n\nApart from that, there are several minor bug fixes and improvements like more gas-efficient overflow checks\nfor addition and subtraction.\n\nFull Changelog\n\nImportant Bugfixes:\n\nCode Generation: Fix data corruption that affected ABI-encoding of calldata values represented by tuples: structs at any nesting level; argument...","url":"/blog/2022/08/08/solidity-0.8.16-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Head Overflow Bug in Calldata Tuple ABI-Reencoding","date":"2022-08-08","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn July 5, 2022, Chance Hudson (@vimwitch) from the Ethereum Foundation discovered a bug in the Solidity code generator.\n\nThe earliest affected version of the compiler is 0.5.8, which introduced ABI-reencoding of calldata arrays and structs.\nSolidity version 0.8.16, released on August 08, 2022, provides a fix.\n\nWe assigned the bug a severity of \"medium\".\n\nWhich Contracts are Affected?\n\nThe effects of the bug manifest when a contract performs ABI-encoding of a tuple that meets all of the following conditions:\n\nThe last component of the tuple...","url":"/blog/2022/08/08/calldata-tuple-reencoding-head-overflow-bug"}],"page":1,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/10.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/10.json deleted file mode 100644 index d703135d..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/10.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.0 Release Announcement","date":"2019-12-17","author":"Solidity Team","category":"Releases"},"content":"\nThis is a major breaking release of the Solidity compiler and language. Changes include explicit virtual and override keywords in inheritance, support for try/catch, splitting the fallback function into a receive Ether function and an actual fallback function and limitations on how the length of an array can be changed, among others. For a detailed explanation, please see the documentation or refer to the list below that shows every single change.\n\nFrom this release on, ABIEncoderV2 is not considered experimental any...","url":"/blog/2019/12/17/solidity-0.6.0-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.15 Release Announcement","date":"2019-12-17","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug that was introduced in 0.5.14 (the previous release). You are only affected if you manually enabled the Yul optimizer (not the regular optimizer) and either used Yul stand-alone or via ABIEncoderV2. For more details, please see buglist.json.\n\nBugfixes:\n\nYul Optimizer: Fix incorrect redundant load optimization crossing user-defined functions that contain for-loops with memory / storage writes.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2019/12/17/solidity-0.5.15-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.14 Release Announcement","date":"2019-12-09","author":"Solidity Team","category":"Releases"},"content":"\nSolidity 0.5.14 sets the default EVM version to \"Istanbul\" and is targeted as the last release in the 0.5.x series.\n\nThe SMT checker supports constructors now and it is possible to directly translate EVM-flavoured Yul to Ewasm from the commandline interface.\n\nLanguage Features:\n\nAllow to obtain the selector of public or external library functions via a member .selector.\nParser: Allow splitting string and hexadecimal string literals into multiple parts.\nInline Assembly: Support constants that reference other constants.\n\nCompiler Features:\n\nCommandline Interface: Allow translation from yul / strict...","url":"/blog/2019/12/09/solidity-0.5.14-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.13 Release Announcement","date":"2019-11-14","author":"Solidity Team","category":"Releases"},"content":"\nSolidity 0.5.13 provides Istanbul-EVM compatibility (default is still set to Petersburg), is the first version to generate Ethereum-Webassembly (EWasm) binary output (not fully working yet, though), improves the developer experience by listing potential overloads when resolution fails and can output the layout of the storage variables of a contract. As with all other releases, the coverage of the SMT checker is further improved.\n\nLanguage Features:\n\nAllow to obtain the address of a linked library with address(LibraryName).\n\nCompiler Features:\n\nCode Generator: Use SELFBALANCE opcode for...","url":"/blog/2019/11/14/solidity-0.5.13-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.12 Release Announcement","date":"2019-10-01","author":"Solidity Team","category":"Releases"},"content":"\nThis is a small bugfix release that also includes loop support for the SMT solver and some improvements to the Yul optimizer. The reason for the smaller feature set is that we are mainly working on the upcoming 0.6.0 release.\n\nLanguage Features:\n\nType Checker: Allow assignment to external function arguments except for reference types.\n\nCompiler Features:\n\nABI Output: Change sorting order of functions from selector to kind, name.\nOptimizer: Add rule that replaces the BYTE opcode by 0 if the first argument is larger than...","url":"/blog/2019/10/01/solidity-0.5.12-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.11 Release Announcement","date":"2019-08-12","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug related to calldata structs in ABIEncoderV2 and calldata decoding in V1. Several internal bugs of the SMT checker are fixed.\nFurthermore, internal types are added to the ABI output which allows you to see which struct type is behind an ABI tuple. Finally, Yul and web assembly support are progressing.\n\nWe also improved our testing framework which now allows for semantics tests to run in 4 seconds instead of 1 minute.\n\nLanguage Features:\n\nInline Assembly: Support direct constants of...","url":"/blog/2019/08/12/solidity-0.5.11-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Storage Array Bugs","date":"2019-06-25","author":"Solidity and Security Team","category":"Security Alerts"},"content":"\nThis post was originally published on the Ethereum blog.\n\nThis blog post is about two bugs connected to storage arrays which are otherwise unrelated. Both have been present in the compiler for a long time and have only been discovered now even though a contract containing them should very likely show malfunctions in tests.\n\nDaenam Kim with help from Nguyen Pham, both from Curvegrid discovered an issue where invalid data is stored in connection with arrays of signed integers.\n\nThis bug has been...","url":"/blog/2019/06/25/solidity-storage-array-bugs"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.10 Release Announcement","date":"2019-06-25","author":"Solidity Team","category":"Releases"},"content":"\nApart from further invisible work on the Yul optimizer, the Solidity to Yul code generation, the eWasm backend and the SMT checker, this release contains two important bug fixes related to storage arrays.\n\nFor details see our earlier blog post.\n\nIt also contains an experimental mode that allows recovery from parser error (implemented by @rocky, funded by ConsenSys) in the hope that this might be useful for IDE developers.\n\nImportant Bugfixes:\n\nABIEncoderV2: Fix incorrect abi encoding of storage array of data type that occupy...","url":"/blog/2019/06/25/solidity-0.5.10-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.9 Release Announcement","date":"2019-05-28","author":"Solidity Team","category":"Releases"},"content":"\nAs in previous releases, we spent most of the time making Solidity future-proof by further working on the Yul optimizer, the Solidity to Yul (and eWasm) translator and the SMT Checker.\n\nCode generated from Solidity now always includes the version number in the CBOR metadata so that it becomes possible to quickly assess whether a contract might be affected by a compiler bug or not.\n\nLanguage Features:\n\nInline Assembly: Revert change introduced in 0.5.7: The callvalue() instruction does not require payable anymore.\nStatic Analyzer:...","url":"/blog/2019/05/28/solidity-0.5.9-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.8 Release Announcement","date":"2019-04-30","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes important but very unlikely bugs and further completes ABIEncoderV2, SMTChecker and Yul and improves the optimizer.\n\nNotably, if ABIEncoderV2 is activated, the ABI decoder will now revert on input with dirty higher order bits instead of ignoring those bits.\n\nImportant Bugfixes:\n\nCode Generator: Fix initialization routine of uninitialized internal function pointers in constructor context.\nType System: Use correct type name for contracts in event parameters when used in libraries. This affected code generation.\nYul Optimizer: Fix SSA transform for multi-assignments.\n\nLanguage Features:\n\nABIEncoderV2: Implement...","url":"/blog/2019/04/30/solidity-0.5.8-release-announcement"}],"page":10,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/11.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/11.json deleted file mode 100644 index 98a16c1d..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/11.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.26 Release Announcement","date":"2019-04-29","author":"Solidity Team","category":"Releases"},"content":"\nThis is a bugfix release for the 0.4.x series that contains backported fixes for important bugs that affected code generation. It also contains a fix that makes the emscripten target compatible with newer browser versions.\n\nImportant Bugfixes:\n\nCode Generator: Fix initialization routine of uninitialized internal function pointers in constructor context.\nType System: Use correct type name for contracts in event parameters when used in libraries. This affected code generation.\n\nBugfixes:\n\nABIEncoderV2: Refuse to generate code that is known to be potentially buggy.\nGeneral: Split rule list...","url":"/blog/2019/04/29/solidity-0.4.26-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Optimizer and ABIEncoderV2 Bugs","date":"2019-03-26","author":"Solidity and Security Team","category":"Security Alerts"},"content":"\nThis post was originally published on the Ethereum blog.\n\nThrough the Ethereum bug bounty program, we received a report about a flaw within the new experimental ABI encoder (referred to as ABIEncoderV2). Upon investigation, it was found that the component suffers from a few different variations of the same type. The first part of this announcement explains this bug in detail. The new ABI encoder is still marked as experimental, but we nevertheless think that this deserves a prominent announcement since...","url":"/blog/2019/03/26/solidity-optimizer-and-abiencoderv2-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.7 Release Announcement","date":"2019-03-26","author":"Solidity Team","category":"Releases"},"content":"\nThis release mainly fixes bugs in the optimizer and in the experimental ABI encoder. For details about the bug, please see the official announcement.\n\nFurthermore, this release also allows you to use Yul as a language option (instead of \"Solidity\") in the standard-json-interface.\n\nImportant Bugfixes:\n\nABIEncoderV2: Fix bugs related to loading short value types from storage when encoding an array or struct from storage.\nABIEncoderV2: Fix buffer overflow problem when encoding packed array from storage.\nOptimizer: Fix wrong ordering of arguments in byte optimization rule...","url":"/blog/2019/03/26/solidity-0.5.7-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.6 Release Announcement","date":"2019-03-13","author":"Solidity Team","category":"Releases"},"content":"\nThis release mainly fixes an optimizer bug related to multiple shift opcodes that was introduced in the previous release. It is unlikely that any existing contracts are affected, but you should still not use Solidity 0.5.5.\n\nApart from that, the support for calldata structs and arrays by ABIEncoderV2 is almost finished now, we added some more optimizer rules and added enums and one-dimensional arrays to the SMT checker.\n\nImportant Bugfixes:\n\nYul Optimizer: Fix visitation order bug for the structural simplifier.\nOptimizer: Fix overflow in...","url":"/blog/2019/03/13/solidity-0.5.6-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.5 Release Announcement","date":"2019-03-05","author":"Solidity Team","category":"Releases"},"content":"\nThis release focuses on the stabilization of the ABIEncoderV2 and the optimizer. We also prepared for the Petersburg release which is the default EVM now and improved the SMT checker, such that it now reports less false positives when using SafeMath.\nYou can now activate the experimental Yul optimizer using settings: {optimizer: {enabled: true, details: {yul: true}}} or in the commandline via solc optimize-yul.\n\nLanguage Features:\n\nAdd support for getters of mappings with string or bytes key types.\nMeta programming: Provide access to the...","url":"/blog/2019/03/05/solidity-0.5.5-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.4 Release Announcement","date":"2019-02-12","author":"Solidity Team","category":"Releases"},"content":"\nThis release adds support for calldata structs and packed encoding with ABIEncoderV2. We also introduced some changes to the C API and added support for continuous fuzzing via Google oss-fuzz. In addition to that, we added a new commandline option for improved (colorized) diagnostics formatting.\n\nLanguage Features:\n\nAllow calldata structs without dynamically encoded members with ABIEncoderV2.\n\nCompiler Features:\n\nABIEncoderV2: Implement packed encoding.\nC API (libsolc / raw soljson.js): Introduce solidity_free method which releases all internal buffers to save memory.\nCommandline Interface: Adds new option new-reporter for...","url":"/blog/2019/02/12/solidity-0.5.4-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.3 Release Announcement","date":"2019-01-22","author":"Solidity Team","category":"Releases"},"content":"\nThis release adds support for accessing the code of a contract type, which will hopefully make the new CREATE2 opcode easier to use. We also added some static analysis features to the compiler, but most changes were done \"under the hood\" to pave the way for using the new Yul-based optimizer with ABIEncoderV2.\n\nLanguage Features:\n\nProvide access to creation and runtime code of contracts via type(C).creationCode / type(C).runtimeCode.\n\nCompiler Features:\n\nControl Flow Graph: Warn about unreachable code.\nSMTChecker: Support basic typecasts without truncation.\nSMTChecker: Support external...","url":"/blog/2019/01/22/solidity-0.5.3-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.2 Release Announcement","date":"2018-12-19","author":"Solidity Team","category":"Releases"},"content":"\nThis release of the Solidity compiler includes several performance optimizations. These include faster compilation time but also cheaper contracts in some situations. This version also checks for all instances of uninitialized storage references, has some improved error messages and other checks.\n\nYou can now create complete contracts in Yul through the support of the Yul object format and the special functions datasize, dataoffset and datacopy.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of...","url":"/blog/2018/12/19/solidity-0.5.2-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.1 Release Announcement","date":"2018-12-03","author":"Solidity Team","category":"Releases"},"content":"\nThis release improves the usability of interfaces, fixes some bugs, extends the SMT checker and provides an early preview of the Yul optimizer.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2018/12/03/solidity-0.5.1-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.0 Release Announcement","date":"2018-11-13","author":"Solidity Team","category":"Releases"},"content":"\nThis is a major breaking release of the Solidity language and compiler that includes many new safety features. In general, programmers have to be more explicit, some weird edge-cases are removed from the language and the low-level compiler interface is much simpler.\n\nThis release was long overdue and as a result has amassed an incredibly long list of changes. Please refer to the \"Solidity v0.5.0 Breaking Changes” section in the documentation about a good description of what has changed and how...","url":"/blog/2018/11/13/solidity-0.5.0-release-announcement"}],"page":11,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/12.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/12.json deleted file mode 100644 index 92ba2484..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/12.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity Bugfix Release","date":"2018-09-13","author":"Solidity Team","category":"Security Alerts"},"content":"\nThis post was originally published on the Ethereum blog.\n\nThe latest version 0.4.25 release of Solidity fixes\ntwo important bugs.\nAnother important bug has already been fixed in version 0.4.22 but it was only discovered recently that the bug existed.\n\nNote that the Ethereum Foundation runs a bounty program for the code generator part of Solidity.\n\nCleanup of Exponent in Exponentiation\n\nLikelihood of occurrence: very low\nExploitability: high\nDiscoverability by tests: low\nFixed in version: 0.4.25\n\nSummary: Using short types in the exponent of an exponentiation operation can lead to...","url":"/blog/2018/09/13/solidity-bugfix-release"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.25 Release Announcement","date":"2018-09-13","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixed a cleanup error concerning the exponentiation operator. It is a bugfix-only release\nand does not contain any features. A more detailed description of the bugs fixed can be found\non the ethereum blog.\n\nNote that nightly builds of Solidity currently contain changes unrelated to this bugfix release.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2018/09/13/solidity-0.4.25-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.24 Release Announcement","date":"2018-05-16","author":"Solidity Team","category":"Releases"},"content":"\nAll remaining breaking changes planned for version 0.5.0 that can be implemented in a backwards-compatible way made it into this release. Solidity can now detect uninitialized storage pointers using control-flow analysis. It is again possible to assign multiple return values from a function to newly declared variables and the SMT checker is able to work with simple storage variables.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2018/05/16/solidity-0.4.24-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.23 Release Announcement","date":"2018-04-19","author":"Solidity Team","category":"Releases"},"content":"\nBugfix release: In the previous release, it was possible to define two constructors (one using the new constructor-keyword syntax, another one with the old syntax) for a contract, but only one of them got used in the end. We also included other bugfixes.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2018/04/19/solidity-0.4.23-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.22 Release Announcement","date":"2018-04-17","author":"Solidity Team","category":"Releases"},"content":"\nThis release features several major and long-awaited changes:\n\nIt is now possible to access dynamic data (arrays, strings, etc) returned by function calls.\nYou can specify error reason strings for revert and require (support by tooling is still pending).\nWe added the global functions abi.encode(), abi.encodePacked(), abi.encodeWithSelector() and abi.encodeWithSignature() which expose the ABI encoding functions and each return a bytes value.\nConstructors should now be defined using constructor(uint arg1, uint arg2) { ... } to make them stand out and avoid bugs when contracts...","url":"/blog/2018/04/17/solidity-0.4.22-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.21 Release Announcement","date":"2018-03-08","author":"Solidity Team","category":"Releases"},"content":"\nWe again introduced several changes that are scheduled for version 0.5.0 and can be activated using pragma experimental \"v0.5.0\";. In this release, this pragma does not generate a warning anymore, so you can (and should) use it in production code.\n\nIn addition to that, you can now specify which EVM version the contract should be compiled for. Valid values are \"homestead\", \"tangerineWhistle\", \"spuriousDragon\", \"byzantium\" (the default) and \"constantinople\". Depending on this setting, different opcodes will be used in some cases. The...","url":"/blog/2018/03/08/solidity-0.4.21-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.20 Release Announcement","date":"2018-02-14","author":"Solidity Team","category":"Releases"},"content":"\nThis release includes some usability and security improvements and a further evolution of the SMT component. The var keyword has been deprecated for security reasons.\n\nSignificant steps were made in writing optimisation stages for the intermediate language, which will be used by the new ABI encoder to produce highly optimised output. The main goal is to have a resulting bytecode size similar to the old ABI encoder, while having more runtime checks for a stricter decoding process. This is not yet...","url":"/blog/2018/02/14/solidity-0.4.20-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.19 Release Announcement","date":"2017-11-30","author":"Solidity Team","category":"Releases"},"content":"\nIn the last weeks, we have mainly been working on big internal changes. One of them is the new ABI decoder, which is still in experimental mode, but will hopefully be production-usable soon. External contributions like allowing constant variables for array lengths and improved error messages should make your life as a programmer easier. Finally, the standard-json-io-system now allows to select certain artifacts from a contract which should speed up your code-compile-test-cycle even more!\n\nFeatures:\n\nCode Generator: New ABI decoder which supports...","url":"/blog/2017/11/30/solidity-0.4.19-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.18 Release Announcement","date":"2017-10-18","author":"Solidity Team","category":"Releases"},"content":"\nThis release adds further backwards-incompatible security measures enabled via pragma experimental \"v0.5.0\"; and contains another important feature: You can now select to compile only certain contracts using the outputSelection field of the standard-json-io compiler interface, which should speed up tools like truffle tremendously.\n\nThere are also two important bug fixes: One was an oversight in the way bytes variables are allocated in memory and can reduce the memory requirements 32-fold. The second is a security fix: In extremely specific circumstances, it...","url":"/blog/2017/10/18/solidity-0.4.18-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.17 Release Announcement","date":"2017-09-21","author":"Solidity Team","category":"Releases"},"content":"\nAs we are getting closer to the next breaking release, we want to give everyone a heads up by introducing pragma experimental \"v0.5.0\" which already enables some of the new safety features of the 0.5.0 release.\n\nFurthermore, this release finally checks the modifiers view (used to be named constant) and pure on functions. As a rule of thumb, use view if your function does not modify storage and pure if it does not even read any state information - but the...","url":"/blog/2017/09/21/solidity-0.4.17-release-announcement"}],"page":12,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/13.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/13.json deleted file mode 100644 index 7a4f2c28..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/13.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.16 Release Announcement","date":"2017-08-24","author":"Solidity Team","category":"Releases"},"content":"\nThis release introduces several new features, some of which have to be\nexplicitly activated using pragma experimental ;.\n\nWe split the constant keyword for functions into pure (neither reads from nor writes to the state)\nand view (does not modify the state). They are not enforced yet, but will most likely make use\nof the the new STATIC_CALL feature after Metropolis.\n\nFurthermore, the ABI encoder was re-implemented in a much cleaner way using our new intermediate language. It can encode arbitrarily nested arrays and will...","url":"/blog/2017/08/24/solidity-0.4.16-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.15 Release Announcement","date":"2017-08-08","author":"Solidity Team","category":"Releases"},"content":"\nThis is mainly a bugfix release that corrects a problem with the return value of the low-level delegatecall function and removes some invalid warning messages.\n\nFeatures:\n\nType Checker: Show unimplemented function if trying to instantiate an abstract class.\n\nBugfixes:\n\nCode Generator: .delegatecall() should always return execution outcome.\nCode Generator: Provide \"new account gas\" for low-level callcode and delegatecall.\nType Checker: Constructors must be implemented if declared.\nType Checker: Disallow the .gas() modifier on ecrecover, sha256 and ripemd160.\nType Checker: Do not mark overloaded functions as shadowing other functions.\nType...","url":"/blog/2017/08/08/solidity-0.4.15-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.14 Release Announcement","date":"2017-07-31","author":"Solidity Team","category":"Releases"},"content":"\nThis release contains several new features and bugfixes and also an important security fix: The ecrecover function can be forced to return invalid data, which can be used to bypass authentication in very special circumstances.\n\nFeatures:\n\nC API (jsonCompiler): Export the license method.\nCode Generator: Optimise the fallback function, by removing a useless jump.\nInline Assembly: Show useful error message if trying to access calldata variables.\nInline Assembly: Support variable declaration without initial value (defaults to 0).\nMetadata: Only include files which were used to compile...","url":"/blog/2017/07/31/solidity-0.4.14-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.13 Release Announcement","date":"2017-07-06","author":"Solidity Team","category":"Releases"},"content":"\nThis is a small bugfix release that fixes several trivial but very annoying bugs that were introduced with 0.4.12. We also deprecate some old features in preparation of the breaking release 0.5.0.\n\nFeatures:\n\nSyntax Checker: Deprecated throw in favour of require(), assert() and revert().\nType Checker: Warn if a local storage reference variable does not explicitly use the keyword storage.\n\nBugfixes:\n\nCode Generator: Correctly unregister modifier variables.\nCompiler Interface: Only output AST if analysis was successful.\nError Output: Do not omit the error type.\n\nA big thank you...","url":"/blog/2017/07/06/solidity-0.4.13-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.12 Release Announcement","date":"2017-07-03","author":"Solidity Team","category":"Releases"},"content":"\nThis release introduces the AST export, solidifies inline assembly, introduces some more warnings and fixes several bugs.\n\nManual jumps in assembly are deprecated in favour of the structured constructs switch, for and function calls also to provide better portability in the future.\n\nFeatures:\n\nAssembly: Add CREATE2 (EIP86), STATICCALL (EIP214), RETURNDATASIZE and RETURNDATACOPY (EIP211) instructions.\nAssembly: Display auxiliary data in the assembly output.\nAssembly: Renamed SHA3 to KECCAK256.\nAST: export all attributes to JSON format.\nC API (jsonCompiler): Use the Standard JSON I/O internally.\nCode Generator: Added the Whiskers...","url":"/blog/2017/07/03/solidity-0.4.12-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Optimizer Bug","date":"2017-05-03","author":"Martin Swende","category":"Security Alerts"},"content":"\nThis post was originally published on the Ethereum blog.\n\nA bug in the Solidity optimizer was reported through the Ethereum Foundation Bounty program, by Christoph Jentzsch. This bug is patched as of 2017-05-03, with the release of Solidity 0.4.11.\n\nBackground\n\nThe bug in question concerned how the optimizer optimizes on constants in the byte code. By \"byte code constants\", we mean anything which is PUSHed on the stack (not to be confused with Solidity constants). For example, if the value 0xfffffffffffffffffffffffffffffffffffffffffffffffe is PUSHed,...","url":"/blog/2017/05/03/solidity-optimizer-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.11 Release Announcement","date":"2017-05-03","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug in the optimizer (more about this on the blog), introduces the standard JSON interface, adds interface contracts and implements some additional safety checks.\n\nThe standard JSON interface provides a unified way to invoke the Solidity compiler in order to ease cross-platform adoption and compilation verification.\n\nFeatures:\n\nImplement the Standard JSON Input / Output API\nSupport interface contracts.\nC API (jsonCompiler): Add the compileStandard() method to process a Standard JSON I/O.\nCommandline interface: Add the standard-json parameter to process a Standard JSON...","url":"/blog/2017/05/03/solidity-0.4.11-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.10 Release Announcement","date":"2017-03-15","author":"Solidity Team","category":"Releases"},"content":"\nThis release is focused on stability and also introduces some new smart contract safety features: require, assert and transfer. Note that the new revert function will only be gas-efficient starting from homestead.\n\nFeatures:\n\nAdd assert(condition), which throws if condition is false (meant for internal errors).\nAdd require(condition), which throws if condition is false (meant for invalid input).\nCommandline interface: Do not overwrite files unless forced.\nIntroduce .transfer(value) for sending Ether.\nCode generator: Support revert() to abort with rolling back, but not consuming all gas.\nInline assembly: Support...","url":"/blog/2017/03/15/solidity-0.4.10-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.9 Release Announcement","date":"2017-01-31","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes quite some bugs and also adds several new features.\n\nThings to look out for:\n\nTo disambiguate contracts and libraries of the same name in different files, everything is now prefixed by \"filename:\". This applies to the compiler output, the linker input and other things.\nInternal exceptions are now thrown by using an invalid opcode (0xfe), manual exceptions still use an invalid jump.\n\nFeatures:\n\nCompiler interface: Contracts and libraries can be referenced with a file: prefix to make them unique.\nCompiler interface: Report source...","url":"/blog/2017/01/31/solidity-0.4.9-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.8 Release Announcement","date":"2017-01-13","author":"Solidity Team","category":"Releases"},"content":"\nFeatures:\n\nOptimiser: Performance improvements.\nOutput: Print assembly in new standardized Solidity assembly format.\n\nBugfixes:\n\nRemappings: Prefer longer context over longer prefix.\nType checker, code generator: enable access to events of base contracts' names.\nImports: import \".dir/a\" is not a relative path. Relative paths begin with directory . or ...\nType checker: disallow inheritances of different kinds (e.g. a function and a modifier) of members of the same name\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2017/01/13/solidity-0.4.8-release-announcement"}],"page":13,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/14.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/14.json deleted file mode 100644 index 30e393f1..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/14.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.7 Release Announcement","date":"2016-12-15","author":"Solidity Team","category":"Releases"},"content":"\nFeatures:\n\nBitshift operators.\nType checker: Warn when msg.value is used in non-payable function.\nCode generator: Inject the Swarm hash of a metadata file into the bytecode.\nCode generator: Replace expensive memcpy precompile by simple assembly loop.\nOptimizer: Some dead code elimination.\n\nBugfixes:\n\nCode generator: throw if calling the identity precompile failed during memory (array) copying.\nType checker: string literals that are not valid UTF-8 cannot be converted to string type\nCode generator: any non-zero value given as a boolean argument is now converted into 1.\nAST Json Converter: replace VariableDefinitionStatement...","url":"/blog/2016/12/15/solidity-0.4.7-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.6 Release Announcement","date":"2016-11-22","author":"Solidity Team","category":"Releases"},"content":"\nBugfixes:\n\nOptimizer: Knowledge about state was not correctly cleared for JUMPDESTs\n\nSwarm hash of js compiler: bzzr:/b873fa122233c91b1531527c390f6ca49df4d2a2c5f75706f4b612a0c813cb6a\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2016/11/22/solidity-0.4.6-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.5 Release Announcement","date":"2016-11-21","author":"Solidity Team","category":"Releases"},"content":"\nThis Solidity release adds function types. Use-cases include supplying callbacks for asynchronous or off-chain operations or generic library features (for example map-reduce-style programming). This release also improves the safety of enums and sending Ether to a contract constructor.\n\nFeatures:\n\nFunction types\nDo-while loops: support for a do while (); control structure\nInline assembly: support invalidJumpLabel as a jump label.\nType checker: now more eagerly searches for a common type of an inline array with mixed types\nCode generator: generates a runtime error when an out-of-range...","url":"/blog/2016/11/21/solidity-0.4.5-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Analysis of Storage Corruption Bug","date":"2016-11-09","author":"Christian Reitwiessner","category":"Security Alerts"},"content":"\nThis post was originally published on the Ethereum blog.\n\nThis blog post provides an update on our findings following the discovery of the storage corruption bug last week.\nIn summary, the bug was much less severe than we initially thought. The small number of affected contracts we found is either only exploitable by the owner, or the exploit can only cause a disruption in the user interface and not in the actual contract logic. All exploitable contracts/dapps we reviewed can be fixed...","url":"/blog/2016/11/09/analysis-storage-corruption-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.4 Release Announcement","date":"2016-11-01","author":"Solidity Team","category":"Releases"},"content":"\nThis is a bugfix release that fixes a storage corruption that appears when multiple variables are stored in the same slot (details).\n\nBugfixes:\n\nType checker: forbid signed exponential that led to an incorrect use of EXP opcode.\nCode generator: properly clean higher order bytes before storing in storage.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2016/11/01/solidity-0.4.4-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Security Alert: Variables can be overwritten in storage","date":"2016-11-01","author":"Christian Reitwiessner","category":"Security Alerts"},"content":"\nThis post was originally published on the Ethereum blog.\n\nSummary: In some situations, variables can overwrite other variables in storage.\n\n*Affected Solidity compiler versions: *0.1.6 to 0.4.3 (including 0.4.4 pre-release versions)\n\nDetailed description:\n\nStorage variables that are smaller than 256 bits are packed together into the same 256 bit slot if they can fit. If a value larger than what is allowed by the type is assigned to the first variable, that value will overwrite the second variable.\n\nThis means if an attacker can cause...","url":"/blog/2016/11/01/security-alert-solidity-variables-can-overwritten-storage"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.3 Release Announcement","date":"2016-10-25","author":"Solidity Team","category":"Releases"},"content":"\nThis is a real bugfix release as you can see from the changelog below. The most important fix concerns the optimizer which generated invalid code connected to the SHA3 opcode in certain situations.\n\nFeatures:\n\nInline assembly: support both suicide and selfdestruct opcodes\n (note: suicide is deprecated).\nInline assembly: issue warning if stack is not balanced after block.\nInclude keccak256() as an alias to sha3().\nSupport shifting constant numbers.\n\nBugfixes:\n\nCommandline interface: Disallow unknown options in solc.\nName resolver: Allow inheritance of enum definitions.\nType checker: Proper type checking...","url":"/blog/2016/10/25/solidity-0.4.3-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.2 Release Announcement","date":"2016-09-17","author":"Solidity Team","category":"Releases"},"content":"\nBugfixes:\n\nCode Generator: Fix library functions being called from payable functions.\nType Checker: Fixed a crash about invalid array types.\nCode Generator: Fixed a call gas bug that became visible after\n version 0.4.0 for calls where the output is larger than the input.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2016/09/17/solidity-0.4.2-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.1 Release Announcement","date":"2016-09-09","author":"Solidity Team","category":"Releases"},"content":"\nThis is a bugfix release that fixes an error when compiling libraries with the latest version 0.4.0.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2016/09/09/solidity-0.4.1-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.4.0 Release Announcement","date":"2016-09-08","author":"Solidity Team","category":"Releases"},"content":"\nNote: Version 0.4.0 is unable to compile libraries. Please upgrade to 0.4.1.\n\nThis release deliberately breaks backwards compatibility mostly to enforce some safety features. The most important change is that you have to explicitly specify if functions can receive ether via the payable modifier. Furthermore, more situations cause exceptions to be thrown.\n\nMinimal changes to be made for upgrade:\n\nAdd payable to all functions that want to receive Ether (including the constructor and the fallback function).\nChange ` to ;` in modifiers.\nAdd version pragma...","url":"/blog/2016/09/08/solidity-0.4.0-release-announcement"}],"page":14,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/15.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/15.json deleted file mode 100644 index b0841bcb..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/15.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Dev Update: Formal Methods","date":"2016-09-01","author":"Christian Reitwiessner","category":"Announcements"},"content":"\nThis post was originally published on the Ethereum blog.\n\nToday, I am delighted to announce that Yoichi Hirai (@pirapira on github) is joining the Ethereum project as a formal verification engineer. He holds a PhD from the University of Tokyo on the topic of formalizing communicating parallel processes and created formal verification tools for Ethereum in his spare time.\n\nIn his own words:\nI’m joining Ethereum as a formal verification engineer. My reasoning: formal verification makes sense as a profession only in a...","url":"/blog/2016/09/01/formal-methods-roadmap"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.6 Release Announcement","date":"2016-08-10","author":"Solidity Team","category":"Releases"},"content":"\nThis is the first release from the new \"solidity-standalone\" repository. It does not have dependencies to cpp-ethereum anymore and can be built just from the solidity github repository.\n\nNote that the optimizer was disabled in some situations which could lead to larger (but correcter) code.\n\nFeatures:\n\nFormal verification: Take external effects on a contract into account.\nType Checker: Warning about unused return value of low-level calls and send.\nOutput: Source location and node id as part of AST output\nOutput: Source location mappings for bytecode\nOutput: Formal...","url":"/blog/2016/08/10/solidity-0.3.6-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.5 Release Announcement","date":"2016-06-10","author":"Solidity Team","category":"Releases"},"content":"\nFeatures:\n\nContext-dependent path remappings (different modules can use the same library in different versions)\n\nBugfixes:\n\nType Checking: Dynamic return types were removed when fetching data from external calls, now they are replaced by an \"unusable\" type.\nType Checking: Overrides by constructors were considered making a function non-abstract.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2016/06/10/solidity-0.3.5-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Smart Contract Security","date":"2016-06-10","author":"Christian Reitwiessner","category":"Security Alerts"},"content":"\nThis post was originally published on the Ethereum blog.\n\nSolidity was started in October 2014 when neither the Ethereum network nor the virtual machine had any real-world testing, the gas costs at that time were even drastically different from what they are now. Furthermore, some of the early design decisions were taken over from Serpent. During the last couple of months, examples and patterns that were initially considered best-practice were exposed to reality and some of them actually turned out to...","url":"/blog/2016/06/10/smart-contract-security"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.4 Release Announcement","date":"2016-05-31","author":"Solidity Team","category":"Releases"},"content":"\nThis release contains no changes outside of the documentation.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2016/05/31/solidity-0.3.4-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.3 Release Announcement","date":"2016-05-27","author":"Solidity Team","category":"Releases"},"content":"\nThis release mainly makes libraries more flexible in that it allows internal functions to be called.\n\nFeatures\n\nAllow internal library functions to be called (by \"inlining\")\nFractional/rational constants (only usable with fixed point types, which are still in progress)\nInline assembly has access to internal functions (as jump labels)\nRunning solc without arguments on a terminal will print help.\n\nFixes\n\nCode Generation: Remove some non-determinism in code generation.\nCode Generation: Corrected usage of not / bnot / iszero in inline assembly\nCode Generation: Correctly clean bytesNN types before comparison\n\nA...","url":"/blog/2016/05/27/solidity-0.3.3-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.2 Release Announcement","date":"2016-04-18","author":"Solidity Team","category":"Releases"},"content":"\nThis is mainly a bugfix release. Under the hood, we are in the process of separating the Solidity source code from the rest of the cpp-ethereum source code so that it can soon be built (and released) in isolation.\n\nFixes:\n\nCode generation: Dynamic arrays of structs were not deleted correctly.\nCode generation: Static arrays in constructor parameter list were not decoded correctly.\nParser: Inline assembly parser: byte opcode was unusable\nError reporting: tokens for variably-sized types were not converted to string properly\n\nA big thank you...","url":"/blog/2016/04/18/solidity-0.3.2-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.1 Release Announcement","date":"2016-03-31","author":"Solidity Team","category":"Releases"},"content":"\nThis release mainly introduces inline assembly (documentation). Inline assembly provides a way to write low-level but still well readable code. Together with the coming features of inline library functions and templates, it allows to move much of the development that had to be done in the compiler itself into libraries written in Solidity. In the future, it will be possible to introduce new versatile types that still look like builtins.\n\nFeatures:\n\ninline assembly\n\nFixes:\n\nCode generation: array access with narrow types did not clean...","url":"/blog/2016/03/31/solidity-0.3.1-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.3.0 Release Announcement","date":"2016-03-11","author":"Solidity Team","category":"Releases"},"content":"\nThis version is synchronized to the Homestead changes on the main Ethereum network and introduces various breaking changes.\n\nBREAKING CHANGES:\n\nYou should not rely on division for literals resulting in a (truncated) integer. This is still the case but will change once we implement fixed point types, i.e. in the future 1/2 == 0.5 will be true, currently we have 1/2 == 0. Note that this only applies to literals ((2 + 7) / 2) and not variables (x / 2).\nLibrary calls...","url":"/blog/2016/03/11/solidity-0.3.0-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.2.2 Release Announcement","date":"2016-02-17","author":"Solidity Team","category":"Releases"},"content":"\nFeatures:\n\nIndex access for types bytes1, ..., bytes32 (only read access for now).\n\nBugfixes:\n\nType checker crash for wrong number of base constructor parameters.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2016/02/17/solidity-0.2.2-release-announcement"}],"page":15,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/16.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/16.json deleted file mode 100644 index b1969f19..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/16.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.2.1 Release Announcement","date":"2016-01-30","author":"Solidity Team","category":"Releases"},"content":"\nThis release includes three major features and one very important bugfix in the optimizer.\n\nIn some situations, the optimizer generated incorrect code. Please always test your code before you use it, unfortunately, we can never guarantee 100% correctness.\n\nWe are especially grateful about the many voluntary community contributions this release received.\nTwo fearless individuals dived deep into the solidity code and delivered two major features: Thanks a lot to @VoR0220 for the inline arrays and to @guanqun for the ternary operator!\nFurthermore, @bobsummerwill spent...","url":"/blog/2016/01/30/solidity-0.2.1-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.2.0 Release Announcement","date":"2015-12-01","author":"Solidity Team","category":"Releases"},"content":"\nFeatures:\n\nAllocation of memory arrays using new.\nBinding library functions to types via using x for y\nBreaking Change**: new ContractName.value(10)() has to be written as (new ContractName).value(10)()\nAdded selfdestruct as an alias for suicide.\n\nBugfixes:\n\nConstructor arguments of fixed array type were not read correctly.\nMemory allocation of structs containing arrays or strings.\nData location for explicit memory parameters in libraries was set to storage.\n\nThe two main features of this release is the ability to create memory arrays (of dynamic length) and to\nattach library functions to types....","url":"/blog/2015/12/01/solidity-0.2.0-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.7 Release Announcement","date":"2015-11-17","author":"Solidity Team","category":"Releases"},"content":"\nFeatures:\n\nImproved error messages for unexpected tokens.\nProof-of-concept transcompilation to why3 for formal verification of contracts.\n\nBugfixes:\n\nWriting to elements of bytes or string overwrite others.\nArrays (also strings) as indexed parameters of events.\n\"Successor block not found\" on Windows.\nUsing string literals in tuples.\nCope with invalid commit hash in version for libraries.\nSome test framework fixes on windows.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2015/11/17/solidity-0.1.7-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.6 Release Announcement","date":"2015-10-16","author":"Solidity Team","category":"Releases"},"content":"\nFeatures:\n\n.push() for dynamic storage arrays.\nTuple expressions ((1,2,3) or return (1,2,3);)\nDeclaration and assignment of multiple variables (var (x,y,) = (1,2,3,4,5); or var (x,y) = f();)\nDestructuring assignment ((x,y,) = (1,2,3))\nHandling of multiple source files in the json compiler.\n\nBugfixes:\n\nInternal error about usage of library function with invalid types.\nCorrectly parse Library.structType a at statement level.\nCorrectly report source locations of parenthesized expressions (as part of \"tuple\" story).\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2015/10/16/solidity-0.1.6-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.5 Release Announcement","date":"2015-10-07","author":"Solidity Team","category":"Releases"},"content":"\nChanges:\n\nBreaking change in storage encoding: Encode short byte arrays and strings together with their length in storage.\nReport warnings.\nAllow storage reference types for public library functions.\nAccess to types declared in other contracts and libraries via ..\nVersion stamp at beginning of runtime bytecode of libraries.\nBugfix: Problem with initialized string state variables and dynamic data in constructor.\nBugfix: Resolve dependencies concerning new automatically.\nBugfix: Allow four indexed arguments for anonymous events.\nBugfix: Detect too large integer constants in functions that accept arbitrary parameters.\n\nA big thank you...","url":"/blog/2015/10/07/solidity-0.1.5-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.4 Release Announcement","date":"2015-09-30","author":"Solidity Team","category":"Releases"},"content":"\nChanges:\n\nBugfix: combined-json output of solc incorrectly returned the runtime binary instead of the binary.\nBugfix: Accessing fixed-size array return values.\nBugfix: Disallow assignment from literal strings to storage pointers.\nRefactoring: Move type checking into its own module.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2015/09/30/solidity-0.1.4-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.3 Release Announcement","date":"2015-09-22","author":"Solidity Team","category":"Releases"},"content":"\nChanges:\n\nthrow statement.\nLibraries that contain functions which are called via CALLCODE.\nLinker stage for compiler to insert other contract's addresses (used for libraries).\nCompiler option to output runtime part of contracts.\nCompile-time out of bounds check for access to fixed-size arrays by integer constants.\nVersion string includes libevmasm/libethereum's version (contains the optimizer).\nBugfix: Accessors for constant public state variables.\nBugfix: Propagate exceptions in clone contracts.\nBugfix: Empty single-line comments are now treated properly.\nBugfix: Properly check the number of indexed arguments for events.\nBugfix: Strings in struct constructors.\n\nA big thank...","url":"/blog/2015/09/22/solidity-0.1.3-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.1.2 Release Announcement","date":"2015-08-21","author":"Solidity Team","category":"Releases"},"content":"\nChanges:\n\nImproved commandline interface (breaking change).\nExplicit conversion between bytes and string.\nBugfix: Value transfer used in clone contracts.\nBugfix: Problem with strings as mapping keys.\nBugfix: Prevent usage of some operators.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2015/08/21/solidity-0.1.2-release-announcement"}],"page":16,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/2.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/2.json deleted file mode 100644 index 5f5c5779..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/2.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.15 Release Announcement","date":"2022-06-15","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.15\nfixes two important bugs, improves inlining heuristics and adds a .selector member for errors and events.\n\nImportant Bugs\n\nThe first one is an optimizer bug that can lead to memory write operations in inline assembly being removed if\nthe result of such an operation is not read back from within the same assembly block.\nThe bug can be triggered only when using the default legacy compiler pipeline (the new compilation pipeline via\nIR is not affected) and happens only in assembly blocks that never...","url":"/blog/2022/06/15/solidity-0.8.15-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Optimizer Bug Regarding Memory Side Effects of Inline Assembly","date":"2022-06-15","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn June 5, 2022, John Toman of the Certora development team reported an optimizer bug\nthat can cause memory writes in inline assembly blocks to be incorrectly removed\nunder certain conditions.\n\nThe bug was introduced in Solidity 0.8.13 with a new Yul optimizer step meant to\nremove unused writes to memory and storage.\n\nWe assigned the bug a severity of \"medium\".\n\nWhich Contracts are Affected?\n\nThe Yul optimizer considers all memory writes in the outermost Yul block that are\nnever read from as unused and removes them. This...","url":"/blog/2022/06/15/inline-assembly-memory-side-effects-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Bug when Copying Dirty Bytes Arrays to Storage","date":"2022-06-15","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn July 1, 2021, a bug in the Solidity code generator was found by differential fuzzing.\nThe bug causes the legacy code generation pipeline to generate code that\nmay write dirty values to storage when copying bytes arrays from calldata or memory.\n\nInitially, it was assumed that the dirty values in storage are only observable using inline\nassembly. However, resizing a bytes array using an empty .push() without actually\nwriting values to it, can expose the dirty bytes without any use of inline assembly.\n\nThe bug...","url":"/blog/2022/06/15/dirty-bytes-array-to-storage-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.14 Release Announcement","date":"2022-05-18","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.14\nfixes two important bugs.\n\nThe first one is related to ABI-encoding nested arrays directly from calldata.\nYou can find more information in the blog post.\n\nThe second bug is triggered in certain inheritance structures and can\ncause a memory pointer to be interpreted as a calldata pointer or\nvice-versa. We also have a dedicated blog post about this bug.\n\nApart from these, there are several minor bug fixes and improvements.\n\nPlease note: Unfortunately, the npm wrapper package of this version is corrupted. Using the new soljson.js...","url":"/blog/2022/05/17/solidity-0.8.14-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Bug Concerning Data Location during Inheritance","date":"2022-05-17","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn February 5th 2021, Nicolas Venturo reported a bug that allows\noverriding functions to change the data location of parameters from\nmemory to calldata.\n\nThe bug was introduced in Solidity 0.6.9 together with the ability to use calldata\ndata location for all variables (and not just parameters of external functions).\n\nWe assigned the bug a severity of \"very low\".\n\nWhich Contracts are Affected?\n\nThe effect of the bug is that a memory pointer is interpreted as a calldata pointer\nor vice-versa. It can only happen if you change...","url":"/blog/2022/05/17/data-location-inheritance-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Size Check Bug in Nested Calldata Array ABI-Reencoding","date":"2022-05-17","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn April 7, 2022, a bug in the Solidity code generator was reported by\nJohn Toman of the Certora development team. Certora's bug disclosure post can be found here.\n\nThe bug is fixed with Solidity version 0.8.14\nreleased on May 17, 2022. The bug was first introduced in Solidity version 0.5.8.\n\nWe assigned the bug a severity of \"very low\".\n\nWhich Contracts are Affected?\n\nYou might be affected if you pass a nested array directly to another external\nfunction call or use abi.encode on it.\n\nIf calldata is...","url":"/blog/2022/05/17/calldata-reencode-size-check-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Summit 2022 Recap","date":"2022-05-03","author":"Franziska Heintel","category":"Announcements"},"content":"\nWe can't believe it's already been two weeks since we met in Amsterdam for the second Solidity Summit!\n\nSolidity Summit 2022 was part of Devconnect and took place on Wednesday, April 20, 2022.\n\nWith roughly 250 participants, the event was well attended. In addition, approximately 400 people joined remotely by watching the Livepeer livestream.\n\nThe day was packed with 20+ talks on\n\nSolidity internals & deep dives\nSolidity language design\nSolidity tooling\nSecurity\nProgramming patterns\n\n... and more.\n\nThe full agenda of the day can be found here. You can...","url":"/blog/2022/05/03/solidity-summit-2022-recap"},{"frontmatter":{"layout":"post","published":true,"title":"Announcing the Winners of the Underhanded Solidity Contest 2022","date":"2022-04-09","author":"Franziska Heintel & USC Judges","category":"Announcements"},"content":"\nThe time has come to share this year's winners of the Underhanded Solidity Contest!\n\nBefore we dive into the winning submissions, let's revisit the most important features of the USC:\n\nIn a nutshell, the USC is about finding loopholes or “hiding spots” in the Solidity language and using those to write seemingly innocent and straightforward-looking Solidity code which contains malicious behavior or backdoors.\n\nThe Underhanded Solidity Contest aims to...\n\nRaise awareness about smart contract security.\nUncover language design faults.\nBattle-test recently introduced language features and restrictions.\nHighlight...","url":"/blog/2022/04/08/announcing-the-underhanded-contest-winners-2022"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.13 Release Announcement","date":"2022-03-16","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.13\nfixes an important bug related to abi.encodeCall, extends the using for\ndirective and implements \"go to definition\" for the language server.\n\nFurthermore, compiling via the new Yul IR pipeline is now considered production ready.\n\nImportant Bugs\n\nWhen abi.encodeCall was introduced in Solidity 0.8.11,\nhex literals (0x1234) and string literals (\"abcd\") were not handled properly.\nPlease read more about it in the security alert.\n\nNotable New Features\n\nYul IR Pipeline Production Ready\n\nWe have been working on Yul as an intermediate language for Solidity for several years now.\nYul in...","url":"/blog/2022/03/16/solidity-0.8.13-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"abi.encodeCall Literals Bug","date":"2022-03-16","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn March 10th, 2022, the Solidity team discovered a bug in the implementation of\nabi.encodeCall when used together with fixed-length bytes literals.\n\nIt was introduced together with abi.encodeCall in Solidity 0.8.11 and is fixed in 0.8.13.\n\nWe assigned the bug a severity of \"very low\".\n\nWhich Contracts are Affected?\n\nYou might be affected if you use abi.encodeCall(f, (...)) where f takes a\nbytesNN parameter and you provide the value for that parameter either as a\nhex literal (0x1234 or hex\"abcd\") or\nas a string literal (\"abcd\").\n\nIf you only...","url":"/blog/2022/03/16/encodecall-bug"}],"page":2,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/3.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/3.json deleted file mode 100644 index b03158d7..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/3.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity Summit 2022 Goes Amsterdam","date":"2022-02-22","author":"Franziska Heintel","category":"Announcements"},"content":"\nThe Solidity Summit is finally back! After a first virtual Solidity Summit in 2020, we are excited to announce an in-person event for 2022!\n\nSolidity Summit 2022 is part of Devconnect and will happen on Wednesday, April 20 2022, in Amsterdam.\n\nWhat is the Solidity Summit?\n\nThe Solidity Summit is a collaborative event focusing on the future of Solidity. It's a get together for advanced Solidity users and other Solidity ecosystem stakeholders such as developers interested in language design, tooling builders, auditors and...","url":"/blog/2022/02/22/solidity-summit-2022-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.12 Release Announcement","date":"2022-02-16","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.12\nimproves the JavaScript / Wasm binary and fixes several bugs.\n\nNotable New Features\n\nEmscripten Build / solc-js\n\nWe were able to reduce the size of the JavaScript / WebAssembly\nbinaries from 27 MB to just over 8 MB. The reason for the large binary\nin the first place is that we include the SMT solver Z3.\n\nThe size reduction is achieved by compressing the binary using LZ4 and\ndecompressing it when it is loaded, which should be completely transparent to the user.\nWe were initially worried that...","url":"/blog/2022/02/16/solidity-0.8.12-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Underhanded Solidity Contest 2022","date":"2022-02-09","author":"Franziska Heintel","category":"Announcements"},"content":"\nThe long wait is over: The Underhanded Solidity Contest is back with a 2022 edition!\n\nAfter a successful revival in 2020, we believe it's time for the great Solidity minds to get together again and compete over the next big underhanded hack!\n\nIn case you're new to this, let's get you up to speed with a quick recap on what the Underhanded Solidity Contest (USC) is all about:\n\nIn a nutshell, the USC is about finding loopholes or \"hiding spots\" in the Solidity...","url":"/blog/2022/02/09/underhanded-solidity-contest-2022-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2021 Results","date":"2022-02-07","author":"Franziska Heintel","category":"Announcements"},"content":"\nIn this post, we will be summarizing and analyzing the results of the 2021 Solidity Developer Survey.\n\nA big thank you goes out to everybody who took the time and participated!\n\nYour input is invaluable to us and plays a crucial role in helping to continuously improve the Solidity developer experience as a whole.\n\nSummary & Notable Insights\n\nSurvey Audience**: In total, 435 developers from 73 different countries participated in the 2021 survey. Compared to 2020, that is more than a 100% increase in...","url":"/blog/2022/02/07/solidity-developer-survey-2021-results"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.11 Release Announcement","date":"2021-12-20","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.11\nadds a first implementation of a Language Server, allows a safer way to\nperform ABI-encoding and fixes several bugs.\n\nNotable New Features\n\nLanguage Server Preview\n\nLanguage Server Protocol\nis an initiative that allows better interoperability between IDEs and\ncompilers, or more generally, language diagnostics tools. The idea is that\ninstead of writing a different plugin for each combination of IDEs and\nlanguages, every IDE implements a single client and every compiler implements\na single server and since both of them use the same protocol, you can combine\nall of...","url":"/blog/2021/12/20/solidity-0.8.11-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2021 is Live!","date":"2021-11-18","author":"Franziska Heintel","category":"Announcements"},"content":"\nToday, we launched the Solidity Developer Survey 2021. Please all take 10 minutes to participate and let us know your feedback!\n\nThis marks the second time we are conducting a structured big developer survey. You can find the results of last year's Solidity developer survey here.\n\nShape the Future of Solidity 🔮\n\nThe survey helps us to further improve the Solidity language and compiler and shape the future roadmap of Solidity. We can't wait to hear your thoughts on the prioritization of new...","url":"/blog/2021/11/18/solidity-developer-survey-2021"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.10 Release Announcement","date":"2021-11-09","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.10 can now report contract invariants and reentrancy properties through the SMTChecker. It also contains some new optimizations with regards to external function calls and enables the new EVM code generator for pure Yul mode.\n\nNotable New Features\n\nNew EVM Code Transform for Compilation via Yul IR\n\nWith this release, we introduce a new EVM code generation backend that is used for the experimental compilation pipeline of Solidity via Yul (with enabled optimizer), as well as for optimized compilation of Yul input.\n\nWhile...","url":"/blog/2021/11/09/solidity-0.8.10-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"User Defined Value Types Bug","date":"2021-09-29","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn September 28th, 2021, Harry Altman (@haltman-at) of Truffle\ndiscovered a bug in user defined value types.\n\nThe bug has no influence on the correctness of Solidity contracts, but contracts compiled with\nSolidity 0.8.8 that use the new feature are unnecessarily wasteful and might have problems with\ntooling or contract upgrades.\n\nThe bug exists only in Solidity 0.8.8 and is fixed in 0.8.9.\n\nWe assigned the bug a severity of \"very low\".\n\nStorage Layout of User Defined Value Types\n\nThe compiler did not correctly compute the storage layout...","url":"/blog/2021/09/29/user-defined-value-types-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.9 Release Announcement","date":"2021-09-29","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.9 is a pure bugfix release and fixes two important, but low severity, bugs.\n\nThe first bug is related to immutables of signed integer types shorter than 256 bits. The bug causes sign extension (cleanup) of those values to not always being properly performed. It was introduced in Solidity 0.6.5. Read more in the respective security alert.\nThe second bug was introduced with user defined value types in Solidity v0.8.8 (released two days ago). User defined types with underlying type shorter...","url":"/blog/2021/09/29/solidity-0.8.9-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Signed Immutables Bug","date":"2021-09-29","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn September 28th, 2021, the Solidity team discovered that\nfor immutable variables of a signed integer type shorter than 256 bits,\nsign extension (cleanup) of its value is not always properly performed.\n\nTo our knowledge, the value can only be accessed in its unclean state\nwhen using inline assembly.\nThe bug is present since the introduction of the\nimmutable feature in Solidity 0.6.5 and is fixed in 0.8.9.\n\nWe assigned the bug a severity of \"very low\".\n\nTechnical Details\n\nWhen immutable variables are assigned in Solidity during the construction...","url":"/blog/2021/09/29/signed-immutables-bug"}],"page":3,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/4.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/4.json deleted file mode 100644 index dea17dcf..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/4.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"User Defined Value Types in Solidity","date":"2021-09-27","author":"Solidity Team","category":"Explainers"},"content":"\nSolidity v0.8.8 introduces user defined\nvalue types as a\nmeans to create zero-cost abstractions over an elementary value type that also increases type safety\nand improves readability.\n\nMotivation\n\nA problem with primitive value types is that they are not very descriptive: they only specify how\nthe data is stored and not how it should be interpreted. For example, one may want to use uint128\nto store the price of some object as well as the quantity available. It is quite useful to have\nstricter type rules to avoid...","url":"/blog/2021/09/27/user-defined-value-types"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.8 Release Announcement","date":"2021-09-27","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.8 introduces user defined\nvalue types as a major feature. The override keyword is now optional for interface functions,\nimmutable variables can be read in the constructor, there is support for retrieving the smallest\nand largest value of an enum, you can specify include directories and the commandline interface was cleaned up.\nFurthermore, we fixed several bugs and the SMTChecker has improved language coverage.\n\nNotable New Features\n\nUser Defined Value Types\n\nA user defined value type allows creating a zero-cost-abstraction over an elementary value type that\nalso...","url":"/blog/2021/09/27/solidity-0.8.8-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.7 Release Announcement","date":"2021-08-11","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.7 introduces support for\nthe London upgrade, includes\nvarious improvements to Yul to EVM code transformation, the SMTChecker and some bugfixes.\n\nPlease note: Unfortunately, the npm package of this version is corrupted. Pulling the solc-js repository directly will work.\n\nSupport for London Upgrade\n\nSolidity adds support for the BASEFEE opcode (EIP-3198\nand EIP-1559) which exposes the block's base fee. This\ncan be accessed via the global block.basefee or using basefee() in inline assembly or Yul.\n\nThe following contract illustrates an example:\n\ncontract Basefee {\n function...","url":"/blog/2021/08/11/solidity-0.8.7-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.6 Release Announcement","date":"2021-06-22","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.6 fixes some\nnon-critical but annoying bugs, especially a warning about unreachable code that\nis in fact reachable.\n\nBugfixes\n\nUnreachable Warning\n\nWith Solidity 0.8.5, we released a new feature that detects if code is unreachable\nbecause a called function always reverts before the code is executed. This detection contained a bug\nin connection with nested calls to internal library functions where the \"reverting behaviour\"\nof a function was not properly updated after a\nfunction called by it was determined to be not always reverting.\n\nBecause the bug was rather...","url":"/blog/2021/06/22/solidity-0.8.6-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.5 Release Announcement","date":"2021-06-10","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.5 allows conversions\nfrom bytes to bytesNN values, adds the verbatim builtin function to inject\narbitrary bytecode in Yul and fixes several smaller bugs.\n\nNotable New Features\n\nBytes Conversion\n\nFind the complete feature documentation here.\n\nThis release introduces the ability to convert bytes and bytes slices to fixed bytes types bytes1 / ... / bytes32. While conversion between fixed-length bytes types has always been possible, it is now also possible to convert dynamically-sized bytes types to fixed-length bytes types.\n\nIn case a byte array is longer...","url":"/blog/2021/06/10/solidity-0.8.5-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"What Happened with Solidity-related Domains?","date":"2021-05-03","author":"Franziska Heintel","category":"Explainers"},"content":"\nSome time ago we decided to get a domain that the Solidity team has easy access to in\norder to streamline efforts and initiatives that were hosted on other domains before.\n\nAnd so soliditylang.org was born! 🎉\n\nWe announced most of these domain changes individually on Twitter, but we want to take a moment to\nalso officially announce it here on the blog\nand explain the various subdomains we have now, what they are for and which older\ndomains may be deprecated in the future.\n\nIn short,...","url":"/blog/2021/05/03/soliditylangorg-umbrella-domain"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.4 Release Announcement","date":"2021-04-21","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.4 adds custom structured errors, bytes.concat(...), allows more flexible\nconfiguration of the SMT checker and fixes a bug in the Solidity ABI decoder v2.\n\nImportant Bugfixes:\n\nOn April 5th, 2021, a bug in the Solidity ABI decoder v2 was reported by John Toman of the Certora development team. For two-dimensional arrays and specially crafted data in memory, the result of abi.decode can depend on data elsewhere in memory. Calldata decoding is not affected. The bug is present in all prior versions of...","url":"/blog/2021/04/21/solidity-0.8.4-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity ABI Decoder Bug For Multi-Dimensional Memory Arrays","date":"2021-04-21","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn April 5th, 2021, a bug in the Solidity ABI decoder v2 was reported by\nJohn Toman of the Certora development team. Certora's bug disclosure post\ncan be found here: Memory Isolation Violation in Deserialization Code.\n\nThe bug is fixed with Solidity version 0.8.4\nreleased on April 21st, 2021. The bug is present in all prior versions of ABI coder v2.\n\nWe assigned the bug a severity level of \"very low\", mainly due to the\nfact that it is very hard to exploit the bug.\n\nWe are...","url":"/blog/2021/04/21/decoding-from-memory-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Custom Errors in Solidity","date":"2021-04-21","author":"Solidity Team","category":"Explainers"},"content":"\nStarting from Solidity v0.8.4, there is\na convenient and gas-efficient way to explain to users why an operation failed through the use of\ncustom errors. Until now, you could already use strings to give more information about failures\n(e.g., revert(\"Insufficient funds.\");), but they are rather expensive, especially when it comes to\ndeploy cost, and it is difficult to use dynamic information in them.\n\nCustom errors are defined using the error statement, which can be used inside and outside of\ncontracts (including interfaces and libraries).\n\nExample\n\nThe following contract...","url":"/blog/2021/04/21/custom-errors"},{"frontmatter":{"layout":"post","published":true,"title":"Announcing Solidity Version Collectibles & Community Governance 💎","date":"2021-04-01","author":"Franziska Heintel","category":"Announcements"},"content":"⚠️ Attention: This post is an April Fools' Day joke. Please consume it at your own risk. We will not distribute any Solidity NFTs in the foreseeable future. Stay safe.\n\nToday, we are excited to announce a little surprise we’ve been working on silently for the last couple of weeks. We heard that you really like crypto-related collectibles and we listened.\n\nYou will soon be able to own a digital piece of Solidity’s history: We’re tokenizing each Solidity version as an NFT!...","url":"/blog/2021/04/01/announcing-solidity-collectibles"}],"page":4,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/5.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/5.json deleted file mode 100644 index 48f3ca01..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/5.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.3 Release Announcement","date":"2021-03-23","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.3 fixes the Solidity Optimizer Keccak Caching Bug, which is present in all prior versions of Solidity, and, in addition, includes two improvements to the optimizer which can provide a big gas benefit when writing structs that cover a full storage slot to storage.\n\nImportant Bugfixes\n\nSolidity Optimizer Keccak Caching Bug\n\nOn March 20, 2021, a bug in Solidity’s bytecode optimizer was found by differential fuzzing. The bug is fixed with this version. The bug is present in all prior versions of...","url":"/blog/2021/03/23/solidity-0.8.3-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Optimizer Keccak Caching Bug","date":"2021-03-23","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn March 20, 2021, a bug in Solidity's bytecode optimizer was found by differential fuzzing. The bug\nis fixed with version 0.8.3 released on\nMarch 23, 2021. The bug is present in all prior versions of Solidity.\n\nWe assigned the bug a severity level of \"medium\".\n\nTechnical Details\n\nSummary: The bytecode optimizer incorrectly re-used previously evaluated Keccak-256 hashes. You\nare unlikely to be affected if you do not compute Keccak-256 hashes in inline assembly.\n\nSolidity's bytecode optimizer has a step that can compute Keccak-256 hashes, if the...","url":"/blog/2021/03/23/keccak-optimizer-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.2 Release Announcement","date":"2021-03-02","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.2 adds an optimizer stage that can inline small amounts of code to save gas and\nprovides more means to work with code documentation by exporting inline comments\nand allowing custom natspec tags.\n\nNotable New Features\n\nInliner\n\nThis release adds a simple inliner to the low-level optimizer of Solidity.\nIt can inline short functions that do not contain control-flow branches or\nopcodes with side-effects. If you want to learn more about the inliner, read this post.\n\nCustom Natspec and Exported Documentation\n\nIt is now possible to use documentation...","url":"/blog/2021/03/02/solidity-0.8.2-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Saving Gas with Simple Inlining","date":"2021-03-02","author":"Christian Reitwiessner","category":"Explainers"},"content":"\nSolidity v0.8.2 adds a simple inliner to the low-level optimizer of Solidity. In this post, we examine how it works and take a look at synergies with other steps of the optimizer.\n\nLow-Level Inliner\n\nThe Low-Level Inliner is a component of the low-level optimizer of the Solidity compiler.\nTo save gas, it can inline short functions that do not contain control-flow branches or\nopcodes with side-effects.\n\nThe decision to inline or not is based on the trade-off parameter \"runs\":\nThe combined code deposit cost and execution...","url":"/blog/2021/03/02/saving-gas-with-simple-inliner"},{"frontmatter":{"layout":"post","published":true,"title":"Contributing to Solidity 101","date":"2021-02-15","author":"Franziska Heintel","category":"Explainers"},"content":"\nThe Solidity programming language is an open-source project governed by a core team. We rely on the community’s feedback, input and contributions to make the language as effective, safe and useful as possible.\n\nIn this post, we will walk you through the various different ways how you can get involved contributing to Solidity! Do not hesitate to contact us in case anything is left unclear after reading the post.\n\nOverview of Contribution Opportunities\n\nThere are plenty of options how you can contribute to...","url":"/blog/2021/02/15/contributing-to-solidity-101"},{"frontmatter":{"layout":"post","published":true,"title":"An Introduction to Solidity's Fuzz Testing Approach","date":"2021-02-10","author":"Bhargava Shastry","category":"Explainers"},"content":"\nSecurity vulnerabilities and bugs detract from software quality.\nTo discover them early, at best before they are released, we have adopted fuzz testing: feeding randomly generated programs to the Solidity compiler and observing the compilation runtime and code generated.\n\nSince Q1 2019, the Solidity compiler is fuzz tested via Google's open-source software fuzz (oss-fuzz) framework.\n\nIn this post, we briefly describe the work that has been done on this front, and work that is currently in progress.\n\nFuzzer Overview\n\nBroadly speaking, we have developed two...","url":"/blog/2021/02/10/an-introduction-to-soliditys-fuzz-testing-approach"},{"frontmatter":{"layout":"post","published":true,"title":"Launching the Solidity Forum 🗃️","date":"2021-02-01","author":"Franziska Heintel","category":"Announcements"},"content":"\nIn our effort to foster exchange of information, encourage more developers to give feedback about Solidity and join the discussions on language design and future direction of the compiler, we are happy to launch the Solidity forum today!\n\nMoving forward the Solidity forum will be the dedicated place to discuss topics and questions related to…\n\nThe design of the Solidity programming language.\nThe Solidity compiler.\nUseful Solidity tips and code snippets.\nSolidity documentation and its translation.\nDiscussions and announcements about Solidity releases.\n\nIt will not be the...","url":"/blog/2021/02/01/launching-the-solidity-forum"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.1 Release Announcement","date":"2021-01-27","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.8.1 introduces\nmany new features for the SMTChecker (see below), updates the\nemscripten version for building soljson.js to 2.0.12,\nallows to catch panic errors and adds other small improvements.\n\nNotable New Features\n\nSMTChecker Counterexamples and Synthesis of External Functions\n\nThe SMTChecker already reports transaction traces as counterexamples to failing verification\ntargets, but 0.8.1 adds internal calls, msg.value and synthesized unknown code called\nexternally in the form of reentrant calls to counterexamples.\nA recent blog post\npresents that topic in more detail.\n\nHow to select SMTChecker targets\n\nPrior to 0.8.1, the SMTChecker...","url":"/blog/2021/01/27/solidity-0.8.1-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2020 Results","date":"2021-01-26","author":"Franziska Heintel","category":"Announcements"},"content":"\nBefore we dive into the results we want to extend a big thank you to all of the Solidity developers that participated in the very first Solidity Developer Survey, which we conducted at the end of last year!\n\nWe were overwhelmed by the high quality of the submissions and are happy to extract important insights from your input.\n\nIn this post, we'll be summarizing and commenting on the results of the survey.\n\nPlease note that none of the questions in the survey were...","url":"/blog/2021/01/26/solidity-developer-survey-2020-results"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.0 Release Announcement","date":"2020-12-16","author":"Solidity Team","category":"Releases"},"content":"\nSolidity 0.8.0 is a breaking release of the Solidity compiler and language.\n\nSome of the new features of this release have been elaborated in the 0.8.x preview release post. Please consider the preview release binary superseded and do not use it anymore.\n\nNotable New Features and Changes\n\nAs per ususal, this breaking release does not include many features but rather changes that require a\nbackwards-incompatible adjustment in syntax or semantics. For a detailed explanation,\nplease see the documentation.\n\nThe change that will affect most users is...","url":"/blog/2020/12/16/solidity-v0.8.0-release-announcement"}],"page":5,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/6.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/6.json deleted file mode 100644 index d0205dbc..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/6.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.6 Release Announcement","date":"2020-12-16","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.7.6 adds better support for calldata types. Furthermore, the fallback function can now have a parameter and explicitly return data.\n\nNotable New Features\n\nDetection of Overflowing Unicode Direction Markers\n\nThe winning entry in the\nSolidity Underhanded Contest\nused a clever combination of Unicode direction markers to deceive the reader about\nthe semantics of a time-locked upgrade mechanism. Starting from Solidity 0.7.6, the parser will reject\ncomments and Unicode strings where the text direction is not properly reset before the end of the\ncomment or string.\n\nBetter Support for...","url":"/blog/2020/12/16/solidity-0.7.6-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Launching the Solidity Developer Survey 2020","date":"2020-12-09","author":"Franziska Heintel","category":"Announcements"},"content":"\nToday we are launching the Solidity Developer Survey 2020. It is the first time we share a proper language survey and we hope to turn this into an annual tradition moving forward.\n\nYou might remember the small feedback survey we did this year as part of the Solidity Summit registration in which we asked you for the most liked and dreaded Solidity features. If you're curious to revisit the results of that click here.\n\nHelp shape the future of Solidity 🔮\n\nSo why...","url":"/blog/2020/12/09/solidity-developer-survey-2020"},{"frontmatter":{"layout":"post","published":true,"title":"Announcing the Winners of the Underhanded Solidity Contest 👨‍💻🏅","date":"2020-12-03","author":"Franziska Heintel","category":"Announcements"},"content":"\nAfter thorough assessment of all submissions, we are happy to share the winners of this year's Underhanded Solidity Contest!\n\nIf you are not familiar with it, please read the announcement from September.\n\nBefore we dive into the winning submissions, we'd like to thank all participants for taking part. In total, we received 16 qualifying submissions which you can find in this repo. All 16 submissions are eligible for a \"qualified submission\" Underhanded Solidity POAP NFT - winners will receive an additional \"Winners\"...","url":"/blog/2020/12/03/solidity-underhanded-contest-winners"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.5 Release Announcement","date":"2020-11-18","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.7.5 adds the ability so select the ABI coder via pragma abicoder v1 and pragma abicoder v2 in preparation for making ABI coder v2 the default for 0.8.0 and introduces --experimental-via-ir which compiles via the new experimental Yul-based compiler pipeline.\n\nFull Changelog\n\nLanguage Features:\n\nAbility to select the abi coder using pragma abicoder v1 and pragma abicoder v2.\nInline Assembly: Use .offset and .length for calldata variables of dynamic array type to access their calldata offset and length (number of elements). Both of...","url":"/blog/2020/11/18/solidity-0.7.5-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Ask the Solidity Team Anything #1 Recap","date":"2020-11-04","author":"Solidity Team","category":"Announcements"},"content":"\nWe hosted our very first Solidity team AMA on Reddit last week! We would like to take the opportunity to summarize the most interesting and most upvoted questions & answers in this post.\n\nIf you are interested in going through the full AMA thread you can do so here.\n\nGeneral Questions\n\nRoadmap Outlook: What does the Solidity team see as its most important feature goals in the medium-long term and what are the biggest blockers to achieving those goals?\n\nAs far as the compiler...","url":"/blog/2020/11/04/solidity-ama-1-recap"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.x Preview Release","date":"2020-10-28","author":"Solidity Team","category":"Releases"},"content":"\nWith the Solidity 0.8.x series being just around the corner, we would like to provide insights into the upcoming breaking changes that will come with it.\n\nWe want to provide a preview release binary for everyone to try out so that you can give your feedback.\n\nThe main change for 0.8.x is the switch to checked arithmetic operations by default.\nThis means that x + y will throw an exception on overflow. In other words: You will not need SafeMath anymore!\n\nSince the scope...","url":"/blog/2020/10/28/solidity-0.8.x-preview"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.4 Release Announcement","date":"2020-10-19","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.7.4 fixes a storage corruption bug of medium severity.\nTo learn more about the bug and to check if your contract is vulnerable please read this post with further details about the bug. The bug has been reported by John Toman of the Certora development team.\n\nAdditionally, v0.7.4 adds constants at file-level.\n\nImportant Bugfixes\n\nCode Generator: Fix data corruption bug when copying empty byte arrays from memory or calldata to storage. Read more here.\n\nNotable New Features\n\nConstants at File-Level\n\nIn order to make functions at...","url":"/blog/2020/10/19/solidity-0.7.4-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Empty Byte Array Copy Bug","date":"2020-10-19","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn October 14, 2020, a bug in the Solidity code generator was reported by\nJohn Toman of the Certora development team. Certora's bug disclosure post can be found here.\n\nThe bug is fixed with Solidity version 0.7.4\nreleased on October 19, 2020. The bug is present in all prior versions of Solidity.\n\nWe assigned the bug a severity level of \"medium\".\n\nWho should be concerned\n\nThis bug can cause newly created elements of bytes or string arrays in storage\nto be initialized by a non-zero value. For...","url":"/blog/2020/10/19/empty-byte-array-copy-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Dynamic Array Cleanup Bug","date":"2020-10-07","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn September 17, 2020, a bug in the Solidity code generator was found. The bug is fixed with version 0.7.3\nreleased on October 7, 2020. The bug is present in all prior versions of Solidity.\n\nWe assigned the bug a severity level of \"medium\".\n\nTechnical Details of the Bug\n\nSummary: For a dynamically-sized storage-array with types of size at most 16 bytes,\nassignments that require deleting slots did not zero out the deleted slots properly.\n\nConsider a dynamically-sized array in storage whose base-type is small enough...","url":"/blog/2020/10/07/solidity-dynamic-array-cleanup-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.3 Release Announcement","date":"2020-10-07","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.7.3 fixes a bug in the dynamic-array cleanup.\nTo learn more about the bug and check if your contract is vulnerable please read this post with further details about the bug.\nAdditionally, v0.7.3 adds the option to stop compilation after the parsing stage using solc --stop-after parsing.\n\nImportant Bugfixes\n\nCode Generator: Properly cleanup after copying dynamic-array to storage for packed types. Read more here.\n\nNotable New Features\n\nStop Compilation after Parsing\n\nsolc --stop-after parsing (or settings.stopAfter = 'parsing' in standard-json) can now be used to instruct...","url":"/blog/2020/10/07/solidity-0.7.3-release-announcement"}],"page":6,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/7.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/7.json deleted file mode 100644 index d9cab3ad..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/7.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.2 Release Announcement","date":"2020-09-28","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.7.2 fixes a bug in free functions, which had been introduced with v0.7.1, and adds compiler-generated utility file export. Furthermore, it comes with a considerably broadened language support of the SMTChecker.\n\nImportant Bugfixes\n\nFree Function Overloading Checks\n\nFree functions were introduced in the previous release (Solidity v0.7.1). It turned out that it was possible\nto define a function with the same name multiple times, even containing the same parameter types.\nAllowing two functions with the same name, but different parameter types is called \"overloading\"\nand...","url":"/blog/2020/09/28/solidity-0.7.2-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"The Underhanded Solidity Contest is back!","date":"2020-09-21","author":"Franziska Heintel","category":"Announcements"},"content":"\nWe're excited to share that the Underhanded Solidity Contest is finally back!\n\nInspired by the Underhanded C Contest and the first Underhanded Solidity Contest, organized in 2017 by Nick Johnson, we decided it is time for a much needed revival.\n\nUnderhanded Solidity Contest\n\nThe goal of this contest is to write innocent-looking Solidity code, which pretends to be clear and straightforward, but actually contains malicious behavior or backdoors.\n\nBy hosting such a contest we aim to:\n\nRaise awareness about smart contract security.\nUncover language design flaws.\nBattle-test...","url":"/blog/2020/09/21/solidity-underhanded-contest"},{"frontmatter":{"layout":"post","published":true,"title":"Meet the Solidity team! 🧑‍💻👩‍💻","date":"2020-09-18","author":"Solidity Team","category":"Announcements"},"content":"\nAs you might know, Solidity is an open-source community project mainly developed and maintained by a core team.\n\nToday, we would like to introduce some of our team members and share insights into their professional background, which components of Solidity they mostly work on, what they would like to see in Solidity and in the ecosystem in future and more! Since almost all of our work happens on Github you can find each team member's Github handle next to their name.\n\nBefore...","url":"/blog/2020/09/18/meet-the-team"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.1 Release Announcement","date":"2020-09-02","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.7.1 adds functions at file-level and fixes several small bugs.\n\nNotable New Features\n\nFunctions At File-Level\n\nFunctions can now be defined at file-level. Such functions are called \"free functions\"\n(as opposed to functions bound to a specific contract).\n\nFree functions are always internal functions\nand are meant to replace internal library functions and their very special behaviour.\n\nA free function behaves like an internal function of the contract that called it.\nThe main difference is that a free function cannot directly access state variables and internal\nfunctions of...","url":"/blog/2020/09/02/solidity-0.7.1-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.7.0 Release Announcement","date":"2020-07-28","author":"Solidity Team","category":"Releases"},"content":"\nSolidity 0.7.0 is a breaking release of the Solidity compiler and language.\n\nThis release does not include many features but rather changes that require a\nbackwards-incompatible adjustment in syntax or semantics. For a detailed explanation,\nplease see the documentation.\n\nMost notably, further cleanup of visibility and state mutability has been performed\nand several unpopular keywords have been removed. Types with mappings\nin memory are disallowed and shift and exponentiation operations use more reasonable types.\n\nSince we usually do not backport bugfixes, it is recommended to upgrade all...","url":"/blog/2020/07/28/solidity-v0.7.0-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.12 Release Announcement","date":"2020-07-22","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.6.12 adds more flexibility\nwhen using inheritance with NatSpec comments and introduces many small improvements to the optimizer.\n\nNotable New Features\n\nNatSpec Inheritance\n\nAs explained in the Solidity 0.6.11 release announcement,\nNatSpec comments are now inherited automatically if you do not provide any\nNatSpec in the derived function. Starting from Solidity 0.6.12, you can\nexplicitly inherit comments from a base contract using the tag @inheritdoc\neven if you specify some of the tags.\nThe tags that are not given will then be taken from the specified base class'\nfunction.\n\n//...","url":"/blog/2020/07/22/Solidity-0612-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity v0.1.0 turns 5! A walk down memory lane...","date":"2020-07-08","author":"Franziska Heintel","category":"Announcements"},"content":"\nSolidity v0.1.0 turns 5\n\nWith happiness and a tad of nostalgia, we'd like to share that Solidity v0.1.0 turns 5 years old today! (To be fair, v0.1.0 wasn't an actual release, but it marks the time where the Solidity team started appointing version numbers.) We are puzzled over how fast time flew by. We'd like to use this opportunity to take a look back and walk down the Solidity memory lane together with you.\n\nIn short: The Solidity language evolved rapidly, the...","url":"/blog/2020/07/08/solidity-turns-5"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.11 Release Announcement","date":"2020-07-07","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.6.11 adds inheritance to NatSpec comments,\nimproves debugging data output and fixes some minor issues with opening up calldata for non-external functions.\n\nNotable New Features\n\nNatSpec Inheritance and on Events\n\nNatSpec comments are a way to describe the behaviour of a function to end-users. It also allows\nto provide more detailed information to developers.\n\nOne regular use-case is that you document the behaviour of an interface and then implement\nthe interface in a derived contract. Previously, you had to repeat the documentation in the derived\ncontract. This...","url":"/blog/2020/07/07/Solidity-0611-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"All you need to know about Sourcify","date":"2020-06-25","author":"Franziska Heintel","category":"Explainers"},"content":"\nWelcome to Sourcify's first short FAQ! If your questions around source verification haven't been answered after reading\nthis post, please feel free to drop by the Sourcify Gitter channel and ask us\nany question there. Also stay tuned on more turorials and developer focused content to follow here and on the Remix blog!\n\nSource Verification\n\nWhat is source verification?\n\nSolidity contract source code can be verified by checking whether the on-chain deployed code\nis matching with published source code files. In order to allow for source...","url":"/blog/2020/06/25/sourcify-faq"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: inheritance","date":"2020-06-18","author":"Elena Gesheva","category":"Explainers"},"content":"\nSimilar to object-oriented programming in Solidity - a contract-oriented language - the inheritance and polymorphism features are as widely adopted and critical for the language evolution. There is hardly any Solidity developer who hasn't used these language features in their contracts to decouple logic and increase code reuse. With version 0.6 of the language the main improvements introduced are to make existing rules explicit in addition to introducing interface inheritance and disallowing the dangerous state variable shadowing. The compiler continues...","url":"/blog/2020/06/18/solidity-0.6-inheritance"}],"page":7,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/8.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/8.json deleted file mode 100644 index 1c4ac973..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/8.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.10 Release Announcement","date":"2020-06-11","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.6.10 fixes an important bug that was introduced in the previous release and adds error codes.\n\nPlease upgrade if you are using internal library functions with calldata parameters in connection with using for.\n\nImportant Bugfixes\n\nInvalid Access for Calldata Parameters in Internal Library Functions\n\nProblem: The previous release, Solidity 0.6.9, introduced the possibility to use calldata types in internal and not, as previously, only in external functions.\nThis resulted in a bug related to calling library functions with calldata parameters via using for.\nMore specifically,...","url":"/blog/2020/06/11/Solidity-0610-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Wrapping up the Virtual Solidity Summit 2020","date":"2020-06-09","author":"Franziska Heintel","category":"Announcements"},"content":"\nRoughly one month ago, we held the first Solidity Summit - a free interactive forum with discussions and talks on Solidity, Yul, language design and tooling. It took place on April 29-30 and was powered by a virtual meeting infrastructure based on open-source, self-hosted Jitsi video chat rooms. The platform was supplied by Interspace.Chat.\n\nBefore we dive into the recap: Your input and active participation was much appreciated and we want to take this opportunity to say thank you! We hope...","url":"/blog/2020/06/09/solidity-summit-recap"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.9 Release Announcement","date":"2020-06-05","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.6.9 adds SMT-checking to solc-js,\nallows calldata for all variables and provides a mechanism to specify an import directory.\n\nPlease note that the solc-js / soljson binary includes the Z3 SMT solver built-in, which causes an increase in the binary size.\n\nNotable New Features\n\nSMTChecker\n\nThe SMTChecker is a component of the Solidity compiler which has been in development for quite some time now.\n\nIts aim is to bring formal verification methods to the Solidity compiler. Solidity implements a formal verification approach based on SMT/Horn...","url":"/blog/2020/06/05/Solidity-069-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Sourcify: Towards Safer Contract Interaction for Humans","date":"2020-06-02","author":"Edi Sinovčić, Franziska Heintel","category":"Announcements"},"content":"\ntl;dr: Building sensible blockchain applications for humans is hard. You can enhance the user experience of\nyour dapp today by leveraging the power of open source. Increase awareness and give more transparency on what users\nare actually doing when interacting with your code on the blockchain, i.e. when signing a transaction, by publishing\nthe source code to this decentralized repository and using metadata files, which translate “random” hex strings into\nhuman-readable language. Sourcify is a tool to help you do exactly that. If you...","url":"/blog/2020/06/02/Sourcify-Towards-Safer-Contract-Interaction-for-Humans"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: Array Slices","date":"2020-05-26","author":"Solidity Team","category":"Explainers"},"content":"\nStarting from version 0.6.0, Solidity supports array slices.\nArray slices are handy when you want to reference a\ncontiguous portion of an array but do not want to perform a full copy of that portion. For now, array slices are only\nsupported for calldata arrays.\n\nHow to use Array Slices\n\nThe expression x[start:end] references a portion of the calldata array x starting at index start and ending just\nbefore index end.\n\nBoth start and end are optional. If not provided, start defaults to 0 and end defaults...","url":"/blog/2020/05/26/array-slices"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.8 Release Announcement","date":"2020-05-14","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.6.8 fixes three important bugs in the code generator and introduces a recommendation to use SPDX license identifiers. Furthermore, support for WebAssembly has been extended and it is now possible to access the min and max values of an integer type directly.\n\nPlease upgrade if you are using array slices, backslashes in string literals for ABIEncoderV2 or are concerned about non-payable constructors.\n\nImportant Bugfixes\n\nPlease note that the three bugs outlined below have all been rated with a severity level of \"very...","url":"/blog/2020/05/14/Solidity-068-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: Saving Storage Costs with Immutables","date":"2020-05-13","author":"Daniel Kirchner","category":"Explainers"},"content":"\nWith version 0.6.5, Solidity introduced the\nimmutable keyword\nfor state variables. Immutable state variables can only be assigned during contract creation, but will remain\nconstant throughout the life-time of a deployed contract.\nThe big advantage of immutables is that reading them is significantly cheaper than reading from regular state variables,\nsince immutables will not be stored in storage, but their values will be directly inserted into the runtime code.\n\nHow to use Immutables\n\nImmutable state variables can be declared using the immutable keyword. They cannot be read...","url":"/blog/2020/05/13/immutable-keyword"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.7 Release Announcement","date":"2020-05-04","author":"Solidity Team","category":"Releases"},"content":"\nSolidity v0.6.7 introduces support for EIP-165 via type(InterfaceName).interfaceId.\n\nLanguage Features:\n\nAdd support for EIP 165 interface identifiers with type(I).interfaceId.\nAllow virtual modifiers inside abstract contracts to have empty body.\n\nCompiler Features:\n\nOptimizer: Simplify repeated AND and OR operations.\nOption to specify optimization steps to be performed by Yul optimizer with yul-optimizations in the commandline interface or optimizer.details.yulDetails.optimizerSteps in standard-json.\nStandard Json Input: Support the prefix file:// in the field urls.\n\nBugfixes:\n\nSMTChecker: Fix internal error when fixed points are used.\nSMTChecker: Fix internal error when using array slices.\nType Checker: Disallow...","url":"/blog/2020/05/04/solidity-0.6.7-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Summit 2020 Goes Interspace","date":"2020-04-17","author":"Franziska Heintel","category":"Announcements"},"content":"\nTl;dr: As already announced on Twitter, we transformed the Solidity Summit, which was initially planned to be an in-person meeting in Berlin, into an online event. Today, we are excited to share that the summit will be powered by Interspace.Chat. Interspace is a virtual meeting infrastructure based on self-hosted Jitsi video chat rooms. Check out the Solidity Summit's preliminary event agenda here and make sure to register if you want to partipate!\n\nWhat is the Solidity Summit?\n\nThe Solidity Summit is a...","url":"/blog/2020/04/17/Solidity-Summit-2020-Goes-Interspace"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.6 Release Announcement","date":"2020-04-09","author":"Solidity Team","category":"Releases"},"content":"\nThis is a small bugfix release that solves an issue with certain tuple assignments.\n\nImportant Bugfixes:\n\nFix tuple assignments with components occupying multiple stack slots and different stack size on left- and right-hand-side.\n\nBugfixes:\n\nAST export: Export immutable property in the field mutability.\nSMTChecker: Fix internal error in the CHC engine when calling inherited functions internally.\nType Checker: Error when trying to encode functions with call options gas and value set.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version...","url":"/blog/2020/04/09/solidity-0.6.6-release-announcement"}],"page":8,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/9.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/9.json deleted file mode 100644 index 5f3d944d..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/blog/page/9.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"allPostsData":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.5 Release Announcement","date":"2020-04-06","author":"Solidity Team","category":"Releases"},"content":"\nVersion 0.6.5 of Solidity fixes an important bug and introduces immutable as a major feature.\n\nThe bug concerns the allocation of dynamic memory arrays using e.g. new uint. The bug is considered to have a severity level of \"low\" but is present in all prior versions of Solidity. Therefore, please read more about how check if your contract is vulnerable in this blog post.\n\nThe immutable feature supports setting contract-level variables at construction time if they do not change later on. These...","url":"/blog/2020/04/06/solidity-0.6.5-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Memory Array Creation Overflow Bug","date":"2020-04-06","author":"Solidity Team","category":"Security Alerts"},"content":"\nOn the 28th of March, a bug in the Solidity code generator was reported through the\nEthereum Foundation Bounty program,\nby John Toman of Certora. The bug is fixed with version 0.6.5,\nreleased on 2020-04-06.\nThe bug is present in all prior versions of Solidity.\n\nWe assigned a severity level of \"low\" because we found the bug to be uncommon and at the same time hard to exploit.\n\nWho should be concerned\n\nIf you have deployed a contract which allocates a memory array of user-supplied length,\nbut does...","url":"/blog/2020/04/06/memory-creation-overflow-bug"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: fallback and receive functions","date":"2020-03-26","author":"Elena Gesheva","category":"Explainers"},"content":"\nIn versions of Solidity before 0.6.x, developers typically used the fallback function to handle logic in two scenarios:\n\ncontract received ether and no data\ncontract received data but no function matched the function called\n\nThe main use case of the pre-0.6.x fallback function is to receive ether and react\nto it, a typical pattern used by token-style contracts to reject transfers, emit\nevents or forward the ether. The function executes when a contract is called\nwithout any data e.g. via .send() or .transfer() functions. The 0.5.x\nsyntax...","url":"/blog/2020/03/23/fallback-receive-split"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.17 Release Announcement","date":"2020-03-17","author":"Solidity Team","category":"Releases"},"content":"\nThis maintenance release of the 0.5.x series fixes a bug that was always present in the compiler. Some people do not even consider it a bug, though, which might explain why it was undiscovered for so long:\n\nA private function can be overridden in a derived contract by a private function of the same name and types. In other words, the virtual function calling mechanism does not respect visibility.\nThe same applies to two private functions of the same name and type...","url":"/blog/2020/03/17/solidity-0.5.17-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.4 Release Announcement","date":"2020-03-10","author":"Solidity Team","category":"Releases"},"content":"\nVersion 0.6.4 of Solidity fixes a bug that did not allow calling base contract functions directly, another bug that caused issues with variable scoping in try/catch and it allows for greater flexibility with regards to storage: It is now possible to set storage slots for storage reference variables from inline assembly. We expect this to allow new patterns in connection to delegatecall proxies and upgradable contracts. Please be careful when using this feature!\n\nLanguage Features:\n\nGeneral: Deprecated value(...) and gas(...) in favor...","url":"/blog/2020/03/10/solidity-0.6.4-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.3 Release Announcement","date":"2020-02-18","author":"Solidity Team","category":"Releases"},"content":"\nThis release adds reason strings for compiler-generated reverts if you specify revert-strings debug or use the setting settings.debug.revertStrings = \"debug\". Furthermore, contract types and enums are now allowed as keys for mappings and the doxygen-style comments are better supported by the AST.\n\nLanguage Features:\n\nAllow contract types and enums as keys for mappings.\nAllow function selectors to be used as compile-time constants.\n\nCompiler Features:\n\nAST: Add a new node for doxygen-style, structured documentation that can be received by contract, function, event and modifier definitions.\nCode Generator:...","url":"/blog/2020/02/18/solidity-0.6.3-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.x features: try/catch statement","date":"2020-01-29","author":"Elena Gesheva","category":"Explainers"},"content":"\nThis post was originally published on the Ethereum blog.\n\nThe try/catch syntax introduced in 0.6.0 is arguably the biggest leap in error handling capabilities in Solidity, since reason strings for revert and require were released in v0.4.22. Both try and catch have been reserved keywords since v0.5.9 and now we can use them to handle failures in external function calls without rolling back the complete transaction (state changes in the called function are still rolled back, but the ones in the...","url":"/blog/2020/01/29/solidity-0.6-try-catch"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.2 Release Announcement","date":"2020-01-27","author":"Solidity Team","category":"Releases"},"content":"\nAfter long discussions, we finally enabled a high-level way to use the create2 opcode introduced in Constantinople: When creating a contract, you can specify the salt as a \"function call option\": new Contract{salt: 0x1234}(arg1, arg2). We took this opportunity and also extended the use of these function call options to specifying the gas and value options in external function calls: c.f{value: 10, gas: 20000}(arg1, arg2).\n\nFurthermore, interfaces can now inherit from interfaces, making them even more useful for specification purposes.\n\nTo allow...","url":"/blog/2020/01/27/solidity-0.6.2-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.6.1 Release Announcement","date":"2020-01-02","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug in the Yul optimizer related to break and continue statements in loops. The Yul optimizer is part of the regular optimizer since version 0.6.0. In version 0.5.x, you had to explicitly activate the Yul optimizer in addition to the regular optimizer. The Yul optimizer only operates on the code generated by ABIEncoderV2 or if you use it in a stand-alone way. The code generated by ABIEncoderV2 does not make use of break and continue, but...","url":"/blog/2020/01/02/solidity-0.6.1-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.5.16 Release Announcement","date":"2020-01-02","author":"Solidity Team","category":"Releases"},"content":"\nThis release fixes a bug in the Yul optimizer. You are only affected if you manually enabled the Yul optimizer (not the regular optimizer) and either used Yul stand-alone or via ABIEncoderV2. For more details, please see buglist.json.\n\nBugfixes:\n\nYul Optimizer: Fix bug in redundant assignment remover in combination with break and continue statements.\n\nA big thank you to all contributors who helped make this release possible!\n\nDownload the new version of Solidity here.\n","url":"/blog/2020/01/02/solidity-0.5.16-release-announcement"}],"page":9,"totalPages":16},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/data/Fngo94tbif38FilQuSLQv/index.json b/docs/_next/data/Fngo94tbif38FilQuSLQv/index.json deleted file mode 100644 index f22b075f..00000000 --- a/docs/_next/data/Fngo94tbif38FilQuSLQv/index.json +++ /dev/null @@ -1 +0,0 @@ -{"pageProps":{"previewBlogPosts":[{"frontmatter":{"layout":"post","published":true,"title":"Solidity 0.8.20 Release Announcement","date":"2023-05-10","author":"Solidity Team","category":"Releases"},"content":"\nWe are excited to announce the latest release of the Solidity Compiler, Solidity v0.8.20.\nThis latest version includes a range of improvements in the via-IR pipeline and improves the list of events exposed in the contract ABI, and, most importantly, support for the Shanghai hard fork!\n\nImportant Note\n\nThis compiler switches the default target EVM version to Shanghai, which means that the generated bytecode will include PUSH0 opcodes.\nBe sure to select the appropriate EVM version in case you intend to deploy on a...","url":"/blog/2023/05/10/solidity-0.8.20-release-announcement"},{"frontmatter":{"layout":"post","published":true,"title":"Solidity Developer Survey 2022 Results","date":"2023-03-10","author":"Franziska Heintel","category":"Announcements"},"content":"\nThe 2022 Solidity Developer Survey results are in! In this post, we will be summarizing and analyzing them.\n\nFirst of all, a big thank you to everybody who took the time and participated and to everybody who helped us spread the word about it!\nThis year, we received a smashing 1401 responses. That is more than a 3x in responses compared to the previous survey and we couldn't be happier with the turnout.\nYour input is invaluable to us and plays a crucial...","url":"/blog/2023/03/10/solidity-developer-survey-2022-results"},{"frontmatter":{"layout":"post","published":true,"title":"Feature Deep-Dive: User-Defined Operators","date":"2023-02-22","author":"Kamil Śliwak, Matheus Aguiar","category":"Explainers"},"content":"\nThe highlight of Solidity 0.8.19 release\nis the support for defining operators on user-defined value types (UDVTs).\n\nIf you have not been keeping up with recent features, UDVTs are a new class of types introduced in Solidity 0.8.8.\nThey provide an abstraction over an elementary value type that results in a completely new type.\nThis is similar to creating an alias, but the new type is distinct from the underlying value type\nand all other UDVTs derived from that underlying type.\nThe ability to use operators...","url":"/blog/2023/02/22/user-defined-operators"}],"allEvents":[{"frontmatter":{"title":"Solidity Summit 2020","location":"Remote","startDate":"2020-04-29","endDate":"2020-04-30","imageSrc":"/assets/solidity-summit-2020.png","links":[{"label":"Event Recap","href":"https://blog.soliditylang.org/2020/06/09/solidity-summit-recap/"},{"label":"Talks","href":"https://www.youtube.com/watch?v=lhjo2FuU4v0&list=PLaM7G4Llrb7xlGxwlYGTy1T-GHpytE3RC"}]},"content":"","url":"/events/solidity-summit-2020"},{"frontmatter":{"title":"Solidity Summit 2022","location":"Tolhuistuin, Amsterdam","startDate":"2022-04-20","endDate":"2022-04-20","imageSrc":"/assets/solidity-summit-2022.png","links":[{"label":"Event Recap","href":"https://blog.soliditylang.org/2022/05/03/solidity-summit-2022-recap/"},{"label":"Talks","href":"https://www.youtube.com/watch?v=6m5EDuCjxgk&list=PLX8x7Zj6Vezl1lqBgxiQH3TFbRNZza8Fk"}]},"content":"","url":"/events/solidity-summit-2022"},{"frontmatter":{"title":"Solidity Summit 2023","location":"Istanbul, Turkey","startDate":"2023-11-16","endDate":"2023-11-16","imageSrc":"/assets/solidity-summit-2023.png","links":[{"label":"Join us","href":"https://summit.soliditylang.org"}]},"content":"","url":"/events/solidity-summit-2023"},{"frontmatter":{"title":"Underhanded Solidity Contest 2022","location":"Remote","startDate":"2022-04-29","endDate":"2022-04-30","imageSrc":"/assets/underhanded-solidity-contest-2022.png","links":[{"label":"Event Recap","href":"https://underhanded.soliditylang.org/"}]},"content":"","url":"/events/underhanded-solidity-contest-2022"}],"versionNumber":"v0.8.20","stargazersCount":20451},"__N_SSG":true} \ No newline at end of file diff --git a/docs/_next/static/Fngo94tbif38FilQuSLQv/_buildManifest.js b/docs/_next/static/Fngo94tbif38FilQuSLQv/_buildManifest.js deleted file mode 100644 index 9a45c6d3..00000000 --- a/docs/_next/static/Fngo94tbif38FilQuSLQv/_buildManifest.js +++ /dev/null @@ -1 +0,0 @@ -self.__BUILD_MANIFEST={__rewrites:{beforeFiles:[],afterFiles:[],fallback:[]},"/":["static/chunks/pages/index-b70615ab8d91c4a0.js"],"/404":["static/chunks/pages/404-e912d4aaf22198a2.js"],"/_error":["static/chunks/pages/_error-343a13d9d773d38e.js"],"/about":["static/chunks/pages/about-fe09e589e2bb4251.js"],"/blog":["static/chunks/pages/blog-b435f5d3515456db.js"],"/blog/category/[category]":["static/chunks/pages/blog/category/[category]-35b798afe7131ac3.js"],"/blog/page/[page]":["static/chunks/pages/blog/page/[page]-e25bf4a606a4292c.js"],"/blog/[YYYY]/[MM]/[DD]/[post]":["static/chunks/pages/blog/[YYYY]/[MM]/[DD]/[post]-a4f40885d6eac172.js"],"/event/[event]":["static/chunks/pages/event/[event]-a45565d279099d82.js"],"/use-cases":["static/chunks/pages/use-cases-305ff74d4781f34a.js"],sortedPages:["/","/404","/_app","/_error","/about","/blog","/blog/category/[category]","/blog/page/[page]","/blog/[YYYY]/[MM]/[DD]/[post]","/event/[event]","/use-cases"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/docs/_next/static/Fngo94tbif38FilQuSLQv/_ssgManifest.js b/docs/_next/static/Fngo94tbif38FilQuSLQv/_ssgManifest.js deleted file mode 100644 index 5fd3331c..00000000 --- a/docs/_next/static/Fngo94tbif38FilQuSLQv/_ssgManifest.js +++ /dev/null @@ -1 +0,0 @@ -self.__SSG_MANIFEST=new Set(["\u002F","\u002Fblog","\u002Fblog\u002F[YYYY]\u002F[MM]\u002F[DD]\u002F[post]","\u002Fblog\u002Fcategory\u002F[category]","\u002Fblog\u002Fpage\u002F[page]","\u002Fevent\u002F[event]"]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB() \ No newline at end of file diff --git a/docs/_next/static/chunks/83.67972fb45d7c68b0.js b/docs/_next/static/chunks/83.67972fb45d7c68b0.js deleted file mode 100644 index ec5b14c0..00000000 --- a/docs/_next/static/chunks/83.67972fb45d7c68b0.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[83],{2083:function(e,t,n){"use strict";let a;function r(){return(r=Object.assign?Object.assign.bind():function(e){for(var t=1;t-1&&ee)return{line:t+1,column:e-(t>0?n[t-1]:0)+1,offset:e}}return{line:void 0,column:void 0,offset:void 0}},toOffset:function(e){let t=e&&e.line,a=e&&e.column;if("number"==typeof t&&"number"==typeof a&&!Number.isNaN(t)&&!Number.isNaN(a)&&t-1 in n){let e=(n[t-2]||0)+a-1||0;if(e>-1&&e`",url:!1},abruptClosingOfEmptyComment:{reason:"Unexpected abruptly closed empty comment",description:"Unexpected `>` or `->`. Expected `-->` to close comments"},abruptDoctypePublicIdentifier:{reason:"Unexpected abruptly closed public identifier",description:"Unexpected `>`. Expected a closing `\"` or `'` after the public identifier"},abruptDoctypeSystemIdentifier:{reason:"Unexpected abruptly closed system identifier",description:"Unexpected `>`. Expected a closing `\"` or `'` after the identifier identifier"},absenceOfDigitsInNumericCharacterReference:{reason:"Unexpected non-digit at start of numeric character reference",description:"Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references"},cdataInHtmlContent:{reason:"Unexpected CDATA section in HTML",description:"Unexpected `` in ``",description:"Unexpected text character `%c`. Only use text in `