Solidity Basics
1. Data Types and Variables
Solidity, like other programming languages, has a variety of data types and variables used to store and manipulate data. Understanding these basics is crucial for writing smart contracts.
Primitive Data Types:
uint
: Unsigned integer (positive only).int
: Signed integer (can be positive or negative).bool
: Boolean value (true
orfalse
).address
: Represents a 20-byte Ethereum address.bytes
: Dynamically-sized byte array.string
: Dynamically-sized UTF-8 encoded string.
2. Functions
Functions in Solidity are similar to functions in other programming languages. They define a piece of code that can be called and executed.
Basic Function Syntax:
public
: The function can be called both internally and externally.pure
: Indicates that the function does not read or modify the state.
3. Visibility Specifiers
Visibility specifiers control how and where functions and state variables can be accessed.
Types of Visibility:
public
: Accessible externally and internally.private
: Accessible only within the contract that defines it.internal
: Accessible within the contract and contracts deriving from it.external
: Accessible only from outside the contract.
4. Modifiers
Modifiers are used to change the behavior of functions. They allow you to add preconditions to functions.
Example of a Modifier:
_
: The placeholder for the function's body.
5. Custom Modifiers
You can create custom modifiers to enforce specific rules within your contract.
Example:
6. Constructors
Constructors are special functions that are executed only once when a contract is deployed. They are typically used to initialize contract state.
Example:
7. Global Variables
Solidity provides several global variables that can be accessed within contracts.
Examples:
msg.sender
: The address of the caller.msg.value
: The amount of Ether sent with the transaction.block.timestamp
: The current block's timestamp.block.number
: The current block number.
8. Operators
Solidity supports standard operators like arithmetic, comparison, and logical operators.
Examples:
Arithmetic:
+
,-
,*
,/
,%
Comparison:
==
,!=
,>
,<
,>=
,<=
Logical:
&&
,||
,!
9. Conditionals
Conditionals are used to perform different actions based on different conditions.
Example:
10. Arrays
Arrays in Solidity can be of fixed or dynamic size.
Example:
11. Mappings
Mappings are key-value pairs where each unique key is mapped to a single value.
Example:
12. Structs
Structs allow you to create more complex data types by grouping multiple variables.
Example:
13. Events
Events are used to log information on the blockchain, which can be listened to by off-chain applications.
Example:
14. Ether and Payments
Solidity allows contracts to handle Ether, the native currency of Ethereum.
Example:
15. Errors
Solidity allows you to define custom errors to save gas and improve readability.
Example:
16. Inheritance
Solidity supports inheritance, allowing you to create new contracts based on existing ones.
Example:
17. Calling Other Contracts
You can call functions from other contracts using either call
or interface-based method calls.
Example:
18. Interfaces
Interfaces define the functions that must be implemented by a contract but do not contain any implementation themselves.
Example:
Last updated