2/5
## The Golden Rule of Web3 Transactions: Trust Your Wallet, Not the Website In the world of Web3, where you are your own bank, the responsibility for securing your assets falls squarely on your shoulders. One of the most critical security principles to internalize is: **"Don't trust what's on the website. Only trust your wallet."** This lesson, drawn from a "Wise Signer" simulation (specifically Question 4), will demonstrate precisely why this rule is paramount, especially when using a hardware wallet like a Trezor. Imagine you're about to send cryptocurrency. You've navigated to a seemingly legitimate website, entered the transaction details, and everything looks correct on your screen. But is it? Let's explore a scenario where what you see on the website isn't what's actually happening, and how your hardware wallet acts as your ultimate source of truth. **The Scenario: Sending ETH to a Friend** Our task is to decide whether to execute or reject a transaction. Here are the intended details: * **Action:** Send **0.5 ETH** to a friend. * **Recipient Address (Friend):** `0x70997970C51812dc3A010C7d01b50e0d17dc79C8` * **Your Wallet Address (Sender):** `0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266` (This is the first account, derived using the standard Ethereum path `m/44'/60'/0'/0/0`). * **Hardware Wallet:** A Trezor is required for this transaction. * **Core Instruction:** "Only trust what the wallet shows you. If sending this transaction will get you what you want, sign it!" **The Deceptive Website Interface** The transaction is initiated via a web interface at `https://portfolio.metamask.io/transfer?tab=send`. At first glance, `metamask.io` is a recognizable and trusted domain. This is a good initial check against obvious phishing attempts. However, it's crucial to remember that even legitimate websites can be compromised by hacks or contain bugs that display incorrect information. Upon setting up the transaction on this interface, we observe the following details presented on the screen: * **Recipient Address:** `0x70997970C51812dc3A010C7d01b50e0d17dc79C8` – This matches our intended recipient. So far, so good. * **Amount:** **5 ETH** (displayed also as `5000000000000000000` in wei). Here lies the **critical discrepancy**. The website UI clearly states we are about to send **5 ETH**. However, our explicit intention was to send only **0.5 ETH**. In this simulation, the amount field on the website is disabled, forcing us to rely on the subsequent verification steps. **Hardware Wallet Verification: The Moment of Truth** Despite the alarming 5 ETH figure displayed on the website, the correct procedure is to proceed with the transaction initiation (e.g., clicking "Transfer"). This is not an endorsement of the website's information but a necessary step to bring the hardware wallet into play. The hardware wallet is designed to show the *actual* transaction details it is being asked to sign, irrespective of what any potentially compromised website interface displays. A pop-up now simulates the Trezor hardware wallet's screen, guiding us through the verification: 1. **Screen 1: Recipient Address Verification** * The Trezor displays: `0x70997970C51812dc3A010C7d01b50e0d17dc79C8`. * **Action:** Meticulously compare this address character by character with your intended recipient's address. Using a "find" function (like Command-F or Ctrl-F) after copying the intended address from a trusted source (your notes, the scenario description) is a good practice. In this case, the address matches. We "Swipe Up" (simulated Trezor action) to confirm. 2. **Screen 2: Sender Account Verification** * The Trezor displays: Account `ETH #1`. * It also shows the derivation path: `m/44'/60'/0'/0/0`. * **Action:** This matches our specified sending account and its derivation path. This confirms we are sending from the correct wallet and account. We "Swipe Up" again. 3. **Screen 3: Transaction Summary – The Crucial Check** * The Trezor displays: * Amount: **0.5 ETH** * Maximum fee: `0.00198 ETH` * **Action:** This is the pivotal moment. The Trezor, our trusted display, *correctly* shows the amount as **0.5 ETH**. This is what we intended to send, not the 5 ETH erroneously shown on the website. The displayed fee is also noted. We "Swipe Up" to proceed. 4. **Screen 4: Final Confirmation to Sign** * The Trezor now prompts to "Hold to sign," "Reject," or "Sign." * **Action:** Because all details displayed on the Trezor's screen (recipient address, amount, sending account) perfectly align with our original intent, we confidently click "Sign." **The Outcome: Why Signing Was Correct** The simulation confirms that signing the transaction was the **correct** action. The core lesson here is profound: The website interface (`portfolio.metamask.io`) attempted to deceive us by displaying an incorrect transfer amount of 5 ETH. However, our Trezor hardware wallet, with its secure and isolated "trusted display," presented the *actual* transaction details: sending 0.5 ETH to the correct recipient from the correct account. This scenario powerfully illustrates that you cannot blindly trust the user interface of a website or even a software wallet extension. These can be subject to various attacks (like UI redressing or malicious scripts) or simple bugs. **Key Security Principles Reinforced** * **The Power of the Trusted Display:** Hardware wallets like Trezor and Ledger provide a screen that is isolated from your computer or phone. This "trusted display" is designed to show you the exact details of the transaction your device is being asked to sign. It's your last, and most reliable, line of defense. * **Website Vulnerabilities:** Never assume a website is infallible. Front-end interfaces can be manipulated. Always be skeptical and verify. * **Derivation Paths Matter:** The derivation path (e.g., `m/44'/60'/0'/0/0` for the first Ethereum account) ensures you are interacting with the correct account within your Hierarchical Deterministic (HD) wallet. Confirming this on your hardware wallet is good practice. * **Meticulous Verification is Non-Negotiable:** Before signing *any* transaction, always verify every critical detail on your hardware wallet's screen: * **Recipient Address:** Is it *exactly* correct? One wrong character can send your funds to an unknown address, irretrievably. * **Amount and Currency/Token:** Are you sending the right quantity of the right asset? * **Network:** Are you on the correct blockchain (e.g., Ethereum Mainnet vs. a testnet or another chain)? * **Transaction Fee:** Is the gas fee reasonable? * **Sending Account/Address:** Are you sending from the intended wallet? * **URL Check – A First Step:** While not a complete safeguard, always double-check the website URL to ensure you're on the legitimate site and not a convincing fake. In summary, this Wise Signer simulation clearly showed the discrepancy: * **Intended Transaction:** Send `0.5 ETH` to `0x70997970C51812dc3A010C7d01b50e0d17dc79C8` from account `ETH #1` (`m/44'/60'/0'/0/0`). * **Website UI Displayed:** Send `5 ETH` to `0x70997970C51812dc3A010C7d01b50e0d17dc79C8`. * **Trezor Hardware Wallet Displayed (and Signed):** Send `0.5 ETH` to `0x70997970C51812dc3A010C7d01b50e0d17dc79C8` from account `ETH #1` (`m/44'/60'/0'/0/0`). By adhering to the principle of "Only trust your wallet," and diligently verifying all details on the Trezor's trusted display, we navigated a potentially costly deception and successfully executed the transaction as intended. Make this principle a cornerstone of your Web3 security habits.
A vital demonstration to The Golden Rule of Web3 Transactions: Trust Your Wallet, Not the Website - Learn why your hardware wallet's trusted display is the ultimate arbiter of truth, not deceptive website interfaces, when approving Web3 actions. See a real-world simulation where meticulously verifying details on-device averts a significant error and protects your assets.
Previous lesson
Previous
Next lesson
Next
Give us feedback
Course Overview
About the course
The importance of transaction verification
How to identify security threats
Basic web3 wallet security practices
To create a disaster recovery plan
Differences between web3 wallets types
Last updated on May 28, 2025
Solidity Developer
Web3 Wallet Security BasicsDuration: 58min
Course Overview
About the course
The importance of transaction verification
How to identify security threats
Basic web3 wallet security practices
To create a disaster recovery plan
Differences between web3 wallets types
Last updated on May 28, 2025