The Unstoppable Domains Browser Extension enables access to onchain applications and domains, facilitating a secure and user-driven experience. The extension includes an integrated wallet with support for multiple blockchains such as Bitcoin, Ethereum, Base, Polygon and Solana. Using the wallet, users can manage their onchain assets directly from the browser and interact with onchain applications.
Additionally, the extension integrates with decentralized storage networks such as IPFS to resolve domain names stored on the blockchain, such as .crypto
and .eth
, directly within the browser.
Ensure that you have node
(version 16) and yarn
installed on your machine. If not, you can install it via Yarn's official documentation.
-
Clone the repository:
git clone <repository-url>
-
Copy .env.template to .env and fill in the required values:
cp .env.template .env
-
Install dependencies and setup your environment:
yarn install
-
Run the project locally:
yarn dev
-
Once the build is complete, open
chrome://extensions
in your Chrome browser, enable Developer mode, and load the unpacked extension by selecting thedist
folder.
This package has builds extension releases for Chrome and Firefox browsers. Follow the steps below to build a new release version.
-
Update the release version in the
package.json
file -
Build a release for distribution
################################## # Build everything ################################## yarn dist ################################## # Build specific release version ################################## # For a mainnet production release NODE_ENV=production; yarn build:all # For a testnet development release NODE_ENV=staging; yarn build:all
-
Find the release files in the
./releases
directory
- Open the extension popup window.
- Select a sign in option
- Existing users may enter their user name and password
- New users may create a new account
- Manage wallet
- Send / receive crypto by navigating to the desired blockchain asset
- Update wallet settings using the "Settings" menu option
- Compatibility mode - emulates MetaMask
- Connections
- Interact with blockchain applications
- The extension will automatically popup when a blockchain application requests to interact with your wallet. For example, the extension may popup for the following application scenarios:
- Connection requests
- Permission requests
- Message signatures
- Transaction approvals
- Wallet operations only proceed with your approval
- The extension will automatically popup when a blockchain application requests to interact with your wallet. For example, the extension may popup for the following application scenarios:
- Send a message using XMTP
- Click the menu options at the top right of the extension
- Select the
Messages
option - Select a conversation
- Find an existing conversation from the list (if available)
- Create a new conversation
- Select the search text box
- Type a wallet address or domain name
- Select the chat partner for a new conversation
- Sherlock Assistant
- When enabled, Sherlock Assistant finds onchain domain names associated with Ethereum wallet addresses as you browse the web
- Updates your webpage to display onchain domain name
- Enable / disable Sherlock Assistant
- From settings
- Click the menu options at the top right of the extension
- Update the checkbox option to enable/disable the Sherlock Assistant globally
- From a context menu
- Right click any webpage to enable/disable Sherlock Assistant for a specific website
- From settings
- When enabled, Sherlock Assistant finds onchain domain names associated with Ethereum wallet addresses as you browse the web
- Decentralized browsing
- Type in a blockchain domain (like matt.crypto) in the browser URL field
- You will be redirected to the IPFS gateway with the domain’s IPFS hash record
This access is essential for redirecting queries from major search engines like Google to decentralized addresses. For instance, searching for "brad.crypto" will redirect to its decentralized counterpart. Note that this extension does not store or transmit your browsing history; all processing is done locally on your device.
Adding a new search engine is straightforward:
- Update the
manifest-template.json
file to include permissions for intercepting requests from the new search engine. - Modify
src/util/searchEngines.ts
to incorporate the new search engine's specific configurations.
Submit a pull request with these changes, and we will integrate the support promptly.