Bird
Raised Fist0
Blockchain / Solidityprogramming~20 mins

Transaction confirmation handling in Blockchain / Solidity - Practice Problems & Coding Challenges

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
Challenge - 5 Problems
🎖️
Blockchain Confirmation Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this transaction confirmation check?
Consider this pseudocode for checking transaction confirmations on a blockchain. What will be the printed output?
Blockchain / Solidity
confirmations = 3
required_confirmations = 6
if confirmations >= required_confirmations:
    print("Transaction confirmed")
else:
    print(f"Waiting for {required_confirmations - confirmations} more confirmations")
AWaiting for 3 more confirmations
BTransaction confirmed
CWaiting for 6 more confirmations
DError: variable not defined
Attempts:
2 left
💡 Hint
Check if the current confirmations meet or exceed the required confirmations.
🧠 Conceptual
intermediate
1:30remaining
Which statement best describes transaction confirmation?
In blockchain, what does a transaction confirmation mean?
AThe transaction has been included in a block and that block is part of the longest chain.
BThe transaction is waiting in the mempool to be mined.
CThe transaction has been rejected by the network.
DThe transaction is being broadcast to peers.
Attempts:
2 left
💡 Hint
Think about when a transaction is considered secure and irreversible.
🔧 Debug
advanced
2:30remaining
Why does this confirmation count code raise an error?
This code snippet is intended to count confirmations but raises an error. Identify the cause.
Blockchain / Solidity
def check_confirmations(tx_hash):
    confirmations = blockchain.get_confirmations(tx_hash)
    if confirmations > 0:
        return confirmations
    else:
        return 0
AIndentationError due to wrong indentation
BNameError because blockchain is not defined
CTypeError because confirmations is not an integer
DSyntaxError due to missing colon after if statement
Attempts:
2 left
💡 Hint
Check the syntax of the if statement line.
🚀 Application
advanced
2:00remaining
How many confirmations does this code wait for before proceeding?
Given this code snippet, how many confirmations does it require before printing 'Confirmed'?
Blockchain / Solidity
required_confirmations = 12
current_confirmations = 10
while current_confirmations < required_confirmations:
    print(f"Current: {current_confirmations}, waiting...")
    current_confirmations += 1
print("Confirmed")
A11
B12
C2
D10
Attempts:
2 left
💡 Hint
Look at the condition that stops the loop.
Predict Output
expert
3:00remaining
What is the output of this asynchronous confirmation checker?
This JavaScript async function checks confirmations. What will it print?
Blockchain / Solidity
async function checkTx(txId) {
  let confirmations = 0;
  while (confirmations < 3) {
    confirmations++;
    console.log(`Confirmations: ${confirmations}`);
    await new Promise(resolve => setTimeout(resolve, 100));
  }
  console.log('Transaction confirmed');
}
checkTx('abc123');
AConfirmations: 0\nConfirmations: 1\nConfirmations: 2
BTransaction confirmed
CConfirmations: 1\nConfirmations: 2\nConfirmations: 3\nTransaction confirmed
DSyntaxError due to await outside async function
Attempts:
2 left
💡 Hint
The function increments confirmations and waits 100ms each loop until 3 confirmations.

Practice

(1/5)
1. What does transaction confirmation mean in blockchain?
easy
A. It means the transaction is deleted from the blockchain.
B. It means the transaction is reversed by the user.
C. It means the transaction is pending and not yet sent.
D. It means the transaction is safely recorded on the blockchain.

Solution

  1. Step 1: Understand transaction confirmation meaning

    Transaction confirmation means the blockchain network has recorded the transaction securely.
  2. Step 2: Compare options with definition

    Only It means the transaction is safely recorded on the blockchain. correctly states that confirmation means safe recording on the blockchain.
  3. Final Answer:

    It means the transaction is safely recorded on the blockchain. -> Option D
  4. Quick Check:

    Transaction confirmation = safe recording [OK]
