# GHOST Wallet - Light Client Wallet

![GHOST Wallet Logo](./assets/img/ghostWallet-Featured-Image.png)

## Overview

Welcome to GHOST Wallet - the ultimate light client wallet! GHOST Wallet leverages the power of a light client that implements the JSON RPC to provide a highly resilient, efficient, and user-friendly wallet experience. This extension will be able to instantly connect any DApp to GHOST and CASPER chains without the hassle of waiting for synchronization.

## Getting Started

### Download

You can download pre-build extension for browser of your choice [here](https://git.ghostchain.io/ghostchain/ghost-extension-wallet/releases).

- **Chromium-based Browsers** - Use [official guide](https://developer.chrome.com/docs/extensions/get-started/tutorial/hello-world?#load-unpacked) to install
- **Firefox-based Browsers** - To install extension temporary  check official [guide here](https://brave.com/)

__**NOTE: if you are using [Brave Browser](https://brave.com/) go to `Options` right after the installation and follow the instructions**__

### Prerequisites

- **pnpm** - [Fast, disk space efficient package manager](https://pnpm.io/)

### Installation

Clone the repository and install dependencies:

```bash
pnpm install

# to build chrome extension
pnpm build:chrome

# to build firefox extension
pnpm build:firefox
```

### Running the Wallet

Start the development server:

```bash
pnpm dev
```

In another terminal:

```bash
pnpm start
```

This will open the extension in a browser window.

## How it Works

GHOST Wallet runs a single light client instance inside of the user's browser.
When a dapp connects to GHOST Wallet, its connection to the blockchain is
forwarded to that light client instance. Inside the extension, we use low level
API libraries such as the `observable-client`, `substrate-client`, and `json-rpc-provider` to
maintain a connection to light client.

If light client were to crash, GHOST Wallet will automatically re-connect.
However, from the dapp perspective, you will be disconnected and it will be your
responsibility to re-connect back to GHOST Wallet.

## Giving Feedback

If you encounter any issues while using the extension, please don't hesitate to open an issue ticket.

## Acknowledgments

- [Substrate](https://docs.substrate.io/) - The blockchain framework that powers this extension.
- [Smoldot](https://github.com/smol-dot/smoldot) - The light client used for connecting to blockchain.
