Bird
Raised Fist0
Blockchain / Solidityprogramming~30 mins

Constructor function in Blockchain / Solidity - Mini Project: Build & Apply

Choose your learning style10 modes available
Constructor Function in a Blockchain Smart Contract
📖 Scenario: You are creating a simple blockchain smart contract to store and manage a greeting message. This contract will have a constructor function that sets the initial greeting when the contract is deployed.
🎯 Goal: Build a smart contract with a constructor function that initializes a greeting message. Then, display the greeting message stored in the contract.
📋 What You'll Learn
Create a contract named GreetingContract
Add a public string variable called greeting
Write a constructor function that takes a string parameter called _greeting and sets the greeting variable
Add a function called getGreeting that returns the current greeting
Print the greeting message by calling getGreeting
💡 Why This Matters
🌍 Real World
Smart contracts on blockchains often need constructor functions to set initial data like owner addresses or configuration settings when deployed.
💼 Career
Understanding constructor functions is essential for blockchain developers to create secure and functional smart contracts.
Progress0 / 4 steps
1
Create the contract and greeting variable
Create a contract named GreetingContract and inside it, declare a public string variable called greeting.
Blockchain / Solidity
Hint

Use contract GreetingContract {} to start the contract and declare string public greeting; inside.

2
Add the constructor function
Add a constructor function inside GreetingContract that takes a string parameter called _greeting and sets the greeting variable to _greeting.
Blockchain / Solidity
Hint

Use constructor(string memory _greeting) { greeting = _greeting; } inside the contract.

3
Add a function to get the greeting
Add a public view function called getGreeting that returns the string greeting.
Blockchain / Solidity
Hint

Define function getGreeting() public view returns (string memory) { return greeting; }.

4
Display the greeting message
Write a comment showing how to call getGreeting to display the greeting message stored in the contract.
Blockchain / Solidity
Hint

Write a comment like // Call getGreeting() to display the greeting message stored in the contract.

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