Bird
Raised Fist0
Blockchain / Solidityprogramming~10 mins

Ethereum networks (mainnet, testnet) in Blockchain / Solidity - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to connect to the Ethereum mainnet using Infura.

Blockchain / Solidity
const provider = new ethers.providers.JsonRpcProvider('[1]');
Drag options to blanks, or click blank then click option'
Ahttps://mainnet.infura.io/v3/YOUR-PROJECT-ID
Bhttps://rinkeby.infura.io/v3/YOUR-PROJECT-ID
Chttps://kovan.infura.io/v3/YOUR-PROJECT-ID
Dhttps://ropsten.infura.io/v3/YOUR-PROJECT-ID
Attempts:
3 left
💡 Hint
Common Mistakes
Using a testnet URL instead of mainnet URL.
2fill in blank
medium

Complete the code to check the current block number on the Rinkeby testnet.

Blockchain / Solidity
const provider = new ethers.providers.JsonRpcProvider('[1]');
const blockNumber = await provider.getBlockNumber();
Drag options to blanks, or click blank then click option'
Ahttps://rinkeby.infura.io/v3/YOUR-PROJECT-ID
Bhttps://mainnet.infura.io/v3/YOUR-PROJECT-ID
Chttps://goerli.infura.io/v3/YOUR-PROJECT-ID
Dhttps://sepolia.infura.io/v3/YOUR-PROJECT-ID
Attempts:
3 left
💡 Hint
Common Mistakes
Using mainnet or other testnet URLs.
3fill in blank
hard

Fix the error in the code to connect to the Goerli testnet.

Blockchain / Solidity
const provider = new ethers.providers.JsonRpcProvider('[1]');
Drag options to blanks, or click blank then click option'
Ahttps://goerli.infura.io/v2/YOUR-PROJECT-ID
Bhttps://goreli.infura.io/v3/YOUR-PROJECT-ID
Chttps://goerli.infura.io/v3/
Dhttps://goerli.infura.io/v3/YOUR-PROJECT-ID
Attempts:
3 left
💡 Hint
Common Mistakes
Misspelling 'goerli' as 'goreli'.
Using wrong version number in URL.
4fill in blank
hard

Fill both blanks to create a dictionary mapping network names to their Infura URLs.

Blockchain / Solidity
const networks = {
  'mainnet': '[1]',
  'sepolia': '[2]'
};
Drag options to blanks, or click blank then click option'
Ahttps://mainnet.infura.io/v3/YOUR-PROJECT-ID
Bhttps://rinkeby.infura.io/v3/YOUR-PROJECT-ID
Chttps://sepolia.infura.io/v3/YOUR-PROJECT-ID
Dhttps://goerli.infura.io/v3/YOUR-PROJECT-ID
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing testnet URLs with mainnet.
5fill in blank
hard

Fill all three blanks to filter and map testnet names with their URLs from a networks object.

Blockchain / Solidity
const testnets = Object.entries(networks)
  .filter(([[1], [2]]) => [3] !== 'mainnet')
  .map(([name, url]) => ({ name, url }));
Drag options to blanks, or click blank then click option'
Akey
Bname
Curl
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong variable names in destructuring.
Filtering by url instead of name.

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

  1. Step 1: Understand the purpose of testnets

    Testnets are designed for testing and development without real value at risk.
  2. Step 2: Compare with mainnet

    Mainnet is the live network where real transactions and value exist, so testing there risks real money.
  3. Final Answer:

    Testnet -> Option C
  4. 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

  1. Step 1: Recall Ethereum network IDs

    Mainnet uses network ID 1, testnets have other IDs like 3 (Ropsten), 4 (Rinkeby), 42 (Kovan).
  2. Step 2: Match the ID to mainnet

    Network ID 1 corresponds to the Ethereum mainnet.
  3. Final Answer:

    "networkId": 1 -> Option A
  4. 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?
const provider = new ethers.providers.JsonRpcProvider("https://rinkeby.infura.io/v3/YOUR_PROJECT_ID");
const network = await provider.getNetwork();
console.log(network.name);
medium
A. "mainnet"
B. "rinkeby"
C. "ropsten"
D. "kovan"

Solution

  1. Step 1: Identify the RPC URL

    The URL contains "rinkeby.infura.io", indicating the Rinkeby testnet.
  2. Step 2: Understand provider.getNetwork()

    This method returns the network info based on the RPC URL, so it will return "rinkeby".
  3. Final Answer:

    "rinkeby" -> Option B
  4. 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

  1. Step 1: Examine the signer line

    JsonRpcProvider.getSigner() fails because public RPC providers like Infura do not expose signing accounts or private keys.
  2. 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);
  3. Final Answer:

    Missing private key for signer -> Option D
  4. 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

  1. Step 1: Understand deployment best practices

    Testnets like Goerli are used to test contracts safely before mainnet deployment.
  2. Step 2: Apply conditional deployment logic

    Deploy on Goerli, run tests, and only deploy on mainnet if tests succeed to avoid costly errors.
  3. Final Answer:

    Deploy on Goerli testnet, run tests, then deploy on mainnet if tests pass -> Option A
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard