Bird
Raised Fist0
Blockchain / Solidityprogramming~5 mins

Connecting MetaMask wallet 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 MetaMask in the context of blockchain?
MetaMask is a browser extension and mobile app that acts as a digital wallet. It allows users to manage their Ethereum accounts and interact with decentralized applications (dApps) securely.
Click to reveal answer
beginner
What is the first step to connect a MetaMask wallet to a web application?
The first step is to check if MetaMask is installed by verifying if the 'ethereum' object exists in the browser's window object.
Click to reveal answer
beginner
Which method is used to request account access from MetaMask?
The method 'ethereum.request({ method: "eth_requestAccounts" })' is used to ask the user to connect their wallet and share their account address.
Click to reveal answer
beginner
What should a developer do if MetaMask is not installed?
The developer should inform the user to install MetaMask and provide a link to the official MetaMask website for download.
Click to reveal answer
intermediate
Why is it important to handle errors when connecting to MetaMask?
Handling errors ensures the app can respond gracefully if the user rejects the connection request or if there are other issues, improving user experience.
Click to reveal answer
What does the 'ethereum' object in the browser window represent?
AA random JavaScript object unrelated to blockchain
BThe user's Ethereum account address
CThe MetaMask provider injected by the extension
DA smart contract on the blockchain
Which method requests the user's Ethereum accounts from MetaMask?
Aethereum.request({ method: 'eth_requestAccounts' })
Bethereum.enable()
Cethereum.getAccounts()
Dethereum.connect()
What should your app do if 'window.ethereum' is undefined?
APrompt the user to install MetaMask
BTry to connect anyway
CIgnore and continue
DReload the page
What happens if the user rejects the connection request in MetaMask?
AThe connection is established anyway
BAn error is thrown and should be handled
CThe page reloads automatically
DThe wallet disconnects permanently
Which of these is a good practice when connecting MetaMask in your app?
AConnect without user permission
BAssume MetaMask is always installed and connected
CIgnore user account changes
DCheck for MetaMask, request accounts, and handle errors
Explain the steps to connect a MetaMask wallet to a web application.
Think about detecting MetaMask, asking permission, and managing responses.
You got /4 concepts.
    Why is it important to check for MetaMask installation before connecting?
    Consider what happens if the wallet is missing.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does window.ethereum represent in a web page when MetaMask is installed?
      easy
      A. A browser setting to enable cookies
      B. An object injected by MetaMask to interact with the Ethereum blockchain
      C. A method to create a new Ethereum wallet
      D. A function to send transactions automatically

      Solution

      1. Step 1: Understand MetaMask injection

        MetaMask injects window.ethereum into the browser to allow web pages to communicate with the Ethereum blockchain.
      2. Step 2: Identify the role of window.ethereum

        This object provides methods to request accounts, send transactions, and listen to blockchain events.
      3. Final Answer:

        An object injected by MetaMask to interact with the Ethereum blockchain -> Option B
      4. Quick Check:

        window.ethereum = MetaMask's injected object [OK]
      Hint: Remember: window.ethereum is MetaMask's bridge to Ethereum [OK]
      Common Mistakes:
      • Thinking window.ethereum is a function
      • Confusing it with wallet creation
      • Assuming it's a browser setting
      2. Which of the following is the correct way to request account access from MetaMask in JavaScript?
      easy
      A. window.ethereum.getAccounts()
      B. window.ethereum.enable()
      C. window.ethereum.request({ method: 'eth_requestAccounts' })
      D. window.ethereum.connect()

      Solution

      1. Step 1: Identify the current recommended method

        The modern and recommended way to request accounts is using window.ethereum.request with the method eth_requestAccounts.
      2. Step 2: Compare options

        window.ethereum.enable() (enable()) is deprecated. Options C and D are not valid MetaMask methods.
      3. Final Answer:

        window.ethereum.request({ method: 'eth_requestAccounts' }) -> Option C
      4. Quick Check:

        Use request with eth_requestAccounts to connect [OK]
      Hint: Use window.ethereum.request with 'eth_requestAccounts' [OK]
      Common Mistakes:
      • Using deprecated enable() method
      • Calling non-existent getAccounts() or connect()
      • Not passing method as an object
      3. What will the following code output if the user rejects the MetaMask connection request?
      async function connect() {
        try {
          const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
          console.log('Connected:', accounts[0]);
        } catch (error) {
          console.log('Error:', error.message);
        }
      }
      connect();
      medium
      A. Connected: 0x123... (first account address)
      B. Error: window.ethereum is undefined
      C. No output
      D. Error: User rejected the request.

      Solution

      1. Step 1: Understand the try-catch block

        The code tries to request accounts. If the user rejects, the promise rejects and control goes to catch block.
      2. Step 2: Identify the error message on rejection

        When user rejects, MetaMask throws an error with message like 'User rejected the request.'
      3. Final Answer:

        Error: User rejected the request. -> Option D
      4. Quick Check:

        User rejection triggers catch with error message [OK]
      Hint: User rejection triggers catch block with error message [OK]
      Common Mistakes:
      • Assuming accounts array is returned on rejection
      • Not handling promise rejection
      • Expecting no output on rejection
      4. Identify the error in this code snippet that tries to connect MetaMask wallet:
      async function connectWallet() {
        const accounts = window.ethereum.request('eth_requestAccounts');
        console.log(accounts[0]);
      }
      connectWallet();
      medium
      A. Missing await before window.ethereum.request call
      B. Incorrect method name, should be 'requestAccounts'
      C. window.ethereum.request does not exist
      D. accounts is not an array

      Solution

      1. Step 1: Check the request call usage

        window.ethereum.request returns a Promise, so it must be awaited or handled with then().
      2. Step 2: Identify missing await

        The code calls request without await, so accounts is a Promise, not an array, causing accounts[0] to be undefined.
      3. Final Answer:

        Missing await before window.ethereum.request call -> Option A
      4. Quick Check:

        Async calls need await to get resolved value [OK]
      Hint: Always await async calls like window.ethereum.request [OK]
      Common Mistakes:
      • Forgetting await on async calls
      • Passing method as string instead of object
      • Assuming request returns array directly
      5. You want to connect a MetaMask wallet and display the connected account or an error message if MetaMask is not installed. Which code snippet correctly handles both cases?
      async function connect() {
        if (window.ethereum) {
          try {
            const accounts = await window.ethereum.request({ method: 'eth_requestAccounts' });
            console.log('Connected account:', accounts[0]);
          } catch (error) {
            console.log('Connection error:', error.message);
          }
        } else {
          console.log('MetaMask is not installed');
        }
      }
      connect();
      hard
      A. Correctly checks for MetaMask and handles connection and errors
      B. Fails to check if window.ethereum exists before requesting accounts
      C. Does not handle user rejection errors
      D. Uses deprecated enable() method instead of request()

      Solution

      1. Step 1: Check for MetaMask presence

        The code correctly checks if window.ethereum exists before trying to connect.
      2. Step 2: Handle connection and errors properly

        It uses try-catch to handle user rejection or other errors and logs appropriate messages.
      3. Final Answer:

        Correctly checks for MetaMask and handles connection and errors -> Option A
      4. Quick Check:

        Check existence + try-catch = robust connection [OK]
      Hint: Always check window.ethereum before connecting [OK]
      Common Mistakes:
      • Not checking if MetaMask is installed
      • Ignoring errors from user rejection
      • Using deprecated methods