winget install --id=ASGARDEXMaintainers.ASGARDEX -e
WALLET AND EXCHANGE CLIENT FOR THORCHAIN
Symbols:
:heavy_check_mark: implemented
:white_check_mark: planned
-
not needed
| | RUNE | BNB / BEP2 | BTC | BCH | DOGE | ETH / ERC20 | LTC | COSMOS | | -------------- | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | | Keystore | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Ledger * | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Send ** | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Receive | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Upgrade *** | :heavy_check_mark: | :heavy_check_mark: | - | - | - | :heavy_check_mark: | - | - | | Deposit | :heavy_check_mark: | - | - | - | - | - | - | - | | Shares | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | History | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Synths | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
(*) Ledger RUNE
is not supported at stagenet
. Ledger LTC
/BCH
/DOGE
are not supported at testnet
(**) With or without memo
(***) Upgrade RUNE (BEP2) or RUNE (ERC20) to RUNE (Native)
| | RUNE | BNB / BEP2 | BTC | BCH | DOGE | ETH / ERC20 | LTC | COSMOS | | -------------- | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | | Pools overview | - | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Pool detail | - | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Swap | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Deposit * | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Withdraw * | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | | Recovery tool | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | | Synths | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
(*) Symmetrical deposit/withdraw only
| Overview | Status | BOND | UNBOND | LEAVE | | ------------------ | ------------------ | ------------------ | ------------------ | ------------------ | | :heavy_check_mark: | :white_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| ENGLISH :us: | GERMAN :de: | FRENCH :fr: | RUSSIAN :ru: | | ------------------ | ------------------ | ------------------ | ------------------ | | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
(in alphabetical order)
It's recommended to use a Node version as same as Electron is running with (currently: Electron v20.x
/ Node 16.15.x
). It's recommened to install nvm to run as same Node version locally as used for building ASGARDEX on CI.
git clone https://github.com/thorchain/asgardex-electron.git asgardex
cd asgardex
yarn
In case you get an an ENAMETOOLONG: name too long
error or similar by running yarn install
, e.g.
YN0001: │ Error: @storybook/react-docgen-typescript-plugin@npm:1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0: ENAMETOOLONG: name too long, unlink '~/.yarn/berry/cache/@storybook-react-docgen-typescript-plugin-npm-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0-b31cc57c40-8.zip' -> 'asgardex-electron/.yarn/cache/@storybook-react-docgen-typescript-plugin-npm-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0-b31cc57c40-91a3015d38.zip-3439e0483605ccee.tmp'
change cache folder as described in Unable to install latest SB version: Error: ENAMETOOLONG: name too long, unlink... #18441 to run yarn install
as follow:
yarn cache dir
~/.cache/yarn/v6
YARN_CACHE_FOLDER
(see Change the cache path for yarn), e.g.YARN_CACHE_FOLDER=/tmp/y/ yarn install
While environment variables are not required (defaults are set), you can configure them. Create an .env
file by copying all content of .env.sample
and change these for your needs.
main
process (only once or whenever you change something in preload.ts
or electron.ts
)yarn prebuild
renderer
process and run application in watch
modeyarn dev
In case Node might run into memory issues locally set --max-old-space-size
as follow:
export NODE_OPTIONS="--max-old-space-size=4096"
Whenever Midgard has been updated with a new release, run following script to auto-generate types and endpoints
generate:types:midgard
Generated files are based on Midgard's swagger.json.
Whenever THORNode has been updated with a new release, run following script to auto-generate types and endpoints
generate:types:thornode
Generated files are based on https://gitlab.com/thorchain/thornode/-/raw/release-{version}/openapi/openapi.yaml
(replace {version}
with latest version (e.g. 0.19.5
)).
Whenever THORChain ERC20 asset whitelist has been updated (usually with a new release of THORNode), run following script to auto-generate this list for ASGARDEX
yarn generate:erc20whitelist
Use REACT_APP_WALLET_PASSWORD
to run the app by replacing password
with your own password
REACT_APP_WALLET_PASSWORD=password yarn dev
Or add to REACT_APP_WALLET_PASSWORD=password
to .env
file and run yarn dev
unit
yarn test
e2e
Note: Running test-cafe is disabled (see https://github.com/thorchain/asgardex-electron/issues/750)
yarn test:e2e
lint
yarn lint
Note: eslint
is provided by react-scripts
located in ./node_modules/react-scripts/node_modules/
and don't need to be extra installed. If your editor has some issues to find eslint
, you might point it to this location (see VSCode settings file as an example).
yarn storybook
visualize the bundle map using source-map-explorer
yarn analyze
To check locally if auto-update works correctly create dev-app-update.yml
file at the root
directory with a content based on dev-app-update.sample.yml with providing
your GutHub personal access token. After that just play locally with version provided by package.json
src
src
├── index.ts # entry point for CRA
├── main # sources of Electron's main process
├── renderer # sources of Electron's renderer process (aka webapp)
└── shared # shared sources for Electron's main and renderer processes
src/main
(Electron's "main" app)src/main
├── electron.ts # entry point
├── i18n # internationalization (needed for menus)
└── menu # "native" menus
src/renderer
(Electron's "renderer" app aka ReactJS webapp)src/renderer
├── assets # static files (svg, fonts etc.)
├── components # basic components
├── contexts # React contexts to provide "global" accessible states (RxJS based)
├── helpers # helper functions
├── hooks # custom hooks
├── i18n # internationalization (translations etc.)
├── index.tsx # entry point
├── routes # routing
├── services # RxJS based IO handler and states (consumed by contexts)
├── types # TypeScript types (e.g. generated types for Midgard API)
└── views # "Container" components
ASGARDEX follows security recommendation made by Electron team, such as:
EXTERNALS_WHITELIST
, all others are blocked. This list has to be extended if needed.Important note for macOS
users: Please follow guide of "How to package ASGARDEX
on macOS" before running following command.
yarn package:electron
By creating or importing a keystore wallet, ASGARDEX is adding its encrypted keystore into wallets.json
in Electron's appData
folder at following location:
# ASGARDEX installed from *.exe
%APPDATA%/ASGARDEX/storage/wallets.json
# ASGARDEX built and run locally
%APPDATA%/Electron/storage/wallets.json
# ASGARDEX installed from *.dmg
~/Library/Application Support/ASGARDEX/storage/wallets.json
# ASGARDEX built and run locally
~/Library/Application Support/Electron/storage/wallets.json
# ASGARDEX installed from *.deb
~/.config/ASGARDEX/storage/wallets.json
# ASGARDEX built and run locally
~/.config/Electron/storage/wallets.json
By removing a wallet in Wallet
-> Settings
its data will be removed from wallets.json
. ASGARDEX will prompt a message to users to inform about saving its phrase on a save place before removing the wallet.
After removing all wallets wallets.json
will be empty and won't include any wallet related data.
By adding a Ledger account to a wallet, ASGARDEX saves its address
and some extra information (chain
, network
, walletIndex
, hdMode
) into ledgers.json
located in Electron's appData
folder:
# ASGARDEX installed from *.exe
%APPDATA%/ASGARDEX/storage/ledgers.json
# ASGARDEX built and run locally
%APPDATA%/Electron/storage/ledgers.json
# ASGARDEX installed from *.dmg
~/Library/Application Support/ASGARDEX/storage/ledgers.json
# ASGARDEX built and run locally
~/Library/Application Support/Electron/storage/ledgers.json
# ASGARDEX installed from *.deb
~/.config/ASGARDEX/storage/ledgers.json
# ASGARDEX built and run locally
~/.config/Electron/storage/ledgers.json
Whenever a Ledger has been removed in Wallet
-> Settings
, its data will be removed from ledgers.json
. By removing all Ledger accounts from each wallet ledgers.json
will be empty and won't include any Ledger related data. The same by removing all wallets.
See RELEASE.md
See the docs and guides here
Everyone is welcome to contribute. Check open issues or create a new one to start your work with and open a PR afterwards. Newcomers might want to check issues labeled as good first issues.
Please use bug report template to file any bugs.
MIT THORChain