Bird
Raised Fist0
Blockchain / Solidityprogramming~5 mins

Smart contract concept in Blockchain / Solidity

Choose your learning style10 modes available
Introduction

A smart contract is a small program that runs on a blockchain. It helps people make agreements automatically without needing a middleman.

When you want to automatically send money after a condition is met, like paying rent on time.
When you want to create a transparent voting system where votes are counted fairly.
When you want to track ownership of digital items, like art or game items.
When you want to make sure a deal happens only if both sides agree and follow the rules.
When you want to reduce paperwork and speed up business processes.
Syntax
Blockchain / Solidity
contract ContractName {
    // State variables
    // Functions
}

This is a basic structure of a smart contract in Solidity, a popular blockchain language.

Contracts have variables to store data and functions to do actions.

Examples
This contract stores a number and lets you set or get it.
Blockchain / Solidity
contract SimpleContract {
    uint number;

    function setNumber(uint _num) public {
        number = _num;
    }

    function getNumber() public view returns (uint) {
        return number;
    }
}
This contract lets anyone send money to the owner automatically.
Blockchain / Solidity
contract Payment {
    address payable owner;

    constructor() {
        owner = payable(msg.sender);
    }

    function pay() public payable {
        owner.transfer(msg.value);
    }
}
Sample Program

This smart contract lets two people approve an agreement. It stores their addresses and tracks if both have approved. The agreement is complete only when both say yes.

Blockchain / Solidity
pragma solidity ^0.8.0;

contract SimpleAgreement {
    address public partyA;
    address public partyB;
    bool public partyAApproved = false;
    bool public partyBApproved = false;

    constructor(address _partyB) {
        partyA = msg.sender;
        partyB = _partyB;
    }

    function approve() public {
        require(msg.sender == partyA || msg.sender == partyB, "Not authorized");
        if (msg.sender == partyA) {
            partyAApproved = true;
        } else {
            partyBApproved = true;
        }
    }

    function isAgreementComplete() public view returns (bool) {
        return partyAApproved && partyBApproved;
    }
}
OutputSuccess
Important Notes

Smart contracts run exactly as programmed without downtime or interference.

Once deployed, smart contracts cannot be changed easily, so test carefully.

They use blockchain's security to keep data safe and transparent.

Summary

Smart contracts automate agreements using code on a blockchain.

They help remove middlemen and speed up processes.

They are useful for payments, ownership, voting, and more.

Practice

(1/5)
1. What is a smart contract in blockchain technology?
easy
A. A type of cryptocurrency wallet
B. A program that runs on a blockchain to automate agreements
C. A physical contract signed by two parties
D. A blockchain mining algorithm

Solution

  1. Step 1: Understand the definition of smart contracts

    Smart contracts are computer programs that run on blockchains to automate and enforce agreements without middlemen.
  2. Step 2: Compare options with the definition

    Only A program that runs on a blockchain to automate agreements describes a program on blockchain automating agreements. Other options describe unrelated concepts.
  3. Final Answer:

    A program that runs on a blockchain to automate agreements -> Option B
  4. Quick Check:

    Smart contract = automated blockchain program [OK]
Hint: Smart contracts are code on blockchain, not physical papers [OK]
Common Mistakes:
  • Confusing smart contracts with physical contracts
  • Thinking smart contracts are wallets or mining tools
  • Assuming smart contracts require middlemen
2. Which of the following is the correct way to start a simple smart contract in Solidity?
easy
A. contract MyContract { }
B. class MyContract { }
C. function MyContract() { }
D. module MyContract { }

Solution

  1. Step 1: Recall Solidity syntax for defining contracts

    In Solidity, smart contracts start with the keyword contract followed by the contract name and braces.
  2. Step 2: Check each option's syntax

    contract MyContract { } uses contract keyword correctly. Options A, B, and C use keywords from other languages or incorrect syntax.
  3. Final Answer:

    contract MyContract { } -> Option A
  4. Quick Check:

    Solidity contracts start with 'contract' keyword [OK]
Hint: Solidity contracts start with 'contract' keyword, not class or function [OK]
Common Mistakes:
  • Using 'class' instead of 'contract' keyword
  • Confusing functions with contract declarations
  • Using module or other unrelated keywords
3. What will be the output of this Solidity function when called?
function getValue() public pure returns (uint) { return 5 + 3; }
medium
A. Error
B. 53
C. 8
D. 0

Solution

  1. Step 1: Analyze the function logic

    The function returns the sum of 5 and 3, which is 8.
  2. Step 2: Understand Solidity return behavior

    The function is marked pure and returns a uint, so it will output the calculated value 8 without errors.
  3. Final Answer:

    8 -> Option C
  4. Quick Check:

    5 + 3 = 8 [OK]
Hint: Add numbers inside function to get output quickly [OK]
Common Mistakes:
  • Thinking '5 + 3' concatenates as '53'
  • Expecting runtime error due to missing state
  • Assuming default return is zero
4. Identify the error in this Solidity smart contract snippet:
contract Test {
  uint value;
  function setValue(uint _value) public {
    value = _value
  }
}
medium
A. Missing semicolon after assignment
B. Incorrect function visibility
C. Variable 'value' should be public
D. Function name should be 'set_value'

Solution

  1. Step 1: Check syntax line by line

    The line value = _value is missing a semicolon at the end, which is required in Solidity.
  2. Step 2: Verify other parts

    Function visibility 'public' is correct, variable can be private, and function naming is valid. So only missing semicolon is error.
  3. Final Answer:

    Missing semicolon after assignment -> Option A
  4. Quick Check:

    Semicolons end statements in Solidity [OK]
Hint: Check for missing semicolons after statements [OK]
Common Mistakes:
  • Ignoring missing semicolon errors
  • Thinking function visibility is wrong
  • Assuming variable must be public
5. You want to create a smart contract that stores user balances and allows deposits only if the amount is positive. Which Solidity code snippet correctly enforces this?
hard
A. function deposit(uint amount) public { if(amount >= 0) { balances[msg.sender] = amount; } }
B. function deposit(uint amount) public { balances[msg.sender] += amount; }
C. function deposit(int amount) public { balances[msg.sender] += amount; }
D. function deposit(uint amount) public { require(amount > 0, "Amount must be positive"); balances[msg.sender] += amount; }

Solution

  1. Step 1: Check input validation for positive amount

    function deposit(uint amount) public { require(amount > 0, "Amount must be positive"); balances[msg.sender] += amount; } uses require(amount > 0) to ensure only positive deposits are accepted.
  2. Step 2: Compare other options for correctness

    function deposit(uint amount) public { if(amount >= 0) { balances[msg.sender] = amount; } } allows zero and overwrites balance instead of adding. function deposit(int amount) public { balances[msg.sender] += amount; } uses signed int allowing negative deposits. function deposit(uint amount) public { balances[msg.sender] += amount; } lacks any check.
  3. Final Answer:

    function deposit(uint amount) public { require(amount > 0, "Amount must be positive"); balances[msg.sender] += amount; } -> Option D
  4. Quick Check:

    Use require() to enforce positive deposits [OK]
Hint: Use require() to check conditions before updating state [OK]
Common Mistakes:
  • Not validating input amounts
  • Using signed integers for balances
  • Overwriting balances instead of adding
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