Basics
Introduction to Smart Contracts
Solidity by Example
Installing the Solidity Compiler
Language Description
Layout of a Solidity Source File
Structure of a Contract
Types
Units and Globally Available Variables
Expressions and Control Structures
Contracts
Inline Assembly
Cheatsheet
Language Grammar
Compiler
Using the Compiler
Analysing the Compiler Output
Solidity IR-based Codegen Changes
Internals
Layout of State Variables in Storage and Transient Storage
Layout in Memory
Layout of Call Data
Cleaning Up Variables
Source Mappings
The Optimizer
Contract Metadata
Contract ABI Specification
Advisory content
Security Considerations
List of Known Bugs
Solidity v0.5.0 Breaking Changes
Solidity v0.6.0 Breaking Changes
Solidity v0.7.0 Breaking Changes
Solidity v0.8.0 Breaking Changes
Additional Material
NatSpec Format
SMTChecker and Formal Verification
Yul
Import Path Resolution
Resources
Style Guide
Common Patterns
Resources
Contributing
Language Influences
Solidity Brand Guide
Keyword Index
Solidity
Index
Index
Symbols
|
A
|
B
|
C
|
D
|
E
|
F
|
G
|
H
|
I
|
J
|
K
|
L
|
M
|
N
|
O
|
P
|
R
|
S
|
T
|
U
|
V
|
W
|
Y
Symbols
--allow-paths
,
[1]
--base-path
,
[1]
,
[2]
--experimental
--include-path
,
[1]
--libraries
--link
--no-import-callback
--standard-json
,
[1]
<stdin>
A
abi
,
[1]
,
[2]
decode
encode
encodeCall
encodePacked
encodeWithSelector
encodeWithSignature
ABI coder
abstract contract
,
[1]
access
restricting
account
addmod
,
[1]
address
,
[1]
,
[2]
balance
code
codehash
send
transfer
allowed paths
,
[1]
analyse
anonymous
application binary interface
array
,
[1]
,
[2]
allocating
dangling storage references
length
pop
push
slice
array of strings
asm
,
[1]
,
[2]
assembly
,
[1]
assemblyFlags (SolidityParser production rule)
assemblyStatement (SolidityParser production rule)
assert
,
[1]
,
[2]
assignment
,
[1]
destructuring
auction
blind
open
B
balance
,
[1]
,
[2]
ballot
base
constructor
base class
base path
,
[1]
base slot
blind auction
blobhash
block
,
[1]
,
[2]
basefee
,
[1]
blobbasefee
,
[1]
chainid
coinbase
difficulty
gaslimit
number
,
[1]
prevrandao
timestamp
,
[1]
block (SolidityParser production rule)
blockhash
bool
booleanLiteral (SolidityParser production rule)
break
breakStatement (SolidityParser production rule)
Bugs
byte array
bytes
,
[1]
concat
bytes members
bytes-concat
bytes32
C
C3 linearization
call
,
[1]
callArgumentList (SolidityParser production rule)
callcode
,
[1]
cast
catchClause (SolidityParser production rule)
checked
cleanup
codehash
coding style
coin
coinbase
commandline compiler
comment
common subexpression elimination
compile target
compiler
commandline
compound operators
constant
,
[1]
constant propagation
constantVariableDeclaration (SolidityParser production rule)
constructor
,
[1]
arguments
constructorDefinition (SolidityParser production rule)
continue
continueStatement (SolidityParser production rule)
contract
,
[1]
abstract
,
[1]
base
creation
interface
modular
precompiled
contract creation
contract type
contract verification
contractBodyElement (SolidityParser production rule)
contractDefinition (SolidityParser production rule)
contracts
creating
creationCode
cryptography
,
[1]
custom storage layout
custom type
D
data
dataLocation (SolidityParser production rule)
days
deactivate
DecimalNumber (SolidityLexer production rule)
declarations
default value
delegatecall
,
[1]
,
[2]
,
[3]
delete
denomination
ether
time
deriving
difficulty
direct import
dirty bits
do/while
DoubleQuotedPrintable (SolidityLexer production rule)
doWhileStatement (SolidityParser production rule)
dynamic array
E
ecrecover
,
[1]
elementaryTypeName (SolidityParser production rule)
else
emitStatement (SolidityParser production rule)
EmptyStringLiteral (SolidityLexer production rule)
encode
encoding
enum
,
[1]
enumDefinition (SolidityParser production rule)
erc7201
,
[1]
error
,
[1]
errorDefinition (SolidityParser production rule)
errorParameter (SolidityParser production rule)
errors
EscapeSequence (SolidityLexer production rule)
escrow
ether
ethereum virtual machine
evaluation order
expression
function arguments
event
,
[1]
,
[2]
anonymous
indexed
topic
eventDefinition (SolidityParser production rule)
eventParameter (SolidityParser production rule)
evm
EVM version
evmasm
,
[1]
exception
Experimental mode
expression (SolidityParser production rule)
expressionStatement (SolidityParser production rule)
external
,
[1]
F
fallback function
fallbackFunctionDefinition (SolidityParser production rule)
false
file://
filesystem path
finney
fixed
fixed point number
FixedBytes (SolidityLexer production rule)
for
forStatement (SolidityParser production rule)
function
call
,
[1]
external
fallback
free
,
[1]
getter
internal
modifier
,
[1]
,
[2]
,
[3]
pure
receive
view
function parameter
function pointers
function type
functionDefinition (SolidityParser production rule)
functions
functionTypeName (SolidityParser production rule)
G
gas
,
[1]
gas price
,
[1]
gasleft
getter
function
goto
gwei
H
HexNumber (SolidityLexer production rule)
HexString (SolidityLexer production rule)
hexStringLiteral (SolidityParser production rule)
Host Filesystem Loader
hours
I
Identifier (SolidityLexer production rule)
identifier (SolidityParser production rule)
identifierPath (SolidityParser production rule)
if
ifStatement (SolidityParser production rule)
import
direct
path
,
[1]
relative
remapping
import callback
,
[1]
importDirective (SolidityParser production rule)
include paths
,
[1]
indexed
inheritance
multiple
inheritance list
inheritanceSpecifier (SolidityParser production rule)
inline
arrays
inlineArrayExpression (SolidityParser production rule)
installing
instruction
int
integer
,
[1]
interface contract
interfaceDefinition (SolidityParser production rule)
internal
,
[1]
iterable mappings
iulia
J
julia
K
keccak256
,
[1]
L
layout at
length
library
,
[1]
,
[2]
libraryDefinition (SolidityParser production rule)
license
linearization
linker
literal
address
,
[1]
array
conversion
hexadecimal
,
[1]
hexadecimal number
in Yul
rational
,
[1]
string
,
[1]
unicode
literal (SolidityParser production rule)
literalWithSubDenomination (SolidityParser production rule)
location
log
lvalue
M
mapping
,
[1]
,
[2]
mappingKeyType (SolidityParser production rule)
mappingType (SolidityParser production rule)
memory
,
[1]
message call
metadata
minutes
modifierDefinition (SolidityParser production rule)
modifierInvocation (SolidityParser production rule)
modifiers
modular contract
module
msg
data
sender
sig
value
mulmod
,
[1]
N
natspec
new
,
[1]
NonEmptyStringLiteral (SolidityLexer production rule)
number
numberLiteral (SolidityParser production rule)
O
open auction
operator
precedence
,
[1]
user-defined
optimiser
optimizer
origin
overload
overrideSpecifier (SolidityParser production rule)
overriding
function
modifier
P
packed
parameter
function
input
output
parameterList (SolidityParser production rule)
path (SolidityParser production rule)
payable
pop
pragma
abicoder
ABIEncoderV2
,
[1]
experimental
SMTChecker
version
PragmaToken (SolidityLexer production rule)
precompiled contracts
precompiles
prevrandao
private
,
[1]
public
,
[1]
purchase
pure
pure function
push
R
rational number
receive
receive ether function
receiveFunctionDefinition (SolidityParser production rule)
reference type
relative import
remapping
context
import
prefix
target
,
[1]
Remix IDE
,
[1]
remote purchase
require
,
[1]
,
[2]
,
[3]
return
,
[1]
return array
return string
return struct
return variable
returnStatement (SolidityParser production rule)
revert
,
[1]
,
[2]
,
[3]
revertStatement (SolidityParser production rule)
ripemd160
,
[1]
runtimeCode
S
safe math
safemath
scoping
seconds
selector
of a function
,
[1]
of a library function
of an error
,
[1]
of an event
selfdestruct
,
[1]
,
[2]
send
,
[1]
sender
set
sha256
,
[1]
SignedIntegerType (SolidityLexer production rule)
SingleQuotedPrintable (SolidityLexer production rule)
solc
SolidityLexer (grammar)
SolidityParser (grammar)
source file
source mappings
source unit
source unit name
,
[1]
sourceUnit (SolidityParser production rule)
spdx
stack
standard input
standard JSON
,
[1]
state machine
state variable
,
[1]
statement (SolidityParser production rule)
stateMutability (SolidityParser production rule)
stateVariableDeclaration (SolidityParser production rule)
staticcall
,
[1]
stdin
storage
,
[1]
,
[2]
,
[3]
storage layout specifier
string
,
[1]
,
[2]
concat
string members
string-concat
stringLiteral (SolidityParser production rule)
struct
,
[1]
,
[2]
,
[3]
structDefinition (SolidityParser production rule)
structMember (SolidityParser production rule)
style
subcurrency
SubDenomination (SolidityLexer production rule)
super
,
[1]
switch
symbolAliases (SolidityParser production rule)
szabo
T
this
,
[1]
throw
timestamp
tload
transaction
,
[1]
transfer
,
[1]
transient
transient storage
,
[1]
,
[2]
true
tryStatement (SolidityParser production rule)
tstore
tupleExpression (SolidityParser production rule)
tx
gasprice
origin
type
,
[1]
contract
conversion
creationCode
function
interfaceId
max
min
name
reference
runtimeCode
struct
value
typeName (SolidityParser production rule)
U
ufixed
uint
unchecked
uncheckedBlock (SolidityParser production rule)
UnicodeStringLiteral (SolidityLexer production rule)
unicodeStringLiteral (SolidityParser production rule)
UnsignedIntegerType (SolidityLexer production rule)
UnusedStoreEliminator
user defined value type
userDefinableOperator (SolidityParser production rule)
userDefinedValueTypeDefinition (SolidityParser production rule)
using for
,
[1]
usingAliases (SolidityParser production rule)
usingDirective (SolidityParser production rule)
V
value
value type
variable
return
variableDeclaration (SolidityParser production rule)
variableDeclarationStatement (SolidityParser production rule)
variableDeclarationTuple (SolidityParser production rule)
variably sized array
VFS
view
view function
virtual filesystem
,
[1]
visibility
,
[1]
(SolidityParser production rule)
voting
W
weeks
wei
while
whileStatement (SolidityParser production rule)
withdrawal
Y
years
yul
yulAssignment (SolidityParser production rule)
yulBlock (SolidityParser production rule)
yulBoolean (SolidityParser production rule)
YulDecimalNumber (SolidityLexer production rule)
YulEVMBuiltin (SolidityLexer production rule)
yulExpression (SolidityParser production rule)
yulForStatement (SolidityParser production rule)
yulFunctionCall (SolidityParser production rule)
yulFunctionDefinition (SolidityParser production rule)
YulHexNumber (SolidityLexer production rule)
YulIdentifier (SolidityLexer production rule)
yulIfStatement (SolidityParser production rule)
yulLiteral (SolidityParser production rule)
yulPath (SolidityParser production rule)
yulStatement (SolidityParser production rule)
YulStringLiteral (SolidityLexer production rule)
yulSwitchStatement (SolidityParser production rule)
yulVariableDeclaration (SolidityParser production rule)