{Solidity:log}
All you need to know about Sourcify
Posted by Franziska Heintel on June 25, 2020
Welcome to Sourcify's first short FAQ! If your questions around source verification haven't been answered after reading this post, please feel free to drop by the Sourcify Gitter channel and ask us any question there. Also stay tuned on more tutorials and developer focused content to follow here and on the Remix blog! Source Verification What is source verification? Solidity contract source code can be verified by checking whether the on-chain deployed code is matching with published source code files. In order to allow for source...
Read moreSolidity 0.6.x features: inheritance
Posted by Elena Gesheva on June 18, 2020
Similar 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...
Read moreSolidity 0.6.10 Release Announcement
Posted by Solidity Team on June 11, 2020
Solidity v0.6.10 fixes an important bug that was introduced in the previous release and adds error codes. Please upgrade if you are using internal library functions with calldata parameters in connection with using for. Important Bugfixes Invalid Access for Calldata Parameters in Internal Library Functions Problem: The previous release, Solidity 0.6.9, introduced the possibility to use calldata types in internal and not, as previously, only in external functions. This resulted in a bug related to calling library functions with calldata parameters via using for. More specifically,...
Read moreWrapping up the Virtual Solidity Summit 2020
Posted by Franziska Heintel on June 9, 2020
Roughly 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. 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...
Read moreSolidity 0.6.9 Release Announcement
Posted by Solidity Team on June 5, 2020
Solidity v0.6.9 adds SMT-checking to solc-js, allows calldata for all variables and provides a mechanism to specify an import directory. Please note that the solc-js / soljson binary includes the Z3 SMT solver built-in, which causes an increase in the binary size. Notable New Features SMTChecker The SMTChecker is a component of the Solidity compiler which has been in development for quite some time now. Its aim is to bring formal verification methods to the Solidity compiler. Solidity implements a formal verification approach based on SMT/Horn...
Read moreSourcify: Towards Safer Contract Interaction for Humans
Posted by Edi Sinovčić, Franziska Heintel on June 2, 2020
tl;dr: Building sensible blockchain applications for humans is hard. You can enhance the user experience of your dapp today by leveraging the power of open source. Increase awareness and give more transparency on what users are actually doing when interacting with your code on the blockchain, i.e. when signing a transaction, by publishing the source code to this decentralized repository and using metadata files, which translate “random” hex strings into human-readable language. Sourcify is a tool to help you do exactly that. If you...
Read moreSolidity 0.6.x features: Array Slices
Posted by Solidity Team on May 26, 2020
Starting from version 0.6.0, Solidity supports array slices. Array slices are handy when you want to reference a contiguous portion of an array but do not want to perform a full copy of that portion. For now, array slices are only supported for calldata arrays. How to use Array Slices The expression x[start:end] references a portion of the calldata array x starting at index start and ending just before index end. Both start and end are optional. If not provided, start defaults to 0 and end defaults...
Read moreSolidity 0.6.8 Release Announcement
Posted by Solidity Team on May 14, 2020
Solidity 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. Please upgrade if you are using array slices, backslashes in string literals for ABIEncoderV2 or are concerned about non-payable constructors. Important Bugfixes Please note that the three bugs outlined below have all been rated with a severity level of "very...
Read moreSolidity 0.6.x features: Saving Storage Costs with Immutables
Posted by Daniel Kirchner on May 13, 2020
With version 0.6.5, Solidity introduced the immutable keyword for state variables. Immutable state variables can only be assigned during contract creation, but will remain constant throughout the life-time of a deployed contract. The big advantage of immutables is that reading them is significantly cheaper than reading from regular state variables, since immutables will not be stored in storage, but their values will be directly inserted into the runtime code. How to use Immutables Immutable state variables can be declared using the immutable keyword. They cannot be read...
Read moreSolidity 0.6.7 Release Announcement
Posted by Solidity Team on May 4, 2020
Solidity v0.6.7 introduces support for EIP-165 via type(InterfaceName).interfaceId. Language Features: Add support for EIP 165 interface identifiers with type(I).interfaceId. Allow virtual modifiers inside abstract contracts to have empty body. Compiler Features: Optimizer: Simplify repeated AND and OR operations. 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. Standard Json Input: Support the prefix file:// in the field urls. Bugfixes: SMTChecker: Fix internal error when fixed points are used. SMTChecker: Fix internal error when using array slices. Type Checker: Disallow...
Read more