Understanding Ethereum Networks: Mainnet and Testnet
📖 Scenario: You are learning about Ethereum blockchain networks. Ethereum has a main network called Mainnet where real transactions happen with real money. It also has Testnets where developers test their smart contracts and applications without using real money.In this project, you will create a simple program to store and display information about Ethereum networks.
🎯 Goal: You will build a small program that stores Ethereum network names and their descriptions. Then, you will select a network type and display its details.
📋 What You'll Learn
Create a dictionary with Ethereum network names and their descriptions
Create a variable to select a network name
Use a loop or conditional to find and store the selected network's description
Print the selected network's name and description
💡 Why This Matters
🌍 Real World
Developers use Ethereum testnets to safely test smart contracts and decentralized apps before deploying them on the mainnet where real money is involved.
💼 Career
Understanding Ethereum networks is essential for blockchain developers, testers, and anyone working with decentralized applications to avoid costly mistakes.
Progress0 / 4 steps
1
Create the Ethereum networks dictionary
Create a dictionary called eth_networks with these exact entries: 'mainnet': 'The main Ethereum network with real transactions.', 'goerli': 'A popular Ethereum testnet for testing smart contracts.', 'sepolia': 'Another Ethereum testnet used for development and testing.'
Blockchain / Solidity
Hint
Use curly braces {} to create a dictionary. Each entry has a key and a value separated by a colon.
2
Select the Ethereum network to display
Create a variable called selected_network and set it to the string 'goerli' to choose the Goerli testnet.
Blockchain / Solidity
Hint
Assign the string 'goerli' to the variable selected_network.
3
Get the description of the selected network
Create a variable called network_description and set it to the description of the network stored in selected_network from the eth_networks dictionary.
Blockchain / Solidity
Hint
Use the selected_network variable as a key to get the value from eth_networks.
4
Display the selected network and its description
Write a print statement to display the selected network name and its description in this exact format: "Network: goerli - A popular Ethereum testnet for testing smart contracts."
Blockchain / Solidity
Hint
Use an f-string to combine the selected_network and network_description in the print statement.
Practice
(1/5)
1. Which Ethereum network should you use to test your smart contracts without risking real money?
easy
A. Private network
B. Mainnet
C. Testnet
D. Production network
Solution
Step 1: Understand the purpose of testnets
Testnets are designed for testing and development without real value at risk.
Step 2: Compare with mainnet
Mainnet is the live network where real transactions and value exist, so testing there risks real money.
Final Answer:
Testnet -> Option C
Quick Check:
Testnet = Safe testing network [OK]
Hint: Testnets are for safe practice, mainnet is for real use [OK]
Common Mistakes:
Confusing mainnet with testnet
Thinking private network is the default test environment
Assuming production network is safe for testing
2. Which of the following is the correct way to specify the Ethereum mainnet network ID in your configuration?
easy
A. "networkId": 1
B. "networkId": 3
C. "networkId": 42
D. "networkId": 4
Solution
Step 1: Recall Ethereum network IDs
Mainnet uses network ID 1, testnets have other IDs like 3 (Ropsten), 4 (Rinkeby), 42 (Kovan).
Step 2: Match the ID to mainnet
Network ID 1 corresponds to the Ethereum mainnet.
Final Answer:
"networkId": 1 -> Option A
Quick Check:
Mainnet networkId = 1 [OK]
Hint: Mainnet always uses network ID 1 [OK]
Common Mistakes:
Using testnet IDs for mainnet
Confusing networkId with chainId
Assuming networkId 0 is valid
3. Given the following code snippet to connect to an Ethereum network, what network will it connect to?
The URL contains "rinkeby.infura.io", indicating the Rinkeby testnet.
Step 2: Understand provider.getNetwork()
This method returns the network info based on the RPC URL, so it will return "rinkeby".
Final Answer:
"rinkeby" -> Option B
Quick Check:
RPC URL domain = rinkeby [OK]
Hint: Check the RPC URL domain for network name [OK]
Common Mistakes:
Assuming default is mainnet
Confusing testnet names
Ignoring the URL and guessing
4. You wrote this code to deploy a contract on Ropsten testnet but get an error:
const provider = new ethers.providers.JsonRpcProvider("https://mainnet.infura.io/v3/YOUR_PROJECT_ID");
const signer = provider.getSigner();
// deploy contract code here
What is the main issue?
medium
A. Incorrect contract deployment syntax
B. Provider does not support getSigner()
C. Using mainnet RPC URL instead of Ropsten testnet URL
D. Missing private key for signer
Solution
Step 1: Examine the signer line
JsonRpcProvider.getSigner() fails because public RPC providers like Infura do not expose signing accounts or private keys.
Step 2: Correct approach for deployment
Create a wallet signer: const wallet = new ethers.Wallet('0x-your-private-key', provider); const signer = wallet.connect(provider);
Final Answer:
Missing private key for signer -> Option D
Quick Check:
Use Wallet(privateKey, provider) for signing [OK]
Hint: Use ethers.Wallet(privateKey, provider) for signing deployments [OK]
Common Mistakes:
Using provider.getSigner() without wallet
Assuming getSigner() works without wallet
Overlooking private key requirement
5. You want to write a script that deploys a smart contract first on the Goerli testnet and then on the mainnet only if tests pass. Which approach correctly handles this?
hard
A. Deploy on Goerli testnet, run tests, then deploy on mainnet if tests pass
B. Deploy on mainnet first, then test on Goerli
C. Deploy simultaneously on both networks
D. Deploy only on mainnet and skip testnet
Solution
Step 1: Understand deployment best practices
Testnets like Goerli are used to test contracts safely before mainnet deployment.
Step 2: Apply conditional deployment logic
Deploy on Goerli, run tests, and only deploy on mainnet if tests succeed to avoid costly errors.
Final Answer:
Deploy on Goerli testnet, run tests, then deploy on mainnet if tests pass -> Option A
Quick Check:
Test on testnet before mainnet deployment [OK]
Hint: Test on Goerli first, then deploy mainnet if tests pass [OK]
Common Mistakes:
Deploying on mainnet before testing
Skipping testnets entirely
Deploying on both networks at once
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.