Bird
Raised Fist0
Blockchain / Solidityprogramming~10 mins

Sidechains in Blockchain / Solidity - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Sidechains
User locks coins on Mainchain
Mainchain records lock
Sidechain verifies lock proof
Sidechain issues equivalent coins
User transacts on Sidechain
User requests withdrawal
Sidechain burns coins
Sidechain provides proof of burn
Mainchain verifies burn proof
Mainchain releases locked coins back to user
Sidechains let users move coins from the main blockchain to a separate chain and back by locking and unlocking coins with proofs.
Execution Sample
Blockchain / Solidity
lockCoinsOnMainchain(user, amount)
verifyLockOnSidechain(lockProof)
issueCoinsOnSidechain(user, amount)
burnCoinsOnSidechain(user, amount)
verifyBurnOnMainchain(burnProof)
unlockCoinsOnMainchain(user, amount)
This code shows the main steps to move coins between mainchain and sidechain using lock, verify, issue, burn, verify, and unlock.
Execution Table
StepActionInputState ChangeOutput/Result
1lockCoinsOnMainchainuser=Alice, amount=10Mainchain locks 10 coins from AlicelockProof generated
2verifyLockOnSidechainlockProofSidechain confirms lock is validlockProof verified
3issueCoinsOnSidechainuser=Alice, amount=10Sidechain credits 10 coins to AliceAlice balance on sidechain = 10
4User transacts on SidechainAlice sends 5 coins to BobAlice balance=5, Bob balance=5Transaction success
5burnCoinsOnSidechainuser=Alice, amount=5Sidechain burns 5 coins from AliceburnProof generated
6verifyBurnOnMainchainburnProofMainchain confirms burn is validburnProof verified
7unlockCoinsOnMainchainuser=Alice, amount=5Mainchain releases 5 coins back to AliceAlice balance on mainchain increased by 5
8EndN/ANo further actionsProcess complete
💡 Process stops after coins are unlocked back on mainchain to user
Variable Tracker
VariableStartAfter Step 3After Step 4After Step 5After Step 7Final
Alice_mainchain_balance10090 (locked 10)909095 (unlocked 5)95
Alice_sidechain_balance010 (issued)5 (sent 5 to Bob)0 (burned 5)00
Bob_sidechain_balance005 (received 5)555
Key Moments - 3 Insights
Why does Alice's mainchain balance decrease before she can use coins on the sidechain?
Because coins are locked on the mainchain first (see Step 1 and variable 'Alice_mainchain_balance' after Step 3), so they can't be spent there until unlocked.
How does the sidechain know it can safely issue coins to Alice?
It verifies the lock proof from the mainchain (Step 2), ensuring coins are locked and not double-spent.
Why must coins be burned on the sidechain before unlocking on the mainchain?
Burning coins on the sidechain (Step 5) prevents double spending by destroying sidechain coins before mainchain coins are released (Step 7).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is Alice's sidechain balance after Step 4?
A10
B5
C0
D15
💡 Hint
Check the 'State Change' column at Step 4 showing Alice sends 5 coins to Bob.
At which step does the mainchain release coins back to Alice?
AStep 5
BStep 6
CStep 7
DStep 3
💡 Hint
Look for 'unlockCoinsOnMainchain' action in the execution table.
If Alice did not burn coins on the sidechain, what would happen in the process?
AMainchain would not verify burn proof and not unlock coins
BSidechain would issue more coins
CMainchain would still unlock coins
DAlice's mainchain balance would increase
💡 Hint
Refer to Step 6 where mainchain verifies burn proof before unlocking coins.
Concept Snapshot
Sidechains let users move coins between blockchains.
Coins are locked on mainchain, then issued on sidechain.
Users transact on sidechain freely.
To return coins, sidechain coins are burned.
Mainchain verifies burn proof and unlocks coins.
This prevents double spending across chains.
Full Transcript
Sidechains are a way to move coins from a main blockchain to a separate blockchain and back. The process starts when a user locks coins on the mainchain, which means those coins cannot be spent there anymore. The mainchain creates a proof of this lock. The sidechain checks this proof and then issues the same amount of coins to the user on the sidechain. The user can then use these coins on the sidechain, for example sending some to another user. When the user wants to move coins back, they burn coins on the sidechain, destroying them. The sidechain creates a proof of this burn. The mainchain verifies this burn proof and then unlocks the original coins back to the user. This process ensures coins are never spent twice and keeps both chains in sync.

Practice

(1/5)
1.

What is the main purpose of a sidechain in blockchain technology?

easy
A. To store user passwords securely
B. To replace the main blockchain entirely
C. To mine new cryptocurrencies faster
D. To allow assets to move between blockchains without changing the main chain

