Every sentence is written for a newcomer to read once, with each technical word defined where it first appears and every list as bullets. Two false statements are gone: history rows show the other party's address in full (the only shortened address is the label of a token with no known symbol), and the balance list hides a token that claims ETH from the wrong contract. The guide now also covers the lost-password route, the saved-data recovery screen, network switch requests, closed approval windows and the Connected Sites list. Part of #672. Model: fable-5-1
AutistMask User Guide
AutistMask is an Ethereum wallet. It runs as a browser extension in Chrome and Firefox. This guide explains how to install it and how to use it.
What it does
- It keeps your wallets. A wallet comes from a recovery phrase (12 or 24 words), from a private key, or from an extended private key. An extended private key is a single key that many addresses are computed from.
- It shows the ETH and ERC-20 token balances of your addresses. ETH is the currency of Ethereum. A contract is a program that runs on Ethereum. An ERC-20 token is a token issued by a contract under the ERC-20 standard.
- It sends and receives ETH and ERC-20 tokens.
- It connects to web3 sites and signs what you approve. A web3 site is a website that asks a wallet to sign for it.
It does nothing else. It has:
- no swap screen;
- no portfolio view;
- no NFT gallery (an NFT is a non-fungible token, such as a collectible);
- no advertising;
- no tracking.
What it sends, and to whom
The wallet runs in your browser. The developer runs no server. Each service named below sees your IP address, as any website you visit does.
By default the wallet talks to one service: the Ethereum RPC endpoint. The RPC
endpoint is the server that the wallet asks about the blockchain and sends your
transactions through. Usually it is a node, a computer running the Ethereum
software. A new install uses a public one,
https://ethereum-rpc.publicnode.com. You can change it in Settings.
The RPC endpoint sees every address that the wallet asks about and every transaction that the wallet sends. While the wallet is open, it asks for your balances every 10 seconds. While it is closed, it asks every 60 seconds. If you want privacy, point the Ethereum RPC setting at a node of your own.
On Ethereum Mainnet, the main Ethereum network, the wallet reads USD prices through the RPC endpoint, from Chainlink price feed contracts. No price service is contacted. A token with no Chainlink price feed shows no USD value.
Two more services get your data only after you turn on a setting. Both settings are off in a new install. The first screen and Settings both offer the two settings.
- "Use Blockscout". Blockscout is an open-source block explorer, a service that indexes the blockchain and answers questions about it. With the setting on, the wallet sends Blockscout your addresses on each refresh, and the hash of each transaction you open. A hash is the id of a transaction. In return the wallet shows your transaction history, transaction details and the tokens you have not added yourself. You can point the setting at a Blockscout server of your own.
- "Check recipients on Etherscan". Etherscan is a block explorer website. With the setting on, the wallet fetches the recipient's Etherscan page each time you review a send. The wallet warns when Etherscan labels the address as phishing, scam or exploiter. Only the recipient's address is sent. The Etherscan server cannot be changed.
Each time a site's request opens an approval screen, the wallet checks the site against a phishing list built into the extension. That check sends nothing anywhere.
These stay in your browser and never leave it:
- your recovery phrases, private keys and extended private keys, encrypted with your password;
- your wallet names and your settings;
- which sites you have allowed or denied;
- the list of fraud contracts that the wallet has seen.
The Etherscan links on the screens are ordinary links. They contact nothing until you click them.
Installing
AutistMask is built from source. ../README.md says how:
make setup and then make build write the extension into dist/chrome/ and
dist/firefox/.
Chrome:
- Open
chrome://extensions/. - Turn on "Developer mode".
- Click "Load unpacked" and pick
dist/chrome/.
Firefox, version 115 or newer:
- Open
about:debugging#/runtime/this-firefox. - Click "Load Temporary Add-on" and pick
dist/firefox/manifest.json.
A temporary add-on is unloaded when Firefox exits. Add it again the same way on
every start. Your wallets survive the restart, because Firefox keeps the
extension's storage between loads. Removing the add-on in about:addons
destroys that storage. On Firefox, Remove is final. Your recovery phrase,
private key or extended private key is then the only way back.
AutistMask does not run in Firefox private windows. If Firefox is set to never remember history, every window is private, and the extension does not run at all.
Your password and your backup
Each wallet has its own password. The password encrypts that wallet's secret, its recovery phrase or key, on this device. The encryption uses Argon2id to turn the password into a key and XSalsa20-Poly1305 to encrypt with it, through the libsodium library.
The password is not part of your recovery phrase. Anyone with the phrase can restore the wallet on any device without the password. The password protects only the copy stored in this browser.
While a phrase wallet is in this browser, [recovery phrase] in Settings shows
its phrase after your password. Once this browser's copy is gone too, the wallet
is lost.
The wallet asks for the password when you:
- send a transaction;
- sign a transaction, message or typed data for a site (typed data is structured data laid out as named fields);
- show a recovery phrase;
- export a private key;
- delete a wallet with "Confirm Delete".
It never asks for the password to:
- show balances;
- receive funds;
- read the transaction history;
- remove an address.
The password cannot be recovered or reset. If you forget it, you can still delete the wallet with "I have lost my password". Then add the wallet again from your backup, with a new password. See Deleting a wallet below.
Getting started
Creating a wallet
- Click the AutistMask icon in the browser toolbar.
- The first screen offers "Use Blockscout" and "Check recipients on Etherscan". Both start off. Tick what you want; you can change both later in Settings.
- Click "Add wallet".
- On the "From Phrase" tab, click the die button. It writes a new 12-word recovery phrase into the box.
- Write the words down and keep them safe. Anyone with them can take your funds. Without them, this browser's copy is the only copy of your wallet.
- Choose a password and type it twice. It needs at least 12 characters, unless "Allow weak passwords" is on in Settings.
- Click "Import".
Later wallets are added from Settings with "+ Add wallet", or with the "Add additional wallet..." link at the bottom of the home screen.
Importing a wallet
The Add Wallet screen has three tabs:
- "From Phrase": paste a 12 or 24 word recovery phrase. AutistMask computes
addresses from the phrase by the rule
m/44'/60'/0'/0, called the derivation path. Most wallets use the same rule, so the same phrase gives the same addresses here and elsewhere. - "From Key": paste one private key. The wallet gets one address.
- "From xprv": paste an extended private key. It must be the master key, the root of the key tree, not a key computed from the root. The wallet behaves like a phrase wallet but has no phrase to show.
All three tabs ask for the same password fields. "Import" finishes the job.
After a phrase or xprv import the wallet looks for addresses that have been used. The scan counts an address as used when it holds ETH or has sent a transaction. An address that only received tokens is not found. The scan checks addresses through the RPC endpoint, five at a time, and stops after five unused ones in a row. When it finds more than one used address, those addresses replace the wallet's address list, and a message says how many were found.
The wallet refuses:
- a phrase or key that is already added;
- an invalid phrase or key;
- an extended private key that is not a master key.
Adding addresses
A wallet made from a phrase or an extended private key can hold many addresses. On the home screen, click the "+" button next to the wallet's name. The wallet computes the next address at once. The same phrase always gives the same sequence of addresses. Each address is labelled "Address N".
The active address
One address is the active address. The home screen shows it at the top, with its ETH balance and its USD value. "Send" and "Receive" on the home screen act on the active address. Connected sites see the active address and no other. Tap any address row on the home screen to make that address active.
Removing an address
Each address of a phrase or xprv wallet with more than one address has an [x]
button on the home screen. The confirmation screen explains what removing does.
Nothing is destroyed: the address stays yours, and any funds at it stay where
they are. The wallet stops listing the address and forgets the sites allowed or
denied for it.
Getting the address back is not easy. "+" computes an address that this wallet has never listed, so never the removed one. The way back is to delete the whole wallet and import its backup again. The scan after the import finds the address only if it holds ETH or has sent a transaction.
Deleting a wallet
Open Settings and click [x] next to the wallet. Type the wallet's password and
click "Confirm Delete". Deleting erases the copy of the key stored in this
browser and the wallet's site permissions. Nothing on the blockchain changes.
If you have forgotten the password, click "I have lost my password". The next screen asks you to type the wallet's name instead. "Delete This Wallet Forever" then deletes the wallet without a password. With a kept copy of the wallet's backup you can add the wallet again with a new password. Without one, deleting the wallet loses everything it holds, forever.
Tokens
Which tokens are shown
A tracked token is one you added yourself, by its contract address. A tracked token is listed on every address while "Show tracked tokens with zero balance" is on, which it is in a new install. With that setting off, a tracked token is listed only on the addresses that hold it. Tracked tokens are shown whether or not "Use Blockscout" is on.
Other tokens appear only while "Use Blockscout" is on. Blockscout reports every token that an address holds. The wallet lists such a token only when it is on the bundled list of well-known tokens or has at least 1,000 holders. Everything else is treated as spam and hidden. Turning "Use Blockscout" off removes every untracked token from the lists at once.
The balance list and the send screen hide a token that uses a well-known symbol
from another contract, ETH included. A token you track yourself is still
listed at zero while "Show tracked tokens with zero balance" is on. See Scam
protection.
Tracking a token
From an address:
- Click
[info]on the address. - Click "+ Token".
- Enter the token's contract address, or pick one of the common tokens offered. The common tokens are offered on Ethereum Mainnet only.
- Click "Add".
From Settings, under Tracked Tokens, click "+ Add token". That screen offers the top 10 tokens as buttons, the top 100 in a dropdown, and a contract address field. The two lists are offered on Ethereum Mainnet only.
A token is tracked on the network that it was added on. Settings lists the
tracked tokens of the active network, each with an [x] button that stops
tracking it.
The wallet refuses to track:
- a token that is already tracked;
- an address on its scam list;
- a contract that does not answer as an ERC-20 token.
The token screen
On an address's screen, click any balance row. The token screen shows:
- the token's balance;
- its contract address;
- its name, symbol and decimals (the number of decimal places its amounts have);
- its holder count, when known;
- its website, when known;
- the token's own transaction history.
Sending
- Click "Send" on the home screen, on an address's screen or on a token's screen.
- Choose what to send: ETH, or one of the tokens that the address holds.
- Enter the recipient. This is an address, or an ENS name such as
vitalik.eth. An ENS name stands for an address, and the wallet looks it up through the RPC endpoint. - Enter the amount, or click "Max".
- Click "Review".
"Max" fills in a token's whole balance. For ETH it fills in the balance minus the network fee that the confirmation screen will reserve, so enter the recipient first. A message says why when there is nothing to fill in.
An amount must be a number above zero, written as digits with at most one decimal point. ETH has 18 decimal places. A token has as many as it declares, up to 18. Digits beyond them must be zeros.
An ENS name is refused when it has no address recorded on Ethereum. A name whose owner serves its address from a web server instead is refused too. Enter the address instead.
The confirmation screen
The screen shows:
- the type: a native ETH transfer or an ERC-20 token transfer;
- the token's contract address, for a token;
- the From and To addresses, each in full, with an identicon (a small pixel picture made from the address) and an Etherscan link;
- the amount, with its USD value;
- your balance on this network;
- the network fee, the price the network charges to process the transaction. The screen shows what the transfer is expected to cost, and under it the larger amount reserved until the transaction confirms. The network refunds the difference.
It warns when the recipient is:
- on the wallet's list of known scam addresses;
- a burn address, one nobody controls, where funds are destroyed;
- the address you are sending from;
- a contract rather than a person's address;
- an address that has never sent a transaction and holds no ETH;
- labelled as phishing, scam or exploiter on Etherscan, while "Check recipients on Etherscan" is on. A lookup that fails shows no warning, so no warning does not prove the address was checked. While the setting is off, a line says the address was not checked.
It refuses to send, and says why, when:
- the amount is not a valid number;
- the amount is more than you hold;
- the amount plus the fee is more than your ETH;
- your ETH does not cover the fee of a token transfer;
- the fee could not be estimated;
- your balance could not be read.
Enter your password and click "Sign & Send". The wallet signs the transaction and broadcasts it to the network. Before signing, it refuses when:
- the network was switched since you reviewed the send;
- the wallet shown no longer holds the From address;
- the fee or gas limit that the network quotes is above the wallet's limits, which allow a total fee of at most 1 ETH. Gas is the unit Ethereum measures work in, and the gas limit is the most gas the transaction may use;
- the token contract now reports a different number of decimals than the amount was shown with.
After sending
A waiting screen shows the transaction hash and a counter. The wallet asks the network every 10 seconds for the receipt, the network's record that the transaction was included in a block. The wait resumes if you close and reopen the wallet. Then:
- a receipt opens the success screen, with the block number, the hash and Etherscan links;
- no receipt after 60 seconds opens the error screen with a timeout message. A timeout does not mean the transaction failed. It may still confirm; check the hash on Etherscan;
- six failed lookups in a row open the error screen with a message saying the network could not be reached. Check the Ethereum RPC setting.
Sending a specific token
On a token's screen, "Send" opens the send screen with that token locked in. What to send cannot be changed there.
Receiving
- Click "Receive" on the home screen, on an address's screen or on a token's screen.
- Show the QR code, or click "Copy address".
Give the address only to senders on the network you are using. AutistMask works on Ethereum Mainnet and the Sepolia test network. Tokens sent to your address on another network do not appear in AutistMask, and it cannot move them. Opened from a token's screen, the Receive screen warns that this token sent on another network is lost.
Transaction history
Transaction history comes from Blockscout, so it needs "Use Blockscout". While the setting is off, each history list shows one line saying so.
- The home screen lists up to 25 of the most recent transactions across all your addresses.
- An address's screen lists up to 25 of its most recent transactions.
- A token's screen lists the token's transfers among those 25.
Each row shows:
- the age and the direction, "Sent" or "Received". A row for a call to a contract shows the name of the call instead, such as "Approve", and a symbol without an amount;
- the amount;
- the other party's address, in full. A swap row shows your own address here.
The scam filters below hide fake transfers and dust from these lists. Dust is a tiny amount of ETH.
Tap a row to open the transaction. The transaction screen shows:
- the hash;
- the type: native ETH transfer, ERC-20 token transfer, swap, token approval, contract call or contract creation;
- the status;
- the From and To addresses, in full;
- the time, as a date and time and as an age;
- the exact amount, and under it the amount in the token's smallest unit;
- the token's contract address, for a token transfer;
- these details from Blockscout:
- the block number;
- the nonce, the sender's sequence number for this transaction;
- the gas price, the gas used and the fee;
- what the transaction did, when the wallet can read it;
- the raw data, the bytes the transaction carried.
Tapping the hash, an address, the amount or a detail copies it. Each address, hash and block has an Etherscan link.
Connecting to web3 sites
AutistMask offers every page a standard wallet connection. It takes
window.ethereum, the name sites look for, when no other wallet has taken it.
Sites that list wallets can pick AutistMask by name. A site that wants your
wallet opens a connection request.
Connection requests
The request shows the site's origin: its address up to the first slash, for
example https://app.example. The origin includes the scheme (https), the
host and the port. The request also shows the address that will be shared, which
is the active address. Click "Allow" or "Deny".
"Remember my choice for this site" starts ticked. The box stays as you last left
it. While it is ticked, the wallet keeps your answer, and the site is not asked
again. The answer applies to that exact origin and to the active address. A
choice remembered for https://app.example does not cover http://app.example
or another port of the same host. A choice remembered for one address does not
cover another.
Without "Remember", an allowed site stays connected until:
- the browser closes;
- you make another address active;
- you remove the site in Settings;
- you remove the address, or delete its wallet.
Transaction requests
A connected site can ask you to send a transaction. The request opens in a window of its own. The wallet first fills in the nonce from the network, and the fee and gas limit too when the site gave none. If that fails, no window opens and the site is told.
The window shows:
- the site's origin;
- what the transaction does, when the wallet can read it:
- a token transfer;
- a token approval, which lets a contract move your tokens;
- a swap, an exchange of one token for another, through the Uniswap Universal Router, step by step;
- the From address and the contract or recipient, in full;
- the value in ETH and its USD value;
- the largest network fee the transaction can cost, with the gas limit and the price per unit of gas;
- the network and the nonce;
- the raw data.
Enter your password and click "Confirm". The wallet signs exactly the transaction shown, and checks the signed transaction against every value on the screen before it broadcasts anything. What you read is what goes out, or nothing does. "Reject" tells the site you refused.
One transaction request is open at a time, across all sites. While one is open, the wallet refuses any other, and the site is asked to send it again later.
Signature requests
A connected site can ask you to sign a message or typed data. The request opens in a window of its own. The window shows:
- the site's origin;
- whether a message or typed data is to be signed;
- the From address;
- what will be signed.
A plain message is shown as text, left to right in the order it was written, so
right-to-left characters cannot reorder it. An invisible character, such as a
zero-width space, is shown as its code in a small box, for example U+200B. The
message is also shown as hex, that is as the hexadecimal digits of its bytes.
Typed data is shown as its fields. Fields that the site added but that are not
signed are listed apart, under "Not part of the signature". A token permission
is a Permit or a Permit2 permission. Permit2 is Uniswap's contract for token
allowances, that is for permissions to move tokens. For a token permission, a
red warning names the spender and each token and amount that the spender may
take.
"Sign" is disabled, and the screen says why, when:
- the typed data cannot be signed as shown;
- the typed data names a different network than the active one;
- a message is not hex.
A request made with the older eth_sign method shows a warning that names the
method. Enter your password and click "Sign" to sign. "Reject" tells the site
you refused.
Network switch requests
A connected site can ask to switch the wallet's network. The window shows the site's origin, the current network and the requested network. Nothing changes until you click "Switch". Switching changes the network for the whole wallet and for every site. "Reject", or closing the window, leaves everything as it was.
Closed windows
If you close a transaction or signature window without answering, the request stays open; the site is not told you refused. Click the AutistMask icon in the toolbar to bring the request back. Until you answer, the icon opens the request instead of the wallet. When several requests wait this way, the oldest comes first. A closed connection or network switch window counts as a refusal.
Phishing warnings
When the requesting site is on the built-in phishing list, every one of these windows shows a red warning at the top before you decide.
Managing sites
Settings lists the sites under three headings:
- Allowed Sites: allowed with "Remember my choice for this site";
- Connected Sites: allowed without it;
- Denied Sites: denied with it.
[x] beside an allowed or connected site disconnects the site. The site is told
it has no address. [x] beside a denied site forgets the refusal.
Making another address active disconnects every site allowed without "Remember", and rejects every request still waiting for an answer. A site remembered for the old address only is not told the new one.
Scam protection
Address poisoning is a scam. The scammer gets an address that resembles one you have dealt with into your history, hoping that you copy it later instead of the real one. Five defenses against this and related scams are on in a new install.
Fake tokens. Scammers issue tokens from their own contracts under a well-known
symbol, such as USDT or ETH. The wallet knows which contracts may carry each
symbol on its bundled list. The balance list and the send screen hide a token
that carries one of those symbols from any other contract. ETH and the test
network's SepoliaETH belong to no contract at all, so every token that claims
them is hidden. In the history, the rule applies while "Hide fake tokens
impersonating a known symbol" is on. A token you track yourself is still listed
at zero while "Show tracked tokens with zero balance" is on.
Tokens with few holders. Real tokens have many holders; tokens made for address poisoning have almost none. While "Hide tokens with fewer than 1,000 holders" is on, the history and the send screen hide a token with fewer than 1,000 reported holders. The balance list has its own rule: an untracked token appears only when it is on the bundled list or has at least 1,000 reported holders. When Blockscout reports no holder count for a token, the history and the send screen still show it. While "Use Blockscout" is off, no holder count is known.
Fraud contracts. When the wallet detects a fake token transfer, it adds the token's contract to a list that it keeps. While "Hide transactions from detected fraud contracts" is on, the history hides transfers from the contracts on that list. The send screen never offers those tokens. Turning "Hide fake tokens impersonating a known symbol" off also stops new contracts being added to the list.
Dust transactions. Scammers send tiny amounts of ETH from an address that resembles one you have dealt with, so that the similar address lands in your history. While "Hide dust transactions below N gwei" is on, ETH transfers below the threshold are hidden from the history. A gwei is a billionth of an ETH. The threshold starts at 100,000 gwei, which is 0.0001 ETH. A threshold of 0 hides nothing.
Known scam addresses. The wallet ships a list of addresses used for fraud, for phishing and for wallet drainers, contracts that empty a wallet once given permission. Sending to one of them raises a warning on the confirmation screen, and such an address cannot be tracked as a token. The list holds only addresses involved in fraud; it is not a sanctions list.
Addresses and hashes are shown in full, because address poisoning relies on shortened ones. The only shortened address is the label of a token with no known symbol: the first 10 characters of its contract address and "…". That label appears on the send screen, on the token screen, and on the confirmation and result screens of a send.
The wallet also warns about phishing sites. The list of phishing domains is built into the extension and checked in your browser, so nobody learns which sites you visit. The list is as current as the AutistMask build you run.
Networks
AutistMask works on Ethereum Mainnet, the real network, and on the Sepolia Testnet, a network for testing whose ETH has no value. Switch between them under Network in Settings. A connected site can also ask for a switch, which you approve or reject.
Switching:
- restores the Ethereum RPC and Blockscout URLs you last used on that network, or that network's defaults;
- shows the tokens tracked on that network;
- reloads every balance and history for the new network;
- tells every open site about the new network.
On Sepolia, a red [TESTNET] banner sits at the top of the wallet, and no USD
values are shown.
Settings
Click the gear in the title bar.
- Wallets: your wallets. Tap a name to rename it.
[recovery phrase]shows a phrase wallet's recovery phrase, after your password.[x]deletes a wallet. "+ Add wallet" adds one. - Passwords: "Allow weak passwords" lets you choose a password shorter than 12 characters when you add a wallet.
- Tracked Tokens: the tokens tracked on the active network, each with
[x], and "+ Add token". - Display:
- "Show tracked tokens with zero balance";
- "UTC Timestamps"; otherwise times are shown in your local time;
- the theme: System, Light or Dark.
- Network: Ethereum Mainnet or Sepolia Testnet.
- Ethereum RPC: the RPC endpoint URL. "Save" checks that the URL answers for the shown network before storing it.
- Blockscout API: the "Use Blockscout" checkbox and the Blockscout URL. "Save" checks that the URL answers before storing it. That check sends no data of yours and runs whether or not the checkbox is ticked.
- Etherscan: the "Check recipients on Etherscan" checkbox.
- Token Spam Protection: the four filters described under Scam protection, and the dust threshold in gwei.
- Allowed Sites, Connected Sites, Denied Sites: see Managing sites.
- About:
- the project link;
- the license and the author;
- the version and the release date;
- the commit the build came from.
- Debug: hidden until you click the version ten times. It holds a checkbox that turns on a red banner and more detailed logging in the browser console.
The URLs you save are remembered per network.
If the wallet cannot read its saved data
When AutistMask cannot read what it stored, it shows a screen headed "Saved Data Cannot Be Read" instead of the wallet. Nothing has been changed or erased, and nothing can be signed or sent. Sites that ask the wallet for anything are told that the saved data cannot be read.
Click "Export Saved Data" first. The stored data appears in a box on the screen, and the browser offers it as a download when it allows one. Keep that copy. It may hold the encrypted keys of your wallets, and it is the only copy.
"Erase Saved Data" deletes every wallet stored in this browser and starts the
wallet fresh. You must type ERASE MY WALLET first. With a kept recovery
phrase, private key or extended private key, you can add a wallet again
afterwards. Without that, or the exported copy, everything the wallet holds is
gone.
Frequently asked questions
Can I use AutistMask alongside another wallet?
Yes. AutistMask computes addresses by the rule m/44'/60'/0'/0, so the same
recovery phrase gives the same addresses as any other wallet using that rule.
Two wallet extensions can be installed side by side. Only one of them can hold
window.ethereum; sites that list wallets can pick AutistMask by name.
Can I use a hardware wallet?
No. AutistMask does not support hardware wallets.
Which networks are supported?
Ethereum Mainnet and the Sepolia Testnet. No others.
Where is my data stored?
In your browser's extension storage. Recovery phrases and keys are encrypted with your password. Addresses, balances and settings are stored unencrypted, so the wallet can show them without a password. Nothing is sent to any server run by AutistMask.
What happens if I uninstall the extension?
The browser deletes the extension's storage. Make sure you have your recovery
phrase, private key or extended private key before uninstalling. With that
backup you can restore the wallet in AutistMask or in any other wallet that uses
the rule m/44'/60'/0'/0.
What happens when a transaction times out?
After 60 seconds without a receipt the wallet shows the error screen. A timeout does not mean the transaction failed. It may still confirm; check the hash on Etherscan. Congestion or a low fee can delay confirmation past 60 seconds.
License
GPL-3.0. See LICENSE.