Bird
Raised Fist0
Blockchain / Solidityprogramming~5 mins

Blocks, chains, and hashing in Blockchain / Solidity - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a block in a blockchain?
A block is a container that holds a list of transactions and some metadata like a timestamp and a reference to the previous block.
Click to reveal answer
beginner
Why do blocks form a chain in blockchain?
Blocks form a chain by linking each block to the previous one using a reference called a hash, creating a secure and ordered sequence.
Click to reveal answer
beginner
What is hashing in the context of blockchain?
Hashing is a process that turns data into a fixed-size string of characters, which acts like a digital fingerprint for the block's content.
Click to reveal answer
intermediate
How does hashing help secure the blockchain?
Hashing makes it easy to detect changes because even a tiny change in the block data changes the hash completely, breaking the chain if tampered.
Click to reveal answer
intermediate
What is the role of the previous block's hash in a new block?
It links the new block to the previous one, ensuring the chain's order and integrity by making blocks dependent on each other.
Click to reveal answer
What does a block in a blockchain typically contain?
AA list of transactions and a reference to the previous block
BOnly a list of transactions
COnly a timestamp
DUser passwords
What is the purpose of hashing in blockchain?
ATo encrypt user data
BTo create a unique fingerprint of block data
CTo speed up transactions
DTo store passwords
What happens if data in a block changes after hashing?
AThe block deletes itself
BNothing changes
CThe previous block changes
DThe hash changes, breaking the chain
How does a blockchain ensure the order of blocks?
ABy linking each block to the previous block's hash
BBy using timestamps only
CBy sorting blocks alphabetically
DBy user approval
Why is the chain structure important in blockchain?
AIt hides data from users
BIt makes transactions faster
CIt secures data by making blocks dependent on each other
DIt stores user passwords
Explain how blocks are linked together in a blockchain and why this is important.
Think about how a chain is formed by connecting links.
You got /3 concepts.
    Describe what hashing does in a blockchain and how it helps keep data secure.
    Imagine a fingerprint that changes if you change even a small detail.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a hash in a blockchain block?
      easy
      A. To create a unique fingerprint of the block's data
      B. To store the block's timestamp
      C. To list all transactions in the block
      D. To connect the block to the internet

      Solution

      1. Step 1: Understand what a hash does

        A hash is a unique code generated from the block's data, like a fingerprint.
      2. Step 2: Identify the purpose of the hash in blockchain

        The hash ensures the block's data cannot be changed without detection.
      3. Final Answer:

        To create a unique fingerprint of the block's data -> Option A
      4. Quick Check:

        Hash = Unique fingerprint [OK]
      Hint: Hash = unique code for block data [OK]
      Common Mistakes:
      • Confusing hash with timestamp
      • Thinking hash stores transactions
      • Believing hash connects to internet
      2. Which of the following is the correct way to represent a block's hash in code?
      easy
      A. hash = block_data + SHA256
      B. hash = SHA256(block_data)
      C. hash = SHA256(block_data + hash)
      D. hash = block_data.hash()

      Solution

      1. Step 1: Recognize the correct hash function usage

        SHA256 is a common hash function applied to block data to get the hash.
      2. Step 2: Check each option for correct syntax

        hash = SHA256(block_data) correctly applies SHA256 to block_data. Others misuse the function or syntax.
      3. Final Answer:

        hash = SHA256(block_data) -> Option B
      4. Quick Check:

        Correct hash function call = hash = SHA256(block_data) [OK]
      Hint: Hash function called with data inside parentheses [OK]
      Common Mistakes:
      • Adding hash function as string instead of calling it
      • Using incorrect syntax for hash function
      • Confusing method call with variable
      3. Consider this simplified Python code for creating a blockchain block hash:
      import hashlib
      block_data = 'Block 1 data'
      hash_object = hashlib.sha256(block_data.encode())
      block_hash = hash_object.hexdigest()
      print(block_hash)
      What will be the output type of block_hash?
      medium
      A. integer
      B. bytes
      C. string
      D. list

      Solution

      1. Step 1: Understand hashlib.sha256 and hexdigest()

        hashlib.sha256 returns a hash object; hexdigest() converts it to a hex string.
      2. Step 2: Identify the output type of hexdigest()

        hexdigest() returns a string representing the hash in hexadecimal form.
      3. Final Answer:

        string -> Option C
      4. Quick Check:

        hexdigest() output = string [OK]
      Hint: hexdigest() returns string, digest() returns bytes [OK]
      Common Mistakes:
      • Thinking hexdigest() returns bytes
      • Confusing output with integer or list
      • Ignoring .encode() usage
      4. The following code tries to link blocks in a chain by storing the previous block's hash. What is the error?
      class Block:
          def __init__(self, data, prev_hash):
              self.data = data
              self.prev_hash = prev_hash
      
      block1 = Block('First block', None)
      block2 = Block('Second block', block1.hash)
      
      medium
      A. block1.hash is not defined before use
      B. prev_hash should be a list, not a single value
      C. None cannot be used as prev_hash
      D. block2 data should be a number, not string

      Solution

      1. Step 1: Check block1 attributes

        block1 has data and prev_hash but no attribute named 'hash'.
      2. Step 2: Identify usage of undefined attribute

        block2 tries to use block1.hash which does not exist, causing an error.
      3. Final Answer:

        block1.hash is not defined before use -> Option A
      4. Quick Check:

        Accessing undefined attribute = block1.hash is not defined before use [OK]
      Hint: Check if attribute exists before using it [OK]
      Common Mistakes:
      • Assuming hash attribute exists by default
      • Confusing prev_hash type requirements
      • Thinking data type causes error
      5. You want to create a simple blockchain where each block stores its own hash and the previous block's hash. Which code snippet correctly computes and links the hashes for two blocks?
      hard
      A. import hashlib class Block: def __init__(self, data, prev_hash): self.data = data self.prev_hash = prev_hash self.hash = hashlib.sha256(data.encode()).hexdigest() block1 = Block('Block 1', '0') block2 = Block('Block 2', block1.hash)
      B. import hashlib class Block: def __init__(self, data): self.data = data self.hash = hashlib.sha256(data.encode()).hexdigest() block1 = Block('Block 1') block2 = Block('Block 2') block2.prev_hash = block1.hash
      C. class Block: def __init__(self, data, prev_hash): self.data = data self.prev_hash = prev_hash self.hash = data + prev_hash block1 = Block('Block 1', '0') block2 = Block('Block 2', block1.hash)
      D. import hashlib class Block: def __init__(self, data, prev_hash): self.data = data self.prev_hash = prev_hash self.hash = hashlib.sha256((data + prev_hash).encode()).hexdigest() block1 = Block('Block 1', '0') block2 = Block('Block 2', block1.hash)

      Solution

      1. Step 1: Check hash calculation includes previous hash

        The correct implementation computes the hash from both data and prev_hash: self.hash = hashlib.sha256((data + prev_hash).encode()).hexdigest(), ensuring secure linking.
      2. Step 2: Verify other options

        B: prev_hash set after hash computation (hash ignores prev_hash); C: no hashing, just concatenation; D: hash ignores prev_hash.
      3. Final Answer:

        self.hash = hashlib.sha256((data + prev_hash).encode()).hexdigest() -> Option D
      4. Quick Check:

        Hash(data + prev_hash) [OK]
      Hint: Hash must include previous hash to link blocks [OK]
      Common Mistakes:
      • Not including prev_hash in hash calculation
      • Assigning prev_hash after block creation
      • Using plain concatenation without hashing
      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