Files
AutistMask/docs/README.md
T
sneak aaa7413e78
check / check (push) Canceled after 0s
e2e / e2e-chrome (push) Canceled after 0s
e2e / e2e-firefox (push) Canceled after 0s
docs: rewrite the user guide sentence by sentence against the prose rules
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: no screen shortens an address, and a fake token that
claims ETH is hidden from the balance list too. 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
2026-11-02 01:35:31 +00:00

654 lines
27 KiB
Markdown

# 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, a private key or
an extended private key.
- It shows the ETH and ERC-20 token balances of your addresses. ETH is the
currency of Ethereum. An ERC-20 token is a token issued by a contract on
Ethereum.
- 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;
- no advertising;
- no tracking.
## What it sends, and to whom
The wallet runs in your browser. The developer runs no server.
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. 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. If you want privacy, point the Ethereum RPC
setting at a node of your own.
On Ethereum Mainnet the wallet reads USD prices through the RPC endpoint, from
Chainlink price feed contracts. No price service is contacted.
Two more services get your data only after you turn on a setting. Both are off
in a new install. The first screen and Settings both offer them.
- "Use Blockscout". Blockscout is an open-source block explorer, a service that
indexes the blockchain. With the setting on, the wallet sends your addresses,
and the hash of each transaction you open, to the Blockscout server set in
Settings. In return the wallet shows your transaction history, transaction
details and the tokens you have not tracked. 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. It warns when Etherscan labels the address as phishing,
scam or exploiter. Only the recipient's address is sent. The Etherscan server
cannot be changed.
The wallet checks each site that asks to connect, to send or to sign 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;
- which wallets, addresses and tokens you have;
- which sites you have allowed or denied;
- the spam filter settings and 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`](../README.md) says how:
`make setup` and then `make build` write the extension into `dist/chrome/` and
`dist/firefox/`.
Chrome:
1. Open `chrome://extensions/`.
2. Turn on "Developer mode".
3. Click "Load unpacked" and pick `dist/chrome/`.
Firefox, version 115 or newer:
1. Open `about:debugging#/runtime/this-firefox`.
2. 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. If you lose the phrase, the password
cannot bring it back.
The wallet asks for the password when you:
- send a transaction;
- sign a transaction, message or typed data for a site;
- show a recovery phrase;
- export a private key;
- delete a wallet with "Confirm Delete".
It never asks for the password to show balances, to receive funds, to read the
transaction history or to 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
1. Click the AutistMask icon in the browser toolbar.
2. 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.
3. Click "Add wallet".
4. On the "From Phrase" tab, click the die button. It writes a new 12-word
recovery phrase into the box.
5. Write the words down and keep them safe. Anyone with them can take your
funds. If you lose them, the wallet is gone, and AutistMask cannot recover
them.
6. Choose a password and type it twice. It needs at least 12 characters, unless
"Allow weak passwords" is on in Settings.
7. 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 derives
addresses on the path `m/44'/60'/0'/0`, the one most wallets use, 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, a key from which a whole series of
addresses is derived. It must be the master key, the root of that series. 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. It 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 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 next
address is derived 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
it. 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 only stops listing it.
Getting the address back is not easy. "+" derives the next unused address, not
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 has been
used.
### 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 by contract address. Tracked tokens are shown
on every address, whether or not "Use Blockscout" is on. By default a tracked
token is shown even at zero balance; the Display setting changes that.
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.
A fake token that claims a well-known symbol from the wrong contract is hidden
everywhere, `ETH` included. See Scam protection.
### Tracking a token
From an address:
1. Click `[info]` on the address.
2. Click "+ Token".
3. Enter the token's contract address, or pick one of the common tokens offered.
The common tokens are offered on Ethereum Mainnet only.
4. 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;
- its holder count, when known;
- its website, when known;
- the token's own transaction history.
## Sending
1. Click "Send" on the home screen, on an address's screen or on a token's
screen.
2. Choose what to send: ETH, or one of the tokens that the address holds.
3. 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.
4. Enter the amount, or click "Max".
5. 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.
A name that has no on-chain address is refused. So is a name whose owner keeps
its address off-chain. 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: 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, a program on Ethereum 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. While that 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;
- 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 for the receipt every 10 seconds, and the wait resumes if you close and
reopen the popup. 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. The
transaction may still confirm later; 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
1. Click "Receive" on the home screen, on an address's screen or on a token's
screen.
2. 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 says this for that token.
## 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 the 25 most recent transactions across all your
addresses.
- An address's screen lists that address's transactions.
- A token's screen lists that token's transfers for the address.
Each row shows:
- the age and the direction;
- the amount;
- the other party's address, in full.
The scam filters below hide fake and dust transactions from these lists.
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;
- the block number;
- the nonce, the transaction's sequence number for your address;
- the gas price, the gas used and the fee;
- what the transaction did, when the wallet can read it;
- the raw data.
Tapping a value copies it. Each address, hash and block has an Etherscan link.
The block, nonce, gas, fee and raw data come from Blockscout.
## Connecting to web3 sites
AutistMask gives every page a standard wallet connection (`window.ethereum`). A
site that wants your wallet opens a connection request.
### Connection requests
The request shows the site's origin, that is its scheme, host and port, for
example `https://app.example`. It shows the address that will be shared, which
is the active address. Click "Allow" or "Deny".
Tick "Remember my choice for this site" to skip the request next time. The
choice applies to that exact origin. A choice remembered for
`https://app.example` does not cover `http://app.example` or another port of the
same host.
Without "Remember", an allowed site stays connected until the browser closes,
until you make another address active, or until you remove the site in Settings.
### 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;
- a swap 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 fee
per 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. A site that sends another while one
is unanswered is told to wait.
### Signature requests
A connected site can ask you to sign a message or typed data. Typed data is
structured data laid out as named fields. The request opens in a window of its
own and shows the site's origin, the type, the From address and what will be
signed.
A plain message is shown as text, in the order of its bytes. A character that
paints nothing, such as a zero-width character, is shown as a marked code
instead. The hex form of the message is shown under the text.
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". When the data is a
token permission (a `Permit`, or a Permit2 permission; Permit2 is Uniswap's
token allowance contract), a red warning names the spender, and each token and
amount that the signature lets the spender 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 in hex form.
A request made with the older `eth_sign` method shows a warning that says so.
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 it. 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.
## Scam protection
Five defenses are on in a new install.
Fake tokens. Scammers create tokens that borrow a well-known symbol, such as
`USDT` or `ETH`, from a contract that has nothing to do with it. The wallet
knows which contracts may carry each symbol on its bundled list. A token that
carries one of those symbols from any other contract is hidden from your
balances, from the send screen and from the transaction history. `ETH` and the
test network's `SepoliaETH` belong to no contract at all, so every token that
claims them is hidden. A token you tracked yourself is still listed, at zero. In
the history, this is the setting "Hide fake tokens impersonating a known
symbol".
Tokens with few holders. Real tokens have many holders; scam 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. A token whose holder count Blockscout does not report is not hidden
from the history or the send screen. While "Use Blockscout" is off, no holder
count is known.
Fraud contracts. When the wallet detects a fake token transfer, it adds the
contract to a list that it keeps. Transfers from those contracts are hidden from
the history while "Hide transactions from detected fraud contracts" is on. The
send screen always leaves them out. Turning the fake-token setting off also
stops new contracts being added to the list.
Dust transactions. Scammers send tiny amounts of ETH from addresses that
resemble your real contacts, so that the look-alike 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,
phishing and wallet draining. 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.
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 every screen, 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) and 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, the author, the version, the release
date and 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 where it can. 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 derives addresses on the path `m/44'/60'/0'/0`, so the same
recovery phrase gives the same addresses as any other wallet using that path.
Two wallet extensions can be installed side by side. Only one of them can answer
a site as `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?**
Your data is deleted. 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 standard path.
**What happens when a transaction times out?**
After 60 seconds without a receipt the wallet shows the error screen. The
transaction has not 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`](../LICENSE).
## Author
[@sneak](https://sneak.berlin)