Desktop wallet and decentralized exchange for THORChain
ASGARDEX is a desktop wallet and decentralized exchange client designed to facilitate secure asset management and trading on the THORChain network. Offering features such as cross-chain interoperability, real-time transaction monitoring, and support for multiple cryptocurrencies, it empowers users with seamless access to decentralized financial services.
Key Features:
Secure storage and management of digital assets.
Decentralized exchange capabilities enabling direct swaps between supported tokens.
Cross-chain functionality to interact with various blockchain networks via THORChain.
User-friendly interface for intuitive navigation and transaction execution.
Advanced security measures, including two-factor authentication.
Support for THORChain’s native assets and integrations with popular cryptocurrencies.
Audience & Benefit:
Ideal for crypto enthusiasts, traders, and developers seeking to engage with the THORChain ecosystem. ASGARDEX provides a reliable platform for secure asset management, seamless cross-chain transactions, and access to decentralized exchange services, enabling users to fully leverage the potential of blockchain technology. It can be installed via winget for ease of use.
README
Website
This is the developer source repository, general information, and download page can be found at Asgardex
Feature list
Symbols
:heavy_check_mark: implemented
:white_check_mark: planned
- not needed
Samsung offers many applications to make your work day easier. One of them is Samsung DeX, which gives users the experience of working on a desktop by connecting their mobile device (a smartphone or tablet) to an external display device (a TV or monitor) or a PC.
This webapp is a browser and desktop password manager compatible with KeePass databases.
It doesnt require any server or additional resources.
The app can run either in browser, or as a desktop app.
Tabby (formerly Terminus) is a highly configurable terminal emulator, SSH and serial client for Windows 10, macOS and Linux
- Integrated SSH and Telnet client and connection manager
- Integrated serial terminal
- Theming and color schemes
- Fully configurable shortcuts and multi-chord shortcuts
- Split panes
- Remembers your tabs
- PowerShell (and PS Core), WSL, Git-Bash, Cygwin, MSYS2, Cmder and CMD support
- Direct file transfer from/to SSH sessions via Zmodem
- Full Unicode support including double-width characters
- Doesn't choke on fast-flowing outputs
- Proper shell experience on Windows including tab completion (via Clink)
- Integrated encrypted container for SSH secrets and configuration
- SSH, SFTP and Telnet client available as a web app (also self-hosted)
Samsung offers many applications to make your work day easier. One of them is Samsung DeX, which gives users the experience of working on a desktop by connecting their mobile device (a smartphone or tablet) to an external display device (a TV or monitor) or a PC.
This webapp is a browser and desktop password manager compatible with KeePass databases.
It doesnt require any server or additional resources.
The app can run either in browser, or as a desktop app.
Tabby (formerly Terminus) is a highly configurable terminal emulator, SSH and serial client for Windows 10, macOS and Linux
- Integrated SSH and Telnet client and connection manager
- Integrated serial terminal
- Theming and color schemes
- Fully configurable shortcuts and multi-chord shortcuts
- Split panes
- Remembers your tabs
- PowerShell (and PS Core), WSL, Git-Bash, Cygwin, MSYS2, Cmder and CMD support
- Direct file transfer from/to SSH sessions via Zmodem
- Full Unicode support including double-width characters
- Doesn't choke on fast-flowing outputs
- Proper shell experience on Windows including tab completion (via Clink)
- Integrated encrypted container for SSH secrets and configuration
- SSH, SFTP and Telnet client available as a web app (also self-hosted)
It's recommended to use a Node version as same as Electron is running with (currently: Electron 35 / Node 22.14). It's recommended to install nvm to run as the same Node version locally as used for building ASGARDEX on CI.
git clone https://github.com/asgardex/asgardex-desktop.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-desktop/.yarn/cache/@storybook-react-docgen-typescript-plugin-npm-1.0.2-canary.6.9d540b91e815f8fc2f8829189deb00553559ff63.0-b31cc57c40-91a3015d38.zip-3439e0483605ccee.tmp'
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.
Development
Build everything needed (main, preload and renderer) and run application in watch mode
yarn 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"
Tips & tricks for windows
You may need to install the following dependencies in your local machine in order to build the native libraries used by Asgardex
Install python3
Install 'Microsoft C++ build tools'
Tips & tricks for Linux
You may need to install the following dependencies in your local machine in order to build the native libraries used by Asgardex
Install python3
Install dependency build-essential
sudo apt-get install build-essential
Install dependency libudev-dev
sudo apt-get install libudev-dev
Generate ERC20/BEP20 & Avax & ARB asset white list
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
For synths to have an icon the asset in the whitelist needs to be duplicated and the synth boolean flipped true
How to auto-unlock a locked wallet while hot-reloading the app (for development only, disabled in production build)
Use VITE_WALLET_PASSWORD to run the app by replacing password with your own password
VITE_WALLET_PASSWORD=password yarn dev
Or add to VITE_WALLET_PASSWORD=password to .env file and run yarn dev
Tests
unit
yarn test
lint
yarn lint
Storybook
yarn storybook
bundle analyze
visualize the bundle map using source-map-explorer
yarn analyze
Auto updates
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
Folder structure
src
src
├── 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
By creating or importing a keystore wallet, ASGARDEX is adding its encrypted keystore into wallets.json in Electron's appData folder at following location:
Windows
# ASGARDEX installed from *.exe
%APPDATA%/ASGARDEX/storage/wallets.json
# ASGARDEX built and run locally
%APPDATA%/Electron/storage/wallets.json
macOS
# ASGARDEX installed from *.dmg
~/Library/Application Support/ASGARDEX/storage/wallets.json
# ASGARDEX built and run locally
~/Library/Application Support/Electron/storage/wallets.json
Linux
# 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.
Ledger accounts
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:
Windows
# ASGARDEX installed from *.exe
%APPDATA%/ASGARDEX/storage/ledgers.json
# ASGARDEX built and run locally
%APPDATA%/Electron/storage/ledgers.json
macOS
# ASGARDEX installed from *.dmg
~/Library/Application Support/ASGARDEX/storage/ledgers.json
# ASGARDEX built and run locally
~/Library/Application Support/Electron/storage/ledgers.json
Linux
# 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.
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.