MyCrypto Web & Desktop Apps
- Just looking to download? Grab our latest release.
- Looking for the old site? Check out https://legacy.mycrypto.com or the source at MyCryptoHQ/mycrypto.com
Running the App
This codebase targets Node 8.9.4 (LTS). After
npm installing all dependencies (You may be required to install additional system dependencies, due to some node modules relying on them) you can run various commands depending on what you want to do:
# run app in dev mode in browser, rebuild on file changes npm run dev
# run app in dev mode in electron, rebuild on file changes npm run dev:electron
# builds the production server app npm run build
# builds the downloadable version of the site npm run build:downloadable
# builds the electron apps npm run build:electron # builds only one OS's electron app npm run build:electron:(osx|linux|windows)
All of these builds are output to a folder in
# run unit tests with Jest npm run test
# run integration tests with Jest npm run test:int
Some parts of the site, such as the Ledger wallet, require an HTTPS environment to work. To develop on HTTPS, do the following:
- Create your own SSL Certificate (Heroku has a nice guide here)
- Move the
- Run the following command:
npm run dev:https
Address Derivation Checker:
EthereumJS-Util previously contained a bug that would incorrectly derive addresses from private keys with a 1/128 probability of occurring. A summary of this issue can be found here.
As a reactionary measure, the address derivation checker was created.
To test for correct address derivation, the address derivation checker uses multiple sources of address derivation (EthereumJS and PyEthereum) to ensure that multiple official implementations derive the same address for any given private key.
The derivation checker utility assumes that you have:
- Docker installed/available
- dternyak/eth-priv-to-addr pulled from DockerHub
Docker setup instructions:
- Install docker (on macOS, Docker for Mac is suggested)
docker pull dternyak/eth-priv-to-addr
Run Derivation Checker
The derivation checker utility runs as part of the integration test suite.
npm run test:int
│ ├── common │ ├── actions - Application actions │ ├── api - Services and XHR utils │ ├── assets - Images, fonts, etc. │ ├── components - Components according to "Redux philosophy" │ ├── config - Various config data and hard-coded json │ ├── containers - Containers according to "Redux philosophy" │ ├── libs - Framework-agnostic libraries and business logic │ ├── reducers - Redux reducers │ ├── sagas - Redux sagas │ ├── sass - SCSS styles, variables, mixins │ ├── selectors - Redux selectors │ ├── translations - Language JSON dictionaries │ ├── typescript - Typescript definition files │ ├── utils - Common use utility functions │ ├── index.tsx - Entry point for app │ ├── index.html - Html template file for html-webpack-plugin │ ├── Root.tsx - Root component for React │ └── store.ts - Redux reducer combiner and middleware injector ├── electron-app - Code for the native electron app ├── jest_config - Jest testing configuration ├── spec - Jest unit tests, mirror's common's structure ├── static - Files that don't get compiled, just moved to build └── webpack_config - Webpack configuration
Thanks & Support
Cross browser testing and debugging provided by the very lovely team at BrowserStack.