317x Filetype PDF File size 1.47 MB Source: media.readthedocs.org
Solidity Documentation
Release 0.8.19
Ethereum
Feb03,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.