Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/HathorNetwork/hathor-wallet
Hathor Official Wallet for Desktop
https://github.com/HathorNetwork/hathor-wallet
desktop-app hathor wallet
Last synced: 5 days ago
JSON representation
Hathor Official Wallet for Desktop
- Host: GitHub
- URL: https://github.com/HathorNetwork/hathor-wallet
- Owner: HathorNetwork
- License: mit
- Created: 2019-04-04T01:11:40.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-11-04T18:33:46.000Z (10 days ago)
- Last Synced: 2024-11-04T19:30:34.312Z (10 days ago)
- Topics: desktop-app, hathor, wallet
- Language: JavaScript
- Homepage: https://hathor.network/
- Size: 6.48 MB
- Stars: 33
- Watchers: 15
- Forks: 26
- Open Issues: 143
-
Metadata Files:
- Readme: README.md
- Changelog: changelogs/unreleased/chore-connect-bravo-testnet.yml
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- awesome-hathor - Hathor Desktop Wallet - [Official] Desktop Wallet (Wallets / Utils)
README
# Hathor Wallet
Welcome to Hathor Desktop Wallet. To view the source code of the project access [Github](https://github.com/HathorNetwork/hathor-wallet).
## Architecture
The wallet is developed using Javascript with [React](https://reactjs.org/). We use [Electron](https://electronjs.org/) to generate native desktop apps from it.
## Download
You can download the newest version of the wallet for each specific platform from the [Releases page](https://github.com/HathorNetwork/hathor-wallet/releases).
## Screenshots
The basic view of the wallet. Note that different types of tokens are made possible in the Hathor Network. On the left hand side we see both a HTR tab and a MTK tab, for the Hathor token, and a different, ERC-20 like, token.
![Wallet Home](https://drive.google.com/thumbnail?id=1pJ4JAxTXjMHW1Xuc4cCG0d0LKeVBGgM6&sz=w3000-h2250)Sending tokens.
![Send Tokens](https://drive.google.com/thumbnail?id=1Lq6Q0j2J0989vfYzykVSpYjra3bLTI2u&sz=w3000-h2250)The wallet includes a block and transaction explorer.
![Explorer](https://drive.google.com/thumbnail?id=1YdEfGB7L9E2tA4vGDTsGdGvoKw5bqdhT&sz=w3000-h2250)A transaction is displayed.
![Transaction Detail](https://drive.google.com/thumbnail?id=1N3IaiT0kBT1QkRq6xU_b_D66EZBVajiB&sz=w3000-h2250)## For development
### Prerequisites
* Install node v20
### To install dependencies
```
npm install
```### To Run
```
npm start
```It will start running in the browser in http://localhost:3000
> **NOTE:** to use Hathor Wallet with Ledger, you need to run it in Electron.
> **NOTE:** use the electron wallet for a more complete experience.
### Quick start to Electron
Run the electron besides the react app. Open a new instance of the terminal and run the following command:
```sh
npm run electron-dev
```If you get some error like this `error while loading shared libraries: libxshmfence.so.1: cannot open shared object file: No such file or directory` refer to the [throubleshooting](#troubleshooting) section.
To use the Chrome Dev Tools associated with Electron for debugging purposes, the unsafe mode may be enabled through CLI arguments:
```sh
npm run electron-dev -- --unsafe-mode --hathor-debug
```### Debug mode on installed app
To run the app in debug mode on an installed app you need to pass the flags `--hathor-debug` and `--unsafe-mode` to the app.
The way to do this depends on your environment.On Windows the app is installed in the `C:\Users\\AppData\Local\Programs\hathor-wallet` folder.
You will need to open a terminal (CMD, Powershell, etc.) and run the `Hathor Wallet.exe` executable with the flags above.
On CMD the command would be `& '.\Hathor Wallet.exe' --unsafe-mode --hathor-debug` or `& 'C:\Users\\AppData\Local\Programs\hathor-wallet\Hathor Wallet.exe' --unsafe-mode --hathor-debug`.On Linux the app is installed in a way that it is available as the command `hathor-wallet`, so we can simply run `hathor-wallet --unsafe-mode --hathor-debug` from the terminal.
On MacOS the app is usually installed in `/Applications` in a way that is possible to run the following command `open /Applications/Hathor\ Wallet.app --args --hathor-debug --unsafe-mode` from the terminal.
### To Build
`npm run build` and it will create a folder build with the files to use
## Server
By default the wallet will connect to the server selected as the `DEFAULT_SERVER` in the constants file (`src/constants.js`).
You can change this anytime in the 'Change Server' screen inside the wallet.## Documentation
To generate a html page with the documentation from the code comments run:
```
npm run generate-doc
```It will generate a `index.html` file in `out/index.html`
## Run Electron
Refer to [ELECTRON.md](/ELECTRON.md)
## Sentry
Sentry is a error tracking tool, that allow us to receive error data from clients - it will be disabled on stable versions of the wallet.
### DSN
On `public/constants.js` we have a default Sentry DSN.
To override it simply set the environment variable `SENTRY_DSN`.### Source maps
To allow stack traces to be mapped to source code, Sentry needs the source maps.
To upload the source maps, create a `.sentryclirc` with the format:```
[defaults]
url=https://sentry.io/
org=
project=[auth]
token=
```You can find more information about the configuration file and its fields [here](https://docs.sentry.io/cli/configuration/).
After configuring it, just run the `upload_source_maps.sh` script to upload the source maps.**WARNING**: Please note that this will override all the source maps for the current sentry release.
The sentry release used is the `version` field in the `package.json` file.
So in order to not break any released source maps, only run the script after bumping `package.json` to a new version.
For test purposes use `*-beta` versions or identifiers that will not colide with semantic versioning.## Troubleshooting
When building, if you get the following error message:
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
Then, you can increase your memory limit running:
export NODE_OPTIONS=--max_old_space_size=4096
### WSL (Windows Subsystem for Linux)
* Make sure you have the vesion 2
```
wsl -l -v
```
* Make sure to install the WSL driver for your GPU, see at [Prerequisites](https://learn.microsoft.com/en-us/windows/wsl/tutorials/gui-apps#prerequisites)
* Make sure to update the WSL after install the GPU driver, see at [Existing WSL Install](https://learn.microsoft.com/en-us/windows/wsl/tutorials/gui-apps#existing-wsl-install)
* Once the `WSL` is updated you are ready to goIf you still can't run, see this [article](https://www.beekeeperstudio.io/blog/building-electron-windows-ubuntu-wsl2).
### WSL Ubuntu 18 distro
Run the following command to install necessary packages:
```
sudo apt install libnss3-dev libgdk-pixbuf2.0-dev libgtk-3-dev libxss-dev libasound2
```### WSL Debian distro
Run the following command to install necessary packages:
```
sudo apt install libnss3-dev libgdk-pixbuf2.0-dev libgtk-3-dev libxss-dev libasound2 libusb-1.0-0
```## TODO
- The algorithm to automatically choose the unspent transactions when sending tokens is naive. For now we do not consider any anonymity factor.
- The addresses shared with the user and the ones used in change outputs are generated by the same chain in the HD Wallet. We don't separate internal and external addresses.## i18n
We use the `ttag` lib. Check out the docs [here](https://ttag.js.org/docs/quickstart.html).
Run `make update_pot` to update the pot file (`locale/texts.pot`). This file has all strings to be translated in the app.
Run `msgmerge pt-br/texts.po texts.pot -o pt-br/texts.po` to merge a pot file with a po file. This will add the new strings to be transalted and remove the deprecated ones. Any translation marked with `; fuzzy` comment must be reviewed.
Finally, run `make i18n` to compile all po files to json files. You can use `make check_po` to check for problems in translations.
## Release
There is a release guide in [RELEASE.md](/RELEASE.md).
We ship GPG signatures for all release packages. Check our guide in [RELEASING.md#signature-verification](/RELEASING.md#signature-verification) to learn how to verify them.
## License
Code released under [the MIT license](https://github.com/HathorNetwork/hathor-wallet/blob/dev/LICENSE).
Copyright 2019 Hathor Labs.