148x Filetype PDF File size 1.47 MB Source: media.readthedocs.org
Solidity Documentation Release 0.8.19 Ethereum Feb05,2023 BASICS 1 Getting Started 3 2 Translations 5 3 Contents 7 3.1 Introduction to Smart Contracts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.2 Installing the Solidity Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3 Solidity by Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4 Layout of a Solidity Source File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.5 Structure of a Contract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.6 Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.7 Units and Globally Available Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 3.8 Expressions and Control Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 3.9 Contracts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 3.10 Inline Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 3.11 Cheatsheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 3.12 LanguageGrammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 3.13 Using the Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 3.14 Analysing the Compiler Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 3.15 Solidity IR-based Codegen Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200 3.16 Layout of State Variables in Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 3.17 Layout in Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 3.18 Layout of Call Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 3.19 Cleaning Up Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 3.20 Source Mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 3.21 TheOptimizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 3.22 Contract Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 3.23 Contract ABI SpeciĄcation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 3.24 Solidity v0.5.0 Breaking Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 3.25 Solidity v0.6.0 Breaking Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 3.26 Solidity v0.7.0 Breaking Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 3.27 Solidity v0.8.0 Breaking Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 3.28 NatSpec Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 3.29 Security Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 3.30 SMTCheckerandFormalVeriĄcation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 3.31 Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 3.32 Import Path Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 3.33 Yul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 3.34 Style Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 3.35 CommonPatterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 i 3.36 List of Known Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 3.37 Contributing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 3.38 Solidity Brand Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 3.39 LanguageInĆuences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 Index 389 ii
no reviews yet
Please Login to review.