Hint: Confirmation means transaction is securely recorded [OK]
Common Mistakes:
  • Confusing confirmation with transaction pending state
  • Thinking confirmation means deletion or reversal
  • Assuming confirmation means user approval
2. Which of the following is the correct way to wait for a transaction confirmation in JavaScript using async/await?
easy
A. await transaction.confirm();
B. transaction.wait();
C. await transaction.wait();
D. transaction.confirm();

Solution

  1. Step 1: Identify correct async syntax

    To wait for a promise in JavaScript, use await before the async function call.
  2. Step 2: Match function name for confirmation

    The standard method to wait for transaction confirmation is wait(), not confirm().
  3. Final Answer:

    await transaction.wait(); -> Option C
  4. Quick Check:

    Use await with wait() to confirm transaction [OK]
Hint: Use await with wait() method to confirm transaction [OK]
Common Mistakes:
  • Forgetting to use await causing unresolved promises
  • Using wrong method name like confirm()
  • Calling wait() without await leading to no pause
3. What will be the output of this JavaScript code snippet?
async function confirmTx(tx) {
  const receipt = await tx.wait();
  return receipt.confirmations;
}

const fakeTx = {
  wait: () => Promise.resolve({ confirmations: 3 })
};

confirmTx(fakeTx).then(console.log);
medium
A. 3
B. Promise {<pending>}
C. undefined
D. Error: wait is not a function

Solution

  1. Step 1: Understand async function behavior

    The function confirmTx awaits tx.wait() which resolves to an object with confirmations: 3.
  2. Step 2: Return and log confirmations

    The function returns receipt.confirmations which is 3, and then(console.log) prints 3.
  3. Final Answer:

    3 -> Option A
  4. Quick Check:

    Await wait() returns confirmations = 3 [OK]
Hint: Await returns resolved value, then log confirmations [OK]
Common Mistakes:
  • Expecting Promise instead of resolved value
  • Confusing property name confirmations
  • Missing await causing Promise output
4. Identify the error in this code snippet for waiting transaction confirmation:
async function waitForConfirmation(tx) {
  const receipt = tx.wait();
  console.log(receipt.confirmations);
}

waitForConfirmation(transaction);
medium
A. Missing await before tx.wait()
B. Incorrect property name confirmations
C. Function should not be async
D. console.log should be outside the function

Solution

  1. Step 1: Check async call usage

    The function calls tx.wait() which returns a Promise, but does not use await.
  2. Step 2: Understand consequences of missing await

    Without await, receipt is a Promise object, so receipt.confirmations is undefined.
  3. Final Answer:

    Missing await before tx.wait() -> Option A
  4. Quick Check:

    Always await async calls to get resolved value [OK]
Hint: Always await async calls to get actual result [OK]
Common Mistakes:
  • Not using await with async functions
  • Assuming Promise has properties directly
  • Misplacing console.log inside async function
5. You want to wait for at least 5 confirmations before proceeding with a transaction. Which code snippet correctly implements this logic?
hard
A. const receipt = await tx.wait(5); if(receipt.confirmations < 5) { proceed(); }
B. const receipt = await tx.wait(5); if(receipt.confirmations >= 5) { proceed(); }
C. const receipt = await tx.wait(3); if(receipt.confirmations >= 5) { proceed(); }
D. const receipt = await tx.wait(); if(receipt.confirmations == 5) { proceed(); }

Solution

  1. Step 1: Use wait() with confirmation count

    Calling tx.wait(5) waits until at least 5 confirmations are reached.
  2. Step 2: Check confirmations before proceeding

    Check if receipt.confirmations >= 5 to ensure safe confirmation before calling proceed().
  3. Final Answer:

    const receipt = await tx.wait(5); if(receipt.confirmations >= 5) { proceed(); } -> Option B
  4. Quick Check:

    wait(5) ensures 5 confirmations before proceed [OK]
Hint: Use wait(5) and check confirmations >= 5 before proceed [OK]
Common Mistakes:
  • Waiting fewer confirmations than needed
  • Checking for exact 5 instead of >= 5
  • Proceeding when confirmations are less than required