Recently, I have been revisiting Solidity, consolidating the finer details, and writing "WTF Solidity" tutorials for newbies.
Twitter: @0xAA_Science | @WTFAcademy_
Community: Discord|Wechat|Website wtf.academy
Codes and tutorials are open source on GitHub: github.com/AmazingAng/WTF-Solidity
In this section, we will introduce the hash table in Solidity: mapping type.
Mapping
With mapping type, people can query the corresponding Value by using a Key. For example, a person's wallet address can be queried by their id.
The format of declaring the mapping is mapping(_KeyType => _ValueType), where _KeyType and _ValueType are the variable types of Key and Value respectively. For example:
Rules of mapping
- Rule 1: The
_KeyTypeshould be selected among default types insoliditysuch asuint,address, etc. No customstructcan be used. However,_ValueTypecan be any custom type. The following example will throw an error, because_KeyTypeuses a custom struct:
-
Rule 2: The storage location of the mapping must be
storage: it can serve as the state variable or thestoragevariable inside the function. But it can't be used in arguments or return results ofpublicfunction. -
Rule 3: If the mapping is declared as
publicthen Solidity will automatically create agetterfunction for you to query for theValueby theKey. -
Rule 4:The syntax of adding a key-value pair to a mapping is
_Var[_Key] = _Value, where_Varis the name of the mapping variable, and_Keyand_Valuecorrespond to the new key-value pair. For example:
Principle of mapping
-
Principle 1: The mapping does not store any
keyinformation or length information. -
Principle 2: Mapping use
keccak256(key)as offset to access value. -
Principle 3: Since Ethereum defines all unused space as 0, all
keythat are not assigned avaluewill have an initial value of 0.
Verify on Remix (use Mapping.sol as an example)
-
Deploy
Mapping.sol
-
Check the initial value of map
idToAddress.
-
Write a new key-value pair

Summary
In this section, we introduced the mapping type in Solidity. So far, we've learned all kinds of common variables.