Bird
Raised Fist0
Blockchain / Solidityprogramming~20 mins

Why data location affects cost in Blockchain / Solidity - Challenge Your Understanding

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Blockchain Data Cost Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Why does storing data on-chain cost more than off-chain?

In blockchain systems, storing data directly on the blockchain (on-chain) is often more expensive than storing it outside the blockchain (off-chain). Why is this the case?

ABecause off-chain data is encrypted, making it cheaper to store
BBecause on-chain data is stored in a centralized server, which charges fees
CBecause on-chain data must be stored by every node, increasing resource use and cost
DBecause off-chain data is stored in the cloud, which is always free
Attempts:
2 left
💡 Hint

Think about how blockchain nodes keep copies of the data.

❓ Predict Output
intermediate
2:00remaining
What is the output of this blockchain storage cost calculation?

Consider this simplified Python code that calculates cost based on data size and location:

def storage_cost(size_kb, location):
    base_cost = 0.01  # base cost per KB
    if location == 'on-chain':
        multiplier = 10  # on-chain storage is 10x more expensive
    else:
        multiplier = 1
    return size_kb * base_cost * multiplier

print(storage_cost(100, 'on-chain'))

What is the output?

A0.1
B1.0
C100.0
D10.0
Attempts:
2 left
💡 Hint

Multiply size by base cost and multiplier.

🔧 Debug
advanced
2:30remaining
Identify the error in this blockchain data cost function

Here is a Python function to calculate storage cost. It should return the cost for given data size and location. Find the error that causes it to always return size_mb * 0.05.

def calc_cost(size_mb, location):
    cost_per_mb = 0.05
    if location == 'on-chain':
        cost_per_mb * 20
    else:
        cost_per_mb * 1
    return size_mb * cost_per_mb

print(calc_cost(5, 'on-chain'))
AThe multiplier is not assigned back to cost_per_mb, so cost_per_mb stays 0.05
BThe function uses size_mb instead of size_kb, causing wrong calculation
CThe return statement is missing parentheses
DThe if condition uses '==' instead of '=' causing syntax error
Attempts:
2 left
💡 Hint

Look at how the multiplier is applied to cost_per_mb.

📝 Syntax
advanced
2:00remaining
Which option causes a syntax error in this smart contract snippet?

Given this Solidity-like pseudocode snippet for storing data location:

mapping(address => string) public dataLocation;

function setDataLocation(address user, string memory location) public {
    dataLocation[user] = location
}

Which option below will cause a syntax error?

AMissing semicolon after assignment: dataLocation[user] = location
BUsing 'memory' keyword with string parameter
CUsing 'public' visibility for mapping
DFunction missing return type
Attempts:
2 left
💡 Hint

Check punctuation at the end of statements.

🚀 Application
expert
3:00remaining
How does data location affect transaction fees in blockchain?

Imagine a blockchain where storing 1 KB on-chain costs 0.02 tokens, and storing 1 KB off-chain costs 0.001 tokens. A user wants to store 500 KB of data. They can choose to store all on-chain, all off-chain, or split 300 KB on-chain and 200 KB off-chain.

Which option results in the lowest total cost?

A300 KB off-chain + 200 KB on-chain: 4.3 tokens
BAll 500 KB off-chain: 0.5 tokens
C300 KB on-chain + 200 KB off-chain: 6.2 tokens
DAll 500 KB on-chain: 10 tokens
Attempts:
2 left
💡 Hint

Calculate cost for each scenario by multiplying size by cost per KB.

Practice

(1/5)
1. Why does storing data directly on the blockchain usually cost more than storing it off-chain?
easy
A. Because off-chain data is always public and on-chain data is private
B. Because on-chain data uses shared network resources and requires consensus from all nodes
C. Because on-chain data is stored only temporarily
D. Because off-chain data is encrypted and on-chain data is not

Solution

  1. Step 1: Understand blockchain data storage

    On-chain data is stored by all nodes in the network, requiring consensus and replication.
  2. Step 2: Recognize resource usage impact

    This replication uses shared network resources, making on-chain storage more expensive than off-chain.
  3. Final Answer:

    Because on-chain data uses shared network resources and requires consensus from all nodes -> Option B
  4. Quick Check:

    On-chain storage costs more due to network resource use [OK]
Hint: On-chain means shared network storage, so it costs more [OK]
Common Mistakes:
  • Thinking off-chain data is always public
  • Assuming on-chain data is temporary
  • Confusing encryption with cost
