Skip to content
Emerald Wallet
TypeScript JavaScript Other
Branch: master
Clone or download

README.adoc

Emerald Wallet for Desktop

CircleCI branch Travis (.org) AppVeyor branch Codecov License

Emerald is a free open source non-custodial multiplatform desktop cryptocurrency wallet, it supports Ethereum, Ethereum Classic and ERC-20 tokens.

Features:

  • Full Node - automatically connects to a full node running on a local machine

  • Light Node - when a full node is not feasible, it uses a secure endpoint provided by our servers. All private keys are stored on local machine.

  • Hardware Wallets - supports hardware wallets such as Ledger Nano to keep private keys in a most safe way. It’s recommended to use Ledger Nano S

  • ERC-20 Tokens - supports major ERC-20 tokens out of box, and a user can enable support for any ERC-20 compatible token in the Wallet by providing an address

  • Secure Key Storage = stores all private keys either in a local secure vault. Private keys are encrypted and are not transferred to another node even when Light mode is used

  • Multiplatform - compatible with major OSes, and builds for Windows, Macos and Linux are provided to download

Official website: https://emeraldwallet.io

Development instructions

Code Design

The project is based on

  • Electron + NodeJS

  • Typescript

  • React + Redux

  • Rust for some of the modules

The recommended way to assert that you are using the correct version of node is to use nodenv, which will shim the node and npm commands and assert that the local version is set to what is specified in .node-version.

Once nodenv is installed:

$ nodenv install

The required version of node >= v8.

Dependencies

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

NPM packages

Install development tools
npm install -g node-gyp lerna yarn
For windows run also:
npm install -g npm windows-build-tools@4.0.0
Install dependencies:
lerna bootstrap

Run for development

Build sources
$ lerna run build
Start Electron application
$ lerna run start:electron

Troubleshooting

Emerald Vault module error

Electron may show error, like:

[emerald-vault-native] was compiled against a different Node.js version using NODE_MODULE_VERSION 64. This version of Node.js requires NODE_MODULE_VERSION 69. Please try re-compiling or re-installing the module (for instance, using npm rebuild or npm install)

At this case you’ll need to recompile Emerald Vault for your platform and version of Electron. You will need to have Rust compiler and LLVM installed, please follow instructions on:

After installing Rust and LLVM run following to recompile the module:

export RUSTFLAGS=-C target-feature=+crt-static
npm run build:neon

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:watch

or for single run:

yarn test

Contact

License

Copyright 2019 ETCDEV GmbH

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

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.

You can’t perform that action at this time.