An open API service indexing awesome lists of open source software.

https://github.com/emeraldpay/emerald-wallet

Emerald Wallet
https://github.com/emeraldpay/emerald-wallet

ethereum javascript react typescript wallet

Last synced: 11 months ago
JSON representation

Emerald Wallet

Awesome Lists containing this project

README

          

= Emerald Wallet for Desktop

image:https://github.com/emeraldpay/emerald-wallet/workflows/Unit%20Tests/badge.svg["Unit Tests"]
image:https://codecov.io/gh/emeraldpay/emerald-wallet/branch/master/graph/badge.svg[Codecov,link=https://codecov.io/gh/emeraldpay/emerald-wallet]
image:https://img.shields.io/github/license/emeraldpay/emerald-wallet.svg?maxAge=2592000["License",link="https://github.com/emeraldpay/emerald-wallet/blob/master/LICENSE"]

Emerald is a non-custodial desktop cryptocurrency wallet.
Official website: https://emerald.cash

Features:

- *Windows, macOS and Linux*
- *Ethereum, Ethereum Classic, Tether and Dai*
- Imports Private Key from JSON or Raw Hex
- Supports Mnemonic Phrase (*BIP-39*) and HD Accounts (*BIP-32*)
- Supports *Hardware Wallets*, Ledger Nano S and Nano X
- Doesn't require a local full node

== Development instructions

=== Code Design

The project is based on

- Electron + NodeJS (the required version of NodeJS >= `v18`.)
- Typescript
- React + Redux
- Rust for some modules

=== Setup Environments

==== Install System Libs

You need `libudev`, `libusb-1.0-0`, `libusb-1.0-0-dev` installed on Linux

.On Ubuntu:
----
sudo apt-get install libudev-dev libusb-1.0-0 libusb-1.0-0-dev
----

==== Install Rust

Since the Emerald Wallet now contains a code written in Rust you need to have Rust compiler installed,
please follow instructions at https://rustup.rs

You may also need to have Visual Studio Build Tools with "Desktop development with C++" component,
install it from https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2022

==== Install NPM packages

.Enable Corepack
----
corepack enable
----

.Install dependencies:
----
yarn install
----

=== Run for development

.Build sources
----
yarn build:native
yarn build
----

Optionally you can build desktop app with automatic rebuild on change.
Please note that it rebuilds only main Desktop module, and you have responsibility to rebuild other modules manually when changed.

.Continuous rebuild of Desktop (optional):
----
yarn build:watch
----

.or
----
yarn workspace @emeraldwallet/desktop build:watch
----

.Start Electron application:
----
yarn workspace @emeraldwallet/desktop start
----

=== Troubleshooting

==== Cleanup

If you're facing some weird problem it makes sense to make a full cleanup and then rebuild everything from scratch.

.Erase compiled Javascript (it's also done automatically on `build`):
----
yarn clean
----

.To erase NPM modules (may be needed when you build under different NodeJS version):
----
yarn run clean:modules
----

=== Logs

Electron and Emerald logs persisted in:

* OSX: `~/Library/Logs/EmeraldWallet/log.log`
* Linux: `~/.config/EmeraldWallet/log.log`

=== Building distributions in development

You can run a distribution build in your development environment.Assuming
you've already compiled `./src/` and `./electron/`, you'll be able to run:

----
yarn build:dist
----

This command will build for _your current system_.
Note that there are configurations for several systems (OSX, Linux, Windows) specified in the `"build"` field of `package.json`, but the `dist` command will by default only build for the system it's on.

NOTE: If you're developing on OSX and have a developer signing identity on your machine, you can optionally disable that with `CSC_IDENTITY_AUTO_DISCOVERY=false`.

OSX is also able to build for Linux.
Add `-ml` to that raw command to build for both OSX and Linux at the same time.

=== Troubleshooting

Some preliminary things to try in case you run into issues:

Clear out any persisted settings or userdata from previous trials

- OSX: `~/Library/Application Support/EmeraldWallet`
- Linux: `~/.config/EmeraldWallet`
- Windows: `%APPDATA%\EmeraldWallet`

== Run tests

----
yarn test
----

== Contact

=== Submit Bug

https://github.com/emeraldpay/emerald-wallet/issues/new

=== Contact Support

https://emerald.cash/support

=== Chat

Chat with us via Gitter: https://gitter.im/emeraldpay/community

=== Submit Security Issue

Email to security@emerald.cash

== License

Copyright 2025 EmeraldPay

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.

You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and limitations under the License.