Bird
Raised Fist0
Blockchain / Solidityprogramming~5 mins

Factory pattern in Blockchain / Solidity - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the Factory pattern in programming?
The Factory pattern is a design method that creates objects without specifying the exact class. It helps make code flexible by letting a special function or contract decide which object to make.
Click to reveal answer
beginner
Why use the Factory pattern in blockchain smart contracts?
It helps create many similar contracts easily and safely. Instead of writing the same code many times, a Factory contract makes new contracts on demand, saving time and gas fees.
Click to reveal answer
intermediate
In Solidity, what does a Factory contract usually do?
It has a function that creates new contracts using the 'new' keyword and keeps track of them. This way, users can get new contract instances from one place.
Click to reveal answer
intermediate
How does the Factory pattern improve code maintenance?
By centralizing contract creation, changes happen in one place. This reduces errors and makes updating contracts easier without changing all copies.
Click to reveal answer
beginner
Give a simple example of a Factory pattern in blockchain.
A Factory contract has a function that creates new Token contracts. Each time it runs, it makes a new Token with its own address, so many tokens can exist without repeating code.
Click to reveal answer
What is the main purpose of the Factory pattern?
ATo create objects without specifying the exact class
BTo delete objects automatically
CTo speed up the program by skipping object creation
DTo store data permanently
In blockchain, why is a Factory contract useful?
AIt manages user wallets
BIt mines new blocks faster
CIt encrypts user data
DIt creates multiple contracts efficiently
Which Solidity keyword is commonly used in Factory contracts to create new contracts?
Anew
Bcreate
Cdeploy
Dinit
How does the Factory pattern help with code updates?
ABy encrypting contract code
BBy deleting old contracts automatically
CBy centralizing contract creation in one place
DBy running contracts faster
What does a Factory contract usually keep track of?
AUser passwords
BAddresses of created contracts
CTransaction fees
DBlock timestamps
Explain the Factory pattern and why it is useful in blockchain smart contracts.
Think about how to make many contracts without repeating code.
You got /4 concepts.
    Describe how a Factory contract works in Solidity with an example.
    Imagine a contract that makes many small contracts for you.
    You got /4 concepts.

      Practice

      (1/5)
      1.

      What is the main purpose of the Factory pattern in blockchain development?

      easy
      A. To create multiple similar contracts easily and manage their addresses
      B. To encrypt data on the blockchain
      C. To mine new blocks faster
      D. To validate transactions off-chain

      Solution

      1. Step 1: Understand the Factory pattern role

        The Factory pattern is used to create many similar contracts efficiently.
      2. Step 2: Identify its key feature

        It also stores the addresses of these created contracts for easy access later.
      3. Final Answer:

        To create multiple similar contracts easily and manage their addresses -> Option A
      4. Quick Check:

        Factory pattern = create and manage contracts [OK]
      Hint: Factory pattern creates and tracks contracts easily [OK]
      Common Mistakes:
      • Confusing factory with encryption or mining
      • Thinking factory validates transactions
      • Assuming factory works off-chain
      2.

      Which of the following is the correct Solidity syntax to deploy a new contract inside a factory contract?

      function create() public returns (address) {
          address newContract = new ?();
          return newContract;
      }
      easy
      A. ContractName
      B. contractname
      C. new ContractName()
      D. ContractName()

      Solution

      1. Step 1: Recall Solidity contract creation syntax

        To create a new contract instance, use new ContractName().
      2. Step 2: Match syntax with code snippet

        The placeholder new ?() expects the contract name without 'new' repeated.
      3. Final Answer:

        ContractName -> Option A
      4. Quick Check:

        Use 'new ContractName()' but only 'ContractName' inside parentheses [OK]
      Hint: Use contract name only inside new keyword parentheses [OK]
      Common Mistakes:
      • Writing 'new' twice
      • Using lowercase contract names
      • Omitting parentheses
      3.

      Consider this Solidity factory contract snippet:

      contract Simple {
          uint public value;
          constructor(uint _value) {
              value = _value;
          }
      }
      
      contract Factory {
          Simple[] public simples;
          function createSimple(uint _val) public {
              Simple s = new Simple(_val);
              simples.push(s);
          }
          function getValue(uint index) public view returns (uint) {
              return simples[index].value();
          }
      }

      What will getValue(0) return after calling createSimple(42) once?

      medium
      A. Address of the contract
      B. 0
      C. 42
      D. Compilation error

      Solution

      1. Step 1: Understand contract creation and storage

        Calling createSimple(42) creates a new Simple contract with value = 42 and stores it in simples array.
      2. Step 2: Check what getValue(0) returns

        It returns the value of the first Simple contract, which is 42.
      3. Final Answer:

        42 -> Option C
      4. Quick Check:

        Created contract value = 42 [OK]
      Hint: Created contract stores value; getValue returns it [OK]
      Common Mistakes:
      • Confusing contract address with stored value
      • Assuming default zero value
      • Thinking it returns array length
      4.

      Identify the error in this factory contract code snippet:

      contract Product {
          uint public id;
          constructor(uint _id) {
              id = _id;
          }
      }
      
      contract ProductFactory {
          Product[] public products;
          function createProduct(uint _id) public {
              Product p = Product(_id);
              products.push(p);
          }
      }
      medium
      A. Array products should be a mapping
      B. Missing new keyword when creating Product
      C. Constructor should not have parameters
      D. Function createProduct must be view

      Solution

      1. Step 1: Check contract instantiation syntax

        In Solidity, to create a new contract instance, you must use the new keyword.
      2. Step 2: Identify the missing keyword

        The line Product p = Product(_id); misses new, it should be Product p = new Product(_id);.
      3. Final Answer:

        Missing new keyword when creating Product -> Option B
      4. Quick Check:

        Contract creation requires 'new' keyword [OK]
      Hint: Always use 'new' to create contracts in Solidity [OK]
      Common Mistakes:
      • Forgetting 'new' keyword
      • Changing array to mapping unnecessarily
      • Marking create function as view incorrectly
      5.

      You want to build a factory contract that creates multiple token contracts with different initial supplies and keeps track of them. Which approach best applies the factory pattern to save gas and organize your project?

      hard
      A. Use a single token contract and change its supply dynamically for each user
      B. Deploy all token contracts manually and hardcode their addresses in the factory
      C. Create token contracts but do not store their addresses anywhere
      D. Create each token contract separately and store their addresses in an array inside the factory

      Solution

      1. Step 1: Understand factory pattern benefits

        The factory pattern helps create many similar contracts and keeps track of them efficiently.
      2. Step 2: Evaluate options for managing multiple tokens

        Creating each token contract inside the factory and storing their addresses allows easy management and gas savings.
      3. Step 3: Reject other options

        Hardcoding addresses is inflexible, using one contract for all tokens breaks isolation, and not storing addresses loses track.
      4. Final Answer:

        Create each token contract separately and store their addresses in an array inside the factory -> Option D
      5. Quick Check:

        Factory creates and tracks contracts for organization [OK]
      Hint: Factory creates and stores contracts for easy management [OK]
      Common Mistakes:
      • Hardcoding addresses reduces flexibility
      • Using one contract for all tokens causes conflicts
      • Not storing addresses loses track of contracts