Bird
Raised Fist0
Blockchain / Solidityprogramming~20 mins

Interfaces in Blockchain / Solidity - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Interface Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of a Solidity Interface Call
Consider the following Solidity interface and contract. What will be the output when getValue() is called on MyContract?
Blockchain / Solidity
pragma solidity ^0.8.0;

interface IValue {
    function getValue() external view returns (uint);
}

contract MyContract is IValue {
    function getValue() external pure override returns (uint) {
        return 42;
    }
}
ACompilation error due to missing implementation
B42
C0
DRuntime error due to interface call
Attempts:
2 left
💡 Hint
The contract implements the interface function and returns a fixed number.
🧠 Conceptual
intermediate
1:30remaining
Purpose of Interfaces in Smart Contracts
What is the main purpose of using interfaces in blockchain smart contracts?
ATo define a contract's external functions without implementation, enabling interaction with other contracts
BTo store data permanently on the blockchain
CTo execute complex computations off-chain
DTo create user interfaces for decentralized applications
Attempts:
2 left
💡 Hint
Think about how contracts communicate with each other.
🔧 Debug
advanced
2:00remaining
Identify the Error in Interface Implementation
What error will this Solidity contract produce?
Blockchain / Solidity
pragma solidity ^0.8.0;

interface ICalc {
    function add(uint a, uint b) external returns (uint);
}

contract Calculator is ICalc {
    function add(uint a, uint b) public pure override returns (uint) {
        return a + b;
    }
}
ANo error, contract compiles and runs correctly
BRuntime error: Function add not found
CCompiler error: Missing 'override' keyword in function add
DCompiler error: Interface functions cannot be pure
Attempts:
2 left
💡 Hint
Check the function signature and keywords for interface implementation.
📝 Syntax
advanced
1:30remaining
Correct Interface Syntax in Solidity
Which option shows the correct syntax for declaring an interface with a function transfer that takes an address and uint and returns a bool?
Ainterface IToken { function transfer(address to, uint amount) external returns (bool); }
Binterface IToken { function transfer(address to, uint amount) public returns (bool) {} }
Cinterface IToken { function transfer(address to, uint amount) external {} }
Dinterface IToken { function transfer(address to, uint amount) external returns bool; }
Attempts:
2 left
💡 Hint
Interfaces declare function signatures without bodies and use 'external' visibility.
🚀 Application
expert
2:30remaining
Number of Functions in a Contract Implementing Multiple Interfaces
Given these interfaces and contract, how many functions must MultiContract implement?
Blockchain / Solidity
pragma solidity ^0.8.0;

interface IA {
    function foo() external;
    function bar() external;
}

interface IB {
    function bar() external;
    function baz() external;
}

contract MultiContract is IA, IB {
    // Implementations here
}
A5
B4
C2
D3
Attempts:
2 left
💡 Hint
Count unique function signatures from both interfaces.

Practice

(1/5)
1.

What is the main purpose of an interface in blockchain smart contracts?

easy
A. To define a set of function signatures without implementation
B. To store data variables for the contract
C. To execute transactions automatically
D. To create user interfaces for blockchain apps

Solution

  1. Step 1: Understand what an interface is

    An interface only declares function names and their inputs/outputs but does not provide code inside them.
  2. Step 2: Identify the purpose in blockchain contracts

    Interfaces ensure different contracts agree on function names and types to interact properly.
  3. Final Answer:

    To define a set of function signatures without implementation -> Option A
  4. Quick Check:

    Interface = function signatures only [OK]
Hint: Interfaces declare functions without code to ensure consistency [OK]
Common Mistakes:
  • Thinking interfaces store data variables
  • Confusing interfaces with executable code
  • Believing interfaces create UI elements
2.

Which of the following is the correct syntax to declare an interface named IPayment in Solidity?

?
easy
A. interface IPayment { function pay() external; }
B. contract IPayment { function pay() public {} }
C. interface IPayment { function pay() public {} }
D. contract IPayment { function pay() external; }

