Bird
Raised Fist0
Blockchain / Solidityprogramming~5 mins

Mappings in Blockchain / Solidity - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a mapping in blockchain smart contracts?
A mapping is like a digital dictionary that links one value (a key) to another value. It helps store and find data quickly in smart contracts.
Click to reveal answer
beginner
How do you declare a mapping in Solidity?
You write: mapping(KeyType => ValueType) public name; where KeyType is the type of the key and ValueType is the type of the value stored.
Click to reveal answer
intermediate
Can you iterate over all keys in a mapping directly?
No, mappings do not store keys or allow iteration. You must keep a separate list of keys if you want to loop through them.
Click to reveal answer
beginner
What happens if you access a mapping with a key that does not exist?
You get the default value for the value type (like 0 for numbers or false for booleans), because mappings always return a value even if the key was never set.
Click to reveal answer
beginner
Why are mappings useful in blockchain smart contracts?
They let you store and quickly find data linked by keys, like user balances or permissions, without using lots of storage or complex searching.
Click to reveal answer
How do you declare a mapping from addresses to unsigned integers in Solidity?
Amapping(uint, address) public balances;
Bmapping(uint => address) public balances;
Cmapping(address => uint) public balances;
Dmapping(address, uint) public balances;
What value do you get when accessing a mapping with a key that was never set?
AAn error is thrown
BThe default value of the value type
CNull
DRandom data
Can you loop through all keys in a mapping directly?
ANo, mappings do not store keys for iteration
BYes, mappings support iteration
COnly if keys are numbers
DOnly in test environments
What is a common use of mappings in smart contracts?
ARunning loops
BCreating user interfaces
CCompiling code
DStoring user balances
Which of these is NOT a valid key type for a mapping in Solidity?
Amapping
Buint
Cstring
Daddress
Explain what a mapping is and how it works in blockchain smart contracts.
Think of it like a digital dictionary that stores data linked by keys.
You got /4 concepts.
    Describe how you would store and retrieve user balances using a mapping in Solidity.
    Focus on how keys and values relate and how to get a balance.
    You got /5 concepts.

      Practice

      (1/5)
      1. What is the primary purpose of mapping in blockchain smart contracts?
      easy
      A. To create user interfaces
      B. To store a list of all keys used
      C. To perform complex mathematical calculations
      D. To connect keys to values for fast data lookup

      Solution

      1. Step 1: Understand the role of mapping

        Mappings are used to link a key to a value, allowing quick access to data based on the key.
      2. Step 2: Compare options

        Only To connect keys to values for fast data lookup correctly describes this purpose; others describe unrelated functions.
      3. Final Answer:

        To connect keys to values for fast data lookup -> Option D
      4. Quick Check:

        Mapping = key-value fast lookup [OK]
      Hint: Mappings link keys to values quickly [OK]
      Common Mistakes:
      • Thinking mappings store all keys explicitly
      • Confusing mappings with arrays or lists
      • Assuming mappings perform calculations
      2. Which of the following is the correct syntax to declare a mapping from address to uint in Solidity?
      easy
      A. mapping(address, uint) balances;
      B. mapping(address => uint) public balances;
      C. mapping[address => uint] balances;
      D. mapping(address => uint) balances()

      Solution

      1. Step 1: Recall Solidity mapping syntax

        The correct syntax uses parentheses with key type, arrow, and value type: mapping(keyType => valueType) visibility name;
      2. Step 2: Check each option

        mapping(address => uint) public balances; matches the correct syntax. Options A, C, and D have syntax errors like using commas instead of =>, wrong brackets, or function-like declaration.
      3. Final Answer:

        mapping(address => uint) public balances; -> Option B
      4. Quick Check:

        Correct mapping syntax uses (key => value) [OK]
      Hint: Use parentheses and arrow for mapping syntax [OK]
      Common Mistakes:
      • Using square brackets instead of parentheses
      • Missing visibility keyword like public
      • Using commas instead of =>
      3. Consider the Solidity code:
      mapping(address => uint) public balances;
      
      function setBalance(address user, uint amount) public {
        balances[user] = amount;
      }
      
      function getBalance(address user) public view returns (uint) {
        return balances[user];
      }
      
      // After calling setBalance(0x1234..., 50), what does getBalance(0x1234...) return?
      medium
      A. 50
      B. Error
      C. Undefined
      D. 0

      Solution

      1. Step 1: Understand setBalance effect

        The function sets the balance of the given address to the specified amount, here 50.
      2. Step 2: Understand getBalance output

        Calling getBalance with the same address returns the stored value, which is 50.
      3. Final Answer:

        50 -> Option A
      4. Quick Check:

        Set then get returns stored value [OK]
      Hint: Set value then get returns that value [OK]
      Common Mistakes:
      • Assuming default zero is returned after setting
      • Thinking mapping keys are enumerable
      • Expecting an error for unset keys
      4. What is wrong with this Solidity code snippet?
      mapping(address => uint) balances;
      
      function addBalance(address user, uint amount) public {
        balances[user] += amount;
      }
      
      function getBalance(address user) public view returns (uint) {
        return balances[user];
      }
      medium
      A. The mapping is missing initialization before use
      B. The mapping keys are not stored, so balances[user] always returns zero
      C. There is no error; the code works as expected
      D. The mapping is not declared public, so balances cannot be read

      Solution

      1. Step 1: Check mapping declaration

        Mapping does not need explicit initialization; default values are zero.
      2. Step 2: Check function logic

        addBalance adds amount to the current balance; getBalance returns it. Not declaring public means no automatic getter, but manual getter exists.
      3. Final Answer:

        There is no error; the code works as expected -> Option C
      4. Quick Check:

        Mapping defaults and manual getter work fine [OK]
      Hint: Manual getter works even if mapping not public [OK]
      Common Mistakes:
      • Assuming mapping must be public to read values
      • Thinking mappings need explicit initialization
      • Confusing mapping keys storage with values
      5. You want to track ownership of unique items by users using mappings in Solidity. Which approach correctly allows you to check if a user owns a specific item ID with a direct lookup starting from the user address?
      hard
      A. mapping(address => mapping(uint => bool)) ownsItem; // nested mapping user to item ID to ownership
      B. mapping(uint => address) itemToOwner; // maps item ID to owner address
      C. mapping(address => uint) ownerToItem; // stores one item per user
      D. mapping(address => uint[]) userItems; // mapping to array of item IDs

      Solution

      1. Step 1: Understand ownership tracking needs

        We need to check if a user owns a specific item ID, so a direct boolean check is best.
      2. Step 2: Analyze options

        Only mapping(address => mapping(uint => bool)) ownsItem; // nested mapping user to item ID to ownership provides a nested mapping(address => mapping(uint => bool)) ownsItem, allowing direct ownsItem[user][itemID] lookup from the user address. A limits to one item per user; B requires starting from item ID; D requires searching an array.
      3. Final Answer:

        mapping(address => mapping(uint => bool)) ownsItem; // nested mapping user to item ID to ownership -> Option A
      4. Quick Check:

        Nested mapping allows direct ownership check [OK]
      Hint: Use nested mapping for user-item ownership check [OK]
      Common Mistakes:
      • Using single mapping limiting one item per user
      • Using arrays which are not mappings
      • Confusing item-to-owner with user-to-item ownership check
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard