Function declaration and syntax in Blockchain / Solidity - Time & Space Complexity
When we write functions in blockchain code, it's important to know how the time it takes to run changes as the input grows.
We want to find out how the function's running time changes when we give it more data.
Analyze the time complexity of the following code snippet.
function sumArray(uint[] memory numbers) public pure returns (uint) {
uint total = 0;
for (uint i = 0; i < numbers.length; i++) {
total += numbers[i];
}
return total;
}
This function adds up all the numbers in an array and returns the total sum.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: The for-loop that goes through each number in the array.
- How many times: It runs once for every item in the input array.
As the array gets bigger, the function does more additions, one for each number.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 additions |
| 100 | 100 additions |
| 1000 | 1000 additions |
Pattern observation: The work grows directly with the number of items. Double the items, double the work.
Time Complexity: O(n)
This means the time to finish grows in a straight line with the input size.
[X] Wrong: "The function runs in the same time no matter how big the array is."
[OK] Correct: Because the function adds each number one by one, more numbers mean more work and more time.
Understanding how function time grows with input size helps you explain your code clearly and shows you know how to write efficient blockchain programs.
"What if we changed the function to call itself recursively for each number instead of using a loop? How would the time complexity change?"
Practice
transferFunds in a blockchain smart contract?Solution
Step 1: Identify the common function declaration keyword
In many blockchain languages like Solidity, functions start with the keywordfunction.Step 2: Check the syntax structure
The correct syntax isfunction functionName() { }, sofunction transferFunds() { }is correct.Final Answer:
function transferFunds() { } -> Option BQuick Check:
Function declaration uses 'function' keyword [OK]
- Using 'def' instead of 'function'
- Placing 'function' after the name
- Using 'func' which is not standard here
amount?Solution
Step 1: Recognize parameter syntax in function declaration
Parameters are placed inside parentheses separated by commas if multiple.Step 2: Validate each option's syntax
function send(amount) { } uses parentheses correctly:function send(amount) { }. Others misuse brackets, arrows, or omit parentheses.Final Answer:
function send(amount) { } -> Option AQuick Check:
Parameters go inside parentheses [OK]
- Omitting parentheses around parameters
- Using square brackets instead of parentheses
- Using arrow syntax incorrectly
function multiply(x, y) { return x * y; }
multiply(3, 4);Solution
Step 1: Understand the function logic
The function multiplies two inputsxandyand returns the product.Step 2: Calculate the result for inputs 3 and 4
3 multiplied by 4 equals 12.Final Answer:
12 -> Option DQuick Check:
3 * 4 = 12 [OK]
- Adding instead of multiplying
- Concatenating numbers as strings
- Assuming syntax error without checking code
function deposit(amount) {
balance += amount
}Solution
Step 1: Check syntax inside the function body
Statements inside functions usually require semicolons to end lines.Step 2: Identify missing semicolon
The linebalance += amountlacks a semicolon at the end.Final Answer:
Missing semicolon after statement -> Option AQuick Check:
Statements need semicolons [OK]
- Ignoring semicolon requirements
- Thinking return is mandatory
- Assuming function name is wrong
calculateFee that takes a transaction amount and returns 2% fee only if the amount is above 1000. Which is the correct function?Solution
Step 1: Understand conditional return logic
The function must check ifamountis greater than 1000 and return 2% fee; otherwise, return 0.Step 2: Validate syntax correctness
function calculateFee(amount) { if (amount > 1000) { return amount * 0.02; } else { return 0; } } uses proper if-else syntax with braces and returns both cases correctly. Others have syntax errors or missing else return.Final Answer:
function calculateFee(amount) { if (amount > 1000) { return amount * 0.02; } else { return 0; } } -> Option CQuick Check:
Use if-else with braces for conditional returns [OK]
- Missing else return causes undefined output
- Incorrect if syntax without parentheses or braces
- Using Python-style if-else in blockchain code
Ready to prove it?
Pass the test and this pattern moves unknown
