Transaction confirmation handling in Blockchain / Solidity - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When a blockchain transaction is sent, the system waits for confirmations to ensure it is securely recorded.
We want to understand how the time to handle these confirmations grows as the number of confirmations increases.
Analyze the time complexity of the following code snippet.
function waitForConfirmations(txHash, requiredConfirmations) {
let confirmations = 0;
while (confirmations < requiredConfirmations) {
confirmations = getConfirmations(txHash); // fetch current confirmations
sleep(1000); // wait 1 second before checking again
}
return true;
}
This code waits until a transaction reaches the required number of confirmations by repeatedly checking the current count.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The while loop that repeatedly calls
getConfirmations. - How many times: It runs until the required number of confirmations is reached.
Each confirmation requires one loop cycle, so the total checks grow directly with the number of confirmations needed.
| Input Size (requiredConfirmations) | Approx. Operations (loop cycles) |
|---|---|
| 10 | 10 checks |
| 100 | 100 checks |
| 1000 | 1000 checks |
Pattern observation: The number of operations grows in a straight line as confirmations increase.
Time Complexity: O(n)
This means the time to confirm grows directly in proportion to the number of confirmations required.
[X] Wrong: "The confirmation check happens only once, so time is constant regardless of confirmations."
[OK] Correct: The code checks repeatedly until all confirmations arrive, so more confirmations mean more checks and more time.
Understanding how waiting for confirmations scales helps you reason about blockchain transaction reliability and responsiveness in real projects.
"What if the code checked confirmations in batches instead of one by one? How would the time complexity change?"
Practice
transaction confirmation mean in blockchain?Solution
Step 1: Understand transaction confirmation meaning
Transaction confirmation means the blockchain network has recorded the transaction securely.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.Final Answer:
It means the transaction is safely recorded on the blockchain. -> Option DQuick Check:
Transaction confirmation = safe recording [OK]
- Confusing confirmation with transaction pending state
- Thinking confirmation means deletion or reversal
- Assuming confirmation means user approval
Solution
Step 1: Identify correct async syntax
To wait for a promise in JavaScript, useawaitbefore the async function call.Step 2: Match function name for confirmation
The standard method to wait for transaction confirmation iswait(), notconfirm().Final Answer:
await transaction.wait(); -> Option CQuick Check:
Use await with wait() to confirm transaction [OK]
- Forgetting to use await causing unresolved promises
- Using wrong method name like confirm()
- Calling wait() without await leading to no pause
async function confirmTx(tx) {
const receipt = await tx.wait();
return receipt.confirmations;
}
const fakeTx = {
wait: () => Promise.resolve({ confirmations: 3 })
};
confirmTx(fakeTx).then(console.log);Solution
Step 1: Understand async function behavior
The functionconfirmTxawaitstx.wait()which resolves to an object withconfirmations: 3.Step 2: Return and log confirmations
The function returnsreceipt.confirmationswhich is 3, andthen(console.log)prints 3.Final Answer:
3 -> Option AQuick Check:
Await wait() returns confirmations = 3 [OK]
- Expecting Promise instead of resolved value
- Confusing property name confirmations
- Missing await causing Promise output
async function waitForConfirmation(tx) {
const receipt = tx.wait();
console.log(receipt.confirmations);
}
waitForConfirmation(transaction);Solution
Step 1: Check async call usage
The function callstx.wait()which returns a Promise, but does not useawait.Step 2: Understand consequences of missing await
Withoutawait,receiptis a Promise object, soreceipt.confirmationsis undefined.Final Answer:
Missing await before tx.wait() -> Option AQuick Check:
Always await async calls to get resolved value [OK]
- Not using await with async functions
- Assuming Promise has properties directly
- Misplacing console.log inside async function
Solution
Step 1: Use wait() with confirmation count
Callingtx.wait(5)waits until at least 5 confirmations are reached.Step 2: Check confirmations before proceeding
Check ifreceipt.confirmations >= 5to ensure safe confirmation before callingproceed().Final Answer:
const receipt = await tx.wait(5); if(receipt.confirmations >= 5) { proceed(); } -> Option BQuick Check:
wait(5) ensures 5 confirmations before proceed [OK]
- Waiting fewer confirmations than needed
- Checking for exact 5 instead of >= 5
- Proceeding when confirmations are less than required
