Rewrites docs/README.md from scratch for issue 672. Every statement was checked against the code on next. The two false statements of the old guide 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. Each technical word is defined in a short clause where it first appears: block, receipt, network fee, gas, swap, token approval, Permit, Permit2, Uniswap, contract, origin, host name, port, nonce, hash, node. Model: fable-5-1
749 lines
32 KiB
Markdown
749 lines
32 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 (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 (a swap exchanges one token for another);
|
|
- 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. The blockchain is the shared record of all Ethereum
|
|
transactions. It grows in blocks; a block is a batch of transactions that the
|
|
network adds together. Usually the endpoint 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 feeds. A Chainlink price feed is
|
|
a contract that publishes an exchange rate on Ethereum. 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
|
|
reads the whole blockchain and answers questions about it. With the setting
|
|
on, the wallet sends Blockscout your addresses each time it refreshes your
|
|
balances, 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 a window, 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 contracts that the wallet has caught issuing fake tokens.
|
|
|
|
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.
|
|
|
|
While a phrase wallet is in this browser, `[recovery phrase]` in Settings shows
|
|
its phrase after your password. If you lose the written phrase and this
|
|
browser's copy is gone, 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
|
|
|
|
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. Without them, this browser's copy is the only copy of your wallet.
|
|
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 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; `xprv` is the usual short name for
|
|
one. It must be the master key, the one that every other key of the wallet is
|
|
computed from, not a key computed from it. 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 only addresses that this
|
|
wallet has never listed. The removed address was listed once, so "+" skips it.
|
|
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 built-in 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 carries a well-known
|
|
symbol, `ETH` included, but comes from another contract. 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:
|
|
|
|
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 (the number of decimal places its amounts have);
|
|
- how many addresses hold it, 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. The network fee is the price the network charges to process a
|
|
transaction. It depends on the recipient, 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: "Native ETH transfer", or "ERC-20 token transfer" with the token's
|
|
symbol. Native means that ETH is built into the network and needs no contract;
|
|
- 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 screen shows what the transfer is expected to cost, and
|
|
under it the larger amount reserved until the network has processed the
|
|
transaction. 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 failed lookup shows no warning. A missing warning
|
|
therefore does not prove that Etherscan was asked. 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 sends it to the network. Before signing, it refuses when:
|
|
|
|
- the network was switched since you reviewed the send;
|
|
- the selected wallet 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 be included 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 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 transaction can also ask a
|
|
contract to do something; that is a contract call. A row for a contract call
|
|
shows the call's name instead, such as "Approve" or "Swap";
|
|
- the amount. A contract call row shows an amount only when the call moved a
|
|
token. A swap row shows the amount received, or the amount paid in when no
|
|
token came back. A row with no amount shows a symbol alone;
|
|
- 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, one of:
|
|
- "Native ETH Transfer";
|
|
- "ERC-20 Token Transfer";
|
|
- "Swap";
|
|
- "Token Approval", a call that lets a contract move your tokens;
|
|
- "Contract Call", any other call to a contract;
|
|
- "Contract Creation", a transaction that puts a new contract on the
|
|
network;
|
|
- the status, "Success" or "Failed";
|
|
- 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, for example `https://app.example`. The
|
|
origin is the start of the site's web address, before any path. It holds the
|
|
scheme (`https` or `http`), the host name (`app.example`) and a port number,
|
|
which most addresses leave out. 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 name. 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;
|
|
- a swap through the Uniswap Universal Router, step by step. Uniswap is a
|
|
token exchange made of contracts on Ethereum, and the Universal Router is
|
|
its contract that carries out a swap in steps;
|
|
- 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 in the
|
|
window before it sends 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".
|
|
|
|
Some typed data is a token permission: a signature that lets a spender take your
|
|
tokens later without asking you again. The spender is the contract or address
|
|
that the permission names. The wallet recognises two kinds:
|
|
|
|
- `Permit`, a signed permission that a token's own contract accepts;
|
|
- 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 window 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 `eth_sign`, an older way of asking for a signature, shows a
|
|
warning that names it. 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 whose remembered
|
|
choice covers only the old address is not told the new one.
|
|
|
|
## Scam protection
|
|
|
|
Address poisoning is a scam. The scammer makes an address that looks like one
|
|
you have dealt with. The scammer then puts that address in your history, hoping
|
|
you copy it later by mistake. Five defenses guard against this and related
|
|
scams. The list of known scam addresses is always on. Settings has a switch for
|
|
each of the other four, and all four 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 built-in list. The balance list and the send screen hide a token
|
|
that carries one of those symbols but comes from another 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 built-in 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 known for fraud,
|
|
including phishing addresses and wallet drainers. A wallet drainer is a contract
|
|
that empties a wallet once given permission. Sending to a listed address raises
|
|
a warning on the confirmation screen, and a listed 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 sites 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": times are shown in UTC, the world reference time,
|
|
instead of 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. The API
|
|
is the address at which a program, here the wallet, asks Blockscout its
|
|
questions. "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 switches described under Scam protection:
|
|
- "Hide fake tokens impersonating a known symbol";
|
|
- "Hide tokens with fewer than 1,000 holders";
|
|
- "Hide transactions from detected fraud contracts";
|
|
- "Hide dust transactions below N gwei", with the threshold N as a field.
|
|
- 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 source code revision (the commit) the build came from.
|
|
- Debug: hidden until you click the version ten times. It holds the checkbox
|
|
"Enable debug mode". That checkbox turns on a red banner and more detailed
|
|
logging in the browser console, the browser's own log for developers.
|
|
|
|
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 be included later; check the
|
|
hash on Etherscan. A busy network or a low fee can delay a transaction past 60
|
|
seconds.
|
|
|
|
## License
|
|
|
|
GPL-3.0. See [`LICENSE`](../LICENSE).
|
|
|
|
## Author
|
|
|
|
[@sneak](https://sneak.berlin)
|