Solidity

.pdf
Solidity Documentation Release 0.8.20 Ethereum Apr 21, 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 3.10 Inline Assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 3.11 Cheatsheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 3.12 Language Grammar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 3.13 Using the Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 3.14 Analysing the Compiler Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 3.15 Solidity IR-based Codegen Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 3.16 Layout of State Variables in Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 3.17 Layout in Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 3.18 Layout of Call Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 3.19 Cleaning Up Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 3.20 Source Mappings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 3.21 The Optimizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 3.22 Contract Metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 3.23 Contract ABI Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 3.24 Security Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 3.25 List of Known Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 3.26 Solidity v0.5.0 Breaking Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 3.27 Solidity v0.6.0 Breaking Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 3.28 Solidity v0.7.0 Breaking Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 3.29 Solidity v0.8.0 Breaking Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300 3.30 NatSpec Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 3.31 SMTChecker and Formal Verification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 3.32 Yul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 3.33 Import Path Resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 3.34 Style Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 3.35 Common Patterns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 i
Uploaded by EarlTree12540 on coursehero.com