Module 2: Wallets, Custody, and Security
Networks, Gas, and Moving Assets Safely
Chapter 9 of 14 · about 7 minutes
9.1 "My USDC disappeared"
Mint withdrew 200 USDC from an exchange to the self-custody wallet. The exchange said the withdrawal was complete. But when Mint opened the wallet, the USDC balance showed zero.
Mint's heart sank. "It's gone."
Hash took one look. "Which network did you withdraw on?"
Mint checked. The exchange withdrawal had used a Layer 2 network. The wallet was showing Ethereum mainnet. Hash switched the wallet's network selector, and there it was: 200 USDC.
"It was never gone," said Hash. "You were just looking at the wrong network."
This chapter explains how networks work from a wallet's point of view, and how to move assets without losing them.
9.2 Same address, separate balances
As Chapter 1 mentioned, on Ethereum and EVM-compatible networks, your address is the same everywhere. But each network is a separate blockchain with its own ledger. Your balances on each network are completely independent.
Think of a global hotel chain. Your membership number is the same at every hotel, but the room you've booked in one city has nothing to do with the room in another. Having a room in one city doesn't give you a room in another.
| Mint's address 0x12ab...89ef | Balance |
|---|---|
| On Ethereum mainnet | 0.05 ETH, 0 USDC |
| On a Layer 2 network | 0 ETH, 200 USDC |
| On another EVM chain | 0 ETH, 0 USDC |
Same address, three separate ledgers, three different balances.
Layer 2 networks are blockchains built on top of Ethereum to make transactions faster and cheaper, while relying on Ethereum for security in various ways. Module 3 explains how they work. For now, the important thing is that, to your wallet, they behave like separate networks.
Chapter 9 · One address, separate networks
One address appears identically on Ethereum mainnet, a Layer 2, and another EVM chain. Each network tracks separate balances: ETH and USDC on mainnet, USDC but no gas on the Layer 2, and different holdings elsewhere. Every network needs its own native gas coin to move funds.
9.3 Every network needs its own gas
Back to Mint's 200 USDC. Mint wanted to send it to a friend, but the wallet showed an error: insufficient funds for gas.
Every network charges transaction fees in its own native coin. On Ethereum and many Layer 2 networks, gas is paid in ETH. On other chains, it's paid in that chain's own coin. Holding tokens isn't enough. You also need a small amount of the native gas coin on that same network.
Mint had ETH on Ethereum mainnet, but zero ETH on the Layer 2 network. The USDC was stuck until Mint got a small amount of ETH there.
| Problem | Solution |
|---|---|
| Tokens on a network with no gas coin | Withdraw a small amount of the gas coin to that network from an exchange, or bridge some over |
| Not sure which coin pays gas on a network | Check the network's official documentation or your wallet's network details |
| Want to avoid this in future | Always keep a small gas balance on every network you use |
Some smart account wallets let users pay gas in other tokens, or have an application cover the fees, which can avoid this problem. It's a growing feature, but not yet universal.
9.4 Sending to the right network
Module 1, Chapter 12 warned about selecting the wrong network when withdrawing. Let's look at what can actually happen.
When sending between your own self-custody addresses on EVM networks, a wrong-network transfer is usually recoverable, because you control the same address on every EVM network. You just need to switch networks in your wallet, and possibly add some gas there.
When sending to an exchange, it's different. An exchange's deposit address may only be monitored on specific networks. If you send funds on a network the exchange doesn't support for that deposit address, the funds may arrive on-chain but the exchange won't credit them. Recovery depends entirely on the exchange's policies, may involve fees and delays, and sometimes isn't possible.
When sending between completely different blockchain families, such as from an EVM chain to Bitcoin, address formats differ, and most wallets will refuse the transfer. If something does go through to an incompatible address, it's usually lost.
The safe routine:
- Confirm which networks the receiving side supports.
- Select the matching network on the sending side.
- Copy and paste the address, and check the first and last characters.
- Send a small test amount first.
- Confirm it arrived before sending the rest.
9.5 Bridges
To move assets from one network to another, people use bridges. A bridge typically locks or burns tokens on one network and releases or mints equivalent tokens on another.
Bridges are useful, but they've also been some of the most attacked systems in crypto, because they often hold large pools of assets. In March 2022, attackers took over enough validator keys of the Ronin bridge, which served a popular blockchain game, to steal over $600 million.
Some practical guidance on bridges:
Prefer official or widely used bridges, including the official bridge for a network, or reputable bridge aggregators.
Consider withdrawing directly from an exchange to the network you need. Many exchanges support direct withdrawals to Layer 2 networks, which avoids using a bridge at all.
Check that you're receiving the right version of a token. Some bridges create "wrapped" versions of tokens, which may not be the same as the native version an application accepts.
Bookmark bridge websites. Fake bridge sites are common.
9.6 Adding networks and RPCs
Your wallet talks to each blockchain through a connection point called an RPC endpoint, operated by your wallet provider or a third party. Wallets come with popular networks already configured, and you can add others.
Adding a custom network means trusting its RPC endpoint to report accurate information. A malicious endpoint can't steal your keys, but it could show false balances, misleading transaction results, or track your activity.
Add networks from trusted sources, such as the network's official documentation or well-known network directories. Be wary of websites that prompt you to add a network you didn't intend to use. Check the chain ID against official sources, since each network has a unique identifier.
9.7 Fake tokens in your wallet
One morning, Node noticed a token in the wallet that Node had never bought. It was worth "$2,500" according to the wallet, with a name that included a website address.
"Free money?" Node asked.
"Free trap," said Hash.
Scammers send worthless tokens to many addresses, often with names that advertise a website. When people visit the site to sell or claim, they're asked to connect their wallet and sign something malicious. Some fake tokens are designed so that trying to sell or transfer them requests a dangerous approval.
The rule: ignore tokens you didn't acquire yourself. Don't visit their websites, don't try to sell them, and don't interact with them. Use your wallet's "hide token" feature.
9.8 Address poisoning
A particularly sneaky scam targets your transaction history. Attackers create an address whose first and last characters match an address you've recently used, then send a tiny or zero-value transfer to you from it. The fake address now appears in your history.
Later, when you go to send funds, you copy what looks like the familiar address from your history, but you've copied the attacker's lookalike.
| Shortened, as wallets often display it | Full address | |
|---|---|---|
| Real address | 0x7a3F...9d2E | 0x7a3F4b2c91d0e8f7a6b5c4d3e2f1a0b9c8d79d2E |
| Lookalike address | 0x7a3F...9d2E | 0x7a3F0e91bb27c3d4a5f60718293a4b5c6d7e9d2E |
Shortened, they look identical. Only the full addresses reveal the difference in the middle characters. To avoid this, never copy addresses from your transaction history. Use your wallet's saved contacts or address book, copy addresses from the original trusted source each time, and check more than just the first and last few characters when amounts are large.
9.9 Try it yourself
In your testnet wallet, find out which other test networks your wallet supports. Switch between them and notice how your balances change. Then try sending a token on a network where you have no gas coin, and read the error message.
On mainnet, open your wallet's address book and save the addresses you send to regularly, such as your own exchange deposit addresses, verified from the original source.
Key takeaways from this chapter
- On EVM networks, your address is the same everywhere, but balances on each network are separate.
- If assets seem missing, first check that your wallet is showing the right network.
- Every network needs its own native gas coin. Keep a small balance on each network you use.
- Match networks on both sides of every transfer, especially when sending to exchanges, and send test amounts first.
- Bridges move assets between networks but have been major targets. Use well-established options or direct exchange withdrawals.
- Add custom networks only from trusted sources, and verify chain IDs.
- Ignore tokens you didn't acquire, and never copy addresses from your transaction history.