Skip to content

unstoppabledomains/resolution-browser-extension

Repository files navigation

Unstoppable Domains Browser Extension

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.

Getting Started

Prerequisites

Ensure that you have node (version 16) and yarn installed on your machine. If not, you can install it via Yarn's official documentation.

Running locally

  1. Clone the repository:

    git clone <repository-url>
    
  2. Copy .env.template to .env and fill in the required values:

    cp .env.template .env
  3. Install dependencies and setup your environment:

    yarn install
  4. Run the project locally:

    yarn dev
  5. Once the build is complete, open chrome://extensions in your Chrome browser, enable Developer mode, and load the unpacked extension by selecting the dist folder.

Distribution

This package has builds extension releases for Chrome and Firefox browsers. Follow the steps below to build a new release version.

  1. Update the release version in the package.json file

  2. 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
  3. Find the release files in the ./releases directory

Usage

Basic instructions

  1. Open the extension popup window.
  2. Select a sign in option
    1. Existing users may enter their user name and password
    2. New users may create a new account
  3. Manage wallet
    1. Send / receive crypto by navigating to the desired blockchain asset
    2. Update wallet settings using the "Settings" menu option
      1. Compatibility mode - emulates MetaMask
      2. Connections
  4. Interact with blockchain applications
    1. 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:
      1. Connection requests
      2. Permission requests
      3. Message signatures
      4. Transaction approvals
    2. Wallet operations only proceed with your approval
  5. Send a message using XMTP
    1. Click the menu options at the top right of the extension
    2. Select the Messages option
    3. Select a conversation
      1. Find an existing conversation from the list (if available)
      2. Create a new conversation
        1. Select the search text box
        2. Type a wallet address or domain name
        3. Select the chat partner for a new conversation
  6. Sherlock Assistant
    1. When enabled, Sherlock Assistant finds onchain domain names associated with Ethereum wallet addresses as you browse the web
      1. Updates your webpage to display onchain domain name
    2. Enable / disable Sherlock Assistant
      1. From settings
        1. Click the menu options at the top right of the extension
        2. Update the checkbox option to enable/disable the Sherlock Assistant globally
      2. From a context menu
        1. Right click any webpage to enable/disable Sherlock Assistant for a specific website
  7. Decentralized browsing
    1. Type in a blockchain domain (like matt.crypto) in the browser URL field
    2. You will be redirected to the IPFS gateway with the domain’s IPFS hash record

Sample screenshots

User onboarding

Upgrade to new version screen

image

Sign in screen

image

Account entry screen

image

Main screen

image

Menu options

image

Settings

image

Messages

Chat window

image

Receiving a message notification

image

Sending crypto to another wallet

Choose recipient and amount

image

Confirmation

image

Progress

image

Interacting with an app

Connecting wallet

image

Approving connection

image

Approving a signature

image

Context menu to manage connection

image

Frequently Asked Questions (FAQ)

Why does this extension require access to *.google.com and other search engine domains?

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.

How can I add support for additional search engines?

Adding a new search engine is straightforward:

  1. Update the manifest-template.json file to include permissions for intercepting requests from the new search engine.
  2. 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.