Solution

  1. Step 1: Understand sidechain function

    Sidechains connect to a main blockchain to move assets safely without altering the main chain.
  2. Step 2: Compare options

    Only To allow assets to move between blockchains without changing the main chain describes this purpose correctly; others describe unrelated functions.
  3. Final Answer:

    To allow assets to move between blockchains without changing the main chain -> Option D
  4. Quick Check:

    Sidechains move assets safely = C [OK]
Hint: Sidechains move assets without changing main chain [OK]
Common Mistakes:
  • Thinking sidechains replace main blockchain
  • Confusing sidechains with password storage
  • Assuming sidechains speed up mining
2.

Which of the following is the correct way to describe the process of moving assets from the main chain to a sidechain?

lockOnMainChain() and issueOnSidechain() are functions.

easy
A. issueOnSidechain(); lockOnMainChain();
B. lockOnMainChain(); issueOnSidechain();
C. burnOnMainChain(); issueOnSidechain();
D. issueOnSidechain(); burnOnMainChain();

Solution

  1. Step 1: Understand asset transfer steps

    Assets are locked on the main chain first, then issued on the sidechain.
  2. Step 2: Match function order

    lockOnMainChain(); issueOnSidechain(); correctly calls lockOnMainChain() before issueOnSidechain().
  3. Final Answer:

    lockOnMainChain(); issueOnSidechain(); -> Option B
  4. Quick Check:

    Lock then issue = A [OK]
Hint: Lock assets first, then issue on sidechain [OK]
Common Mistakes:
  • Issuing before locking assets
  • Using burn instead of lock for main chain
  • Mixing function order
3.

Consider this pseudocode for moving assets from a sidechain back to the main chain:

burnOnSidechain()
unlockOnMainChain()

What will be the output if burnOnSidechain() fails?

medium
A. Assets remain locked on the main chain
B. Assets are unlocked on the main chain anyway
C. Assets are burned on the main chain
D. Assets are duplicated on both chains

Solution

  1. Step 1: Analyze burn failure effect

    If burnOnSidechain() fails, assets are not removed from the sidechain.
  2. Step 2: Understand unlock condition

    unlockOnMainChain() should only run after successful burn; if burn fails, unlock does not happen.
  3. Final Answer:

    Assets remain locked on the main chain -> Option A
  4. Quick Check:

    Burn must succeed before unlock = D [OK]
Hint: Burn sidechain assets before unlocking main chain [OK]
Common Mistakes:
  • Assuming unlock happens even if burn fails
  • Thinking assets get duplicated
  • Confusing burn with lock
4.

Find the error in this pseudocode for transferring assets to a sidechain:

lockOnMainChain()
issueOnSidechain()
unlockOnMainChain()
medium
A. Unlocking main chain assets immediately after issuing is incorrect
B. Locking assets should happen after issuing
C. Issuing on sidechain should be replaced with burning
D. Unlocking main chain assets is required here

Solution

  1. Step 1: Review transfer steps

    Assets must stay locked on the main chain until they are returned from the sidechain.
  2. Step 2: Identify incorrect unlock

    Unlocking immediately after issuing breaks asset security; unlock should happen only when assets return.
  3. Final Answer:

    Unlocking main chain assets immediately after issuing is incorrect -> Option A
  4. Quick Check:

    Unlock only after return = A [OK]
Hint: Don't unlock main chain assets too early [OK]
Common Mistakes:
  • Unlocking main chain assets too soon
  • Confusing issue with burn
  • Reversing lock and issue order
5.

You want to design a sidechain system that allows fast transactions but ensures no asset duplication. Which approach best achieves this?

Choose the correct sequence of actions when moving assets from main chain to sidechain and back.

hard
A. Issue on sidechain -> Lock on main chain -> Unlock on main chain -> Burn on sidechain
B. Burn on main chain -> Issue on sidechain -> Lock on sidechain -> Unlock on main chain
C. Lock on main chain -> Issue on sidechain -> Burn on sidechain -> Unlock on main chain
D. Unlock on main chain -> Burn on sidechain -> Lock on main chain -> Issue on sidechain

Solution

  1. Step 1: Understand asset safety steps

    To avoid duplication, assets must be locked on the main chain before issuing on sidechain, and burned on sidechain before unlocking main chain.
  2. Step 2: Match correct sequence

    Lock on main chain -> Issue on sidechain -> Burn on sidechain -> Unlock on main chain follows the correct order: lock -> issue -> burn -> unlock, ensuring assets exist only in one place at a time.
  3. Final Answer:

    Lock on main chain -> Issue on sidechain -> Burn on sidechain -> Unlock on main chain -> Option C
  4. Quick Check:

    Lock, issue, burn, unlock = B [OK]
Hint: Lock before issue; burn before unlock to avoid duplicates [OK]
Common Mistakes:
  • Issuing before locking assets
  • Unlocking main chain too early
  • Burning assets on wrong chain