2. Which of the following is the correct way to describe storing data off-chain in a blockchain app?
easy
A. Storing data on the blockchain ledger directly
B. Storing data only in smart contract variables
C. Storing data in external databases or storage systems linked to the blockchain
D. Storing data by broadcasting it to all network nodes without consensus

Solution

  1. Step 1: Define off-chain storage

    Off-chain means data is stored outside the blockchain, often in external databases or storage systems.
  2. Step 2: Match options to definition

    Storing data in external databases or storage systems linked to the blockchain correctly describes off-chain storage as external linked storage, unlike on-chain ledger or smart contract variables.
  3. Final Answer:

    Storing data in external databases or storage systems linked to the blockchain -> Option C
  4. Quick Check:

    Off-chain = external storage linked to blockchain [OK]
Hint: Off-chain means outside blockchain, usually external databases [OK]
Common Mistakes:
  • Confusing on-chain ledger with off-chain storage
  • Thinking smart contract variables are off-chain
  • Believing broadcasting without consensus is off-chain storage
3. Consider a blockchain app that stores user profiles. If storing 1 KB on-chain costs 0.01 ETH and storing off-chain costs 0.001 ETH, what is the cost difference for storing 100 KB on-chain vs off-chain?
medium
A. 0.9 ETH more for on-chain storage
B. 0.01 ETH more for on-chain storage
C. 1 ETH more for on-chain storage
D. No cost difference

Solution

  1. Step 1: Calculate on-chain cost for 100 KB

    100 KB * 0.01 ETH/KB = 1 ETH total on-chain cost.
  2. Step 2: Calculate off-chain cost for 100 KB

    100 KB * 0.001 ETH/KB = 0.1 ETH total off-chain cost.
  3. Step 3: Find cost difference

    1 ETH - 0.1 ETH = 0.9 ETH more for on-chain.
  4. Final Answer:

    0.9 ETH more for on-chain storage -> Option A
  5. Quick Check:

    On-chain cost > off-chain cost by 0.9 ETH [OK]
Hint: Multiply size by cost per KB, compare totals [OK]
Common Mistakes:
  • Multiplying incorrectly or mixing units
  • Confusing which cost is higher
  • Ignoring multiplication by 100 KB
4. A developer wrote this code snippet to store user data:
storeData(userData) {
  blockchain.save(userData);
  offchain.save(userData);
}
Why might this cause unnecessary cost?
medium
A. Because offchain.save() should be called before blockchain.save()
B. Because blockchain.save() is asynchronous and offchain.save() is synchronous
C. Because userData is not encrypted before saving
D. Because storing data both on-chain and off-chain duplicates storage cost unnecessarily

Solution

  1. Step 1: Analyze storage calls

    The code stores the same data both on-chain and off-chain, duplicating storage.
  2. Step 2: Understand cost impact

    On-chain storage is costly, so duplicating data on both increases unnecessary cost.
  3. Final Answer:

    Because storing data both on-chain and off-chain duplicates storage cost unnecessarily -> Option D
  4. Quick Check:

    Duplicate storage increases cost [OK]
Hint: Avoid storing same data twice on-chain and off-chain [OK]
Common Mistakes:
  • Thinking async vs sync affects cost here
  • Assuming encryption affects storage cost directly
  • Believing call order changes cost
5. You want to design a blockchain app that stores transaction logs. To minimize cost, which approach is best?
hard
A. Store only transaction hashes on-chain and full logs off-chain
B. Store all transaction logs fully on-chain for transparency
C. Store all logs off-chain and never record anything on-chain
D. Store logs on-chain but compress them with lossy compression

Solution

  1. Step 1: Consider cost and transparency

    Storing full logs on-chain is costly; storing nothing on-chain loses trust.
  2. Step 2: Use hashes on-chain for verification

    Storing hashes on-chain keeps proof of logs without full data cost.
  3. Step 3: Keep full logs off-chain for detail

    Full logs off-chain save cost but remain accessible and verifiable.
  4. Final Answer:

    Store only transaction hashes on-chain and full logs off-chain -> Option A
  5. Quick Check:

    Hashes on-chain + full off-chain = cost-effective and verifiable [OK]
Hint: Keep proofs on-chain, full data off-chain to save cost [OK]
Common Mistakes:
  • Storing all data on-chain ignoring cost
  • Storing nothing on-chain losing trust
  • Using lossy compression risking data integrity
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