/oasis-wallet-web

The official non-custodial web wallet for the Oasis Network.

Primary LanguageTypeScriptApache License 2.0Apache-2.0

Oasis Wallet

License codecov Renovate enabled Build status FOSSA Status

⚠️ NEVER use the private keys and mnemonics given as example in this repository.

Features

  • Opening wallets through private key or mnemonic
  • Transaction history, currently all transactions are listed. We need to submit a pull-request to oasis-explorer to support pagination
  • Multiple languages (English and French currently supported)
  • Submitting transactions
  • Ledger support
  • Multiple accounts open in parallel

Additional features coming soon

  • Staking (Adding / reclaiming escrow)
  • Staking rewards and history
  • Debonding status
  • Various account & network stats
  • OETH Support

Getting started

Installing and running oasis-wallet

You can quickly get started with the following commands:

yarn install
REACT_APP_BYPASS_LOCAL=1 yarn start

Alternatively, to get started with a local network:

docker-compose up --build -d
yarn install
yarn start

Then go to http://localhost:3000 to access the wallet.

Test accounts

The local single-node network used for development comes built-in with two accounts already having tokens.

Using a private key:
X0jlpvskP1q8E6rHxWRJr7yTvpCuOPEKBGW8gtuVTxfnViTI0s2fBizgMxNzo75Q7w7MxdJXtOLeqDoFUGxxMg==
oasis1qz0k5q8vjqvu4s4nwxyj406ylnflkc4vrcjghuwk

Using a mnemonic:
abuse gown claw final toddler wedding sister parade useful typical spatial skate decrease bulk student manual cloth shove fat car little swamp tag ginger
oasis1qq5t7f2gecsjsdxmp5zxtwgck6pzpjmkvc657z6l

Architecture

Oasis-wallet needs multiple components to run, all provided in the docker-compose file for local development.

  • envoy-proxy, used as a gRPC gateway for live access to the oasis-node, to fetch live balance, information about the current state of the network, and to submit transasctions.
  • oasis-explorer, a block indexer to store historical data about transactions, accounts, validators, rewards, blocks and mores. It exposes an OpenAPI. oasis-explorer requires two databases :
    • A PostgreSQL instance to keep track of it's import batches
    • A Clickhouse server to store the indexed data

Contributing & development

Running the tests

The repository has two different test strategies:

  • E2E (End-to-end) tests, ran with Cypress, located in cypress/. These tests require the react app to be started on accessible on port 3000 and the docker-compose stack to be up.
  • Unit & functional tests, ran with Jest, located throughout the codebase

To run all tests:

# Run jest tests
yarn test

# Run cypress tests
docker-compose up -d
yarn start # Run this in another terminal to keep it open
yarn cypress:run

# Manually check that content-security-policy in ./internals/getCsp.js doesn't break any functionality
yarn --silent print-csp
yarn start:prod
# Open http://localhost:5000/account/oasis1qq3xrq0urs8qcffhvmhfhz4p0mu7ewc8rscnlwxe/stake and switch to testnet.
# This exercises at least: fonts, grpc, testnet grpc, monitor, and validator logos

Code style

This repository uses prettier as a code formatter and eslint as it's linter. You can use the following commands:

# Lint the whole repository
yarn lint

# Fix linting issues
yarn lint:fix

Internationalization

Oasis-wallet uses react-i18next for I18n. You can simply use the useTranslation hook inside your components to add additional i18n-ready strings. You can then export the new keys to the translation files by running

yarn run extract-messages

To add a new language, edit src/locales/i18n.ts and i18next-scanner.config.js, then run the command above once more.

License

FOSSA Status