Bird
Raised Fist0
Blockchain / Solidityprogramming~5 mins

Constructor function in Blockchain / Solidity - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: Constructor function
O(n)
Understanding Time Complexity

When we create a new blockchain contract, the constructor function runs once to set up initial values.

We want to know how the time it takes to run the constructor changes as we add more data.

Scenario Under Consideration

Analyze the time complexity of the following constructor function.


contract SimpleContract {
  uint[] public numbers;

  constructor(uint[] memory initialNumbers) {
    for (uint i = 0; i < initialNumbers.length; i++) {
      numbers.push(initialNumbers[i]);
    }
  }
}
    

This constructor copies each number from the input list into the contract's storage one by one.

Identify Repeating Operations

Look for loops or repeated steps.

  • Primary operation: The for-loop that runs once for each number in the input array.
  • How many times: Exactly as many times as the length of the input array.
How Execution Grows With Input

Each extra number means one more step in the loop.

Input Size (n)Approx. Operations
1010 steps
100100 steps
10001000 steps

Pattern observation: The time grows directly with the number of items; double the items, double the steps.

Final Time Complexity

Time Complexity: O(n)

This means the constructor takes longer in a straight line as you add more numbers.

Common Mistake

[X] Wrong: "The constructor runs in constant time no matter how many numbers we add."

[OK] Correct: Because the constructor loops through each number, more numbers mean more steps, so time grows with input size.

Interview Connect

Understanding how constructor time grows helps you write efficient contracts and explain your code clearly in real projects.

Self-Check

"What if we replaced the loop with a fixed number of assignments? How would the time complexity change?"

Practice

(1/5)
1.

What is the main purpose of a constructor function in a blockchain smart contract?

easy
A. To execute code every time a function is called
B. To destroy the contract and remove it from the blockchain
C. To set initial values when the contract is deployed
D. To transfer tokens between users

Solution

  1. Step 1: Understand the role of constructor

    A constructor runs only once when the contract is deployed to set initial values.
  2. Step 2: Compare with other functions

    Other functions run multiple times; constructor is special for initialization only.
  3. Final Answer:

    To set initial values when the contract is deployed -> Option C
  4. Quick Check:

    Constructor sets initial values = B [OK]
Hint: Constructor runs once at deployment to set starting values [OK]
Common Mistakes:
  • Thinking constructor runs on every function call
  • Confusing constructor with regular functions
  • Believing constructor can be called multiple times
2.

Which of the following is the correct syntax to declare a constructor in Solidity?

contract MyContract {
    ? {
        // initialization code
    }
}
easy
A. function constructor() public
B. constructor() public
C. def constructor()
D. init() public

Solution

  1. Step 1: Recall Solidity constructor syntax

    In Solidity, the constructor is declared with the keyword constructor() without the function keyword.
  2. Step 2: Check options for correct syntax

    constructor() public matches the correct syntax: constructor() public. function constructor() public wrongly uses function constructor(), which is outdated. def constructor() uses Python syntax. init() public uses a wrong name.
  3. Final Answer:

    constructor() public -> Option B
  4. Quick Check:

    Solidity constructor uses 'constructor()' keyword = C [OK]
Hint: Use 'constructor()' keyword without 'function' in Solidity [OK]
Common Mistakes:
  • Using 'function constructor()' which is deprecated
  • Using other function names like 'init()'
  • Mixing syntax from other languages
3.

What will be the output of the following Solidity contract after deployment?

contract Simple {
    uint public value;
    constructor(uint _value) {
        value = _value;
    }
}

Assuming the contract is deployed with _value = 42, what is the value of value?

medium
A. 42
B. Compilation error
C. Undefined
D. 0

Solution

  1. Step 1: Understand constructor parameter usage

    The constructor takes _value and assigns it to the state variable value.
  2. Step 2: Check deployment argument effect

    Since the contract is deployed with _value = 42, value will be set to 42.
  3. Final Answer:

    42 -> Option A
  4. Quick Check:

    Constructor sets value to 42 at deployment = D [OK]
Hint: Constructor sets state variables from deployment arguments [OK]
Common Mistakes:
  • Assuming default zero value instead of passed value
  • Thinking constructor runs after deployment
  • Confusing variable names
4.

Identify the error in this Solidity contract constructor:

contract Test {
    uint public x;
    constructor() {
        x = 10
    }
}
medium
A. Constructor cannot assign values to variables
B. Constructor name should be Test
C. State variable x is not declared correctly
D. Missing semicolon after x = 10

Solution

  1. Step 1: Check Solidity syntax rules

    Each statement must end with a semicolon ;. The line x = 10 is missing a semicolon.
  2. Step 2: Verify constructor naming

    Since Solidity 0.4.22+, constructors use the constructor() keyword, so naming is correct.
  3. Final Answer:

    Missing semicolon after x = 10 -> Option D
  4. Quick Check:

    Statements need semicolons in Solidity = A [OK]
Hint: Always end Solidity statements with semicolon [OK]
Common Mistakes:
  • Using old constructor naming style
  • Forgetting semicolons
  • Thinking constructor can't assign variables
5.

You want to create a smart contract that stores an owner address set only once during deployment and cannot be changed later. Which constructor code snippet correctly achieves this?

contract OwnerContract {
    address public owner;
    ?
}
hard
A. constructor() { owner = msg.sender; }
B. function OwnerContract(address _owner) { owner = _owner; }
C. constructor(address _owner) { owner = _owner; }
D. constructor() { owner = address(0); }

Solution

  1. Step 1: Understand owner initialization best practice

    Setting owner = msg.sender in the constructor assigns the deployer's address as owner once.
  2. Step 2: Evaluate options

    constructor(address _owner) { owner = _owner; } requires passing owner address manually, which is possible but less secure. function OwnerContract(address _owner) { owner = _owner; } uses old constructor syntax. constructor() { owner = address(0); } sets owner to zero address, which is invalid. constructor() { owner = msg.sender; } correctly sets owner to deployer address.
  3. Final Answer:

    constructor() { owner = msg.sender; } -> Option A
  4. Quick Check:

    Use msg.sender in constructor to set owner = A [OK]
Hint: Use msg.sender in constructor to set owner securely [OK]
Common Mistakes:
  • Using old constructor syntax
  • Setting owner to zero address
  • Passing owner address manually risking errors
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