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
✗ Incorrect
The 'ethereum' object is injected by MetaMask and acts as a provider to interact with the Ethereum blockchain.
Which method requests the user's Ethereum accounts from MetaMask?
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
Step 1: Check the request call usage
window.ethereum.request returns a Promise, so it must be awaited or handled with then().
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.
Final Answer:
Missing await before window.ethereum.request call -> Option A
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
Step 1: Check for MetaMask presence
The code correctly checks if window.ethereum exists before trying to connect.
Step 2: Handle connection and errors properly
It uses try-catch to handle user rejection or other errors and logs appropriate messages.
Final Answer:
Correctly checks for MetaMask and handles connection and errors -> Option A
Quick Check:
Check existence + try-catch = robust connection [OK]
Hint: Always check window.ethereum before connecting [OK]