Solution

  1. Step 1: Recall interface syntax in Solidity

    Interfaces use the keyword interface and declare functions without bodies, marked external.
  2. Step 2: Check each option

    interface IPayment { function pay() external; } correctly declares an interface with an external function without implementation. Versions using contract are wrong. interface IPayment { function pay() public {} } has a function body which is not allowed in interfaces.
  3. Final Answer:

    interface IPayment { function pay() external; } -> Option A
  4. Quick Check:

    Interface + external function + no body = correct syntax [OK]
Hint: Interfaces use 'interface' keyword and external functions without bodies [OK]
Common Mistakes:
  • Using 'contract' instead of 'interface'
  • Adding function bodies inside interfaces
  • Using 'public' instead of 'external' in interface functions
3.

Given the interface and contract below, what will be the output when calling getValue()?

interface IValue {
    function getValue() external view returns (uint);
}

contract Value is IValue {
    function getValue() external pure returns (uint) {
        return 42;
    }
}
medium
A. 42
B. 0
C. Runtime error
D. Compilation error

Solution

  1. Step 1: Compare function signatures in interface and contract

    The interface declares getValue() as view, but the contract implements it as pure. These must match exactly.
  2. Step 2: Understand Solidity rules for interface implementation

    Function modifiers like view and pure must match. Mismatch causes a compilation error.
  3. Final Answer:

    Compilation error -> Option D
  4. Quick Check:

    Modifier mismatch = compilation error [OK]
Hint: Function modifiers must match exactly in interface and implementation [OK]
Common Mistakes:
  • Ignoring function modifier differences
  • Assuming pure and view are interchangeable
  • Expecting runtime error instead of compile error
4.

Identify the error in the following Solidity code implementing an interface:

interface ICalculator {
    function add(uint a, uint b) external returns (uint);
}

contract Calculator is ICalculator {
    function add(uint a, uint b) public returns (uint) {
        return a + b;
    }
}
medium
A. Contract should not use 'is' keyword
B. Function visibility mismatch between interface and contract
C. Interface cannot have functions with parameters
D. Missing function body in contract

Solution

  1. Step 1: Check function visibility in interface and contract

    The interface function is declared as external, but the contract function is public. These must match.
  2. Step 2: Understand Solidity interface implementation rules

    Function visibility must be the same; otherwise, it causes a compilation error.
  3. Final Answer:

    Function visibility mismatch between interface and contract -> Option B
  4. Quick Check:

    Visibility mismatch = compilation error [OK]
Hint: Match function visibility exactly between interface and contract [OK]
Common Mistakes:
  • Using public instead of external in implementation
  • Thinking interfaces cannot have parameters
  • Ignoring 'is' keyword for inheritance
5.

You want to create a contract Token that implements two interfaces IERC20 and IERC721. Which of the following is the correct way to declare this contract?

hard
A. interface Token is IERC20, IERC721 { /* implementation */ }
B. contract Token implements IERC20, IERC721 { /* implementation */ }
C. contract Token is IERC20, IERC721 { /* implementation */ }
D. contract Token inherits IERC20, IERC721 { /* implementation */ }

Solution

  1. Step 1: Recall Solidity syntax for multiple interface inheritance

    Solidity uses the keyword is to inherit from multiple interfaces or contracts.
  2. Step 2: Evaluate each option

    contract Token is IERC20, IERC721 { /* implementation */ } correctly uses is with both interfaces. contract Token implements IERC20, IERC721 { /* implementation */ } uses implements which is invalid in Solidity. interface Token is IERC20, IERC721 { /* implementation */ } declares Token as an interface, not a contract. contract Token inherits IERC20, IERC721 { /* implementation */ } uses inherits which is not a Solidity keyword.
  3. Final Answer:

    contract Token is IERC20, IERC721 { /* implementation */ } -> Option C
  4. Quick Check:

    Use 'is' for multiple interface inheritance [OK]
Hint: Use 'is' keyword to inherit multiple interfaces in Solidity [OK]
Common Mistakes:
  • Using 'implements' instead of 'is'
  • Declaring contract as interface by mistake
  • Using non-existent keywords like 'inherits'
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