Coin Wallet is a standalone browser-based cryptocurrency wallet. It bootstrapped with Create React App and uses the Material UI React component library. The BlockCypher API is used to interface with the blockchain.
Be smart and use this at your own risk. I am not responsible for any lost funds.
- Setup
- Create new wallet
- Store wallet in browser's local storage (with encrypted private keys)
- Download encrypted wallet backup
- Import existing wallet backup
- Main page
- View balance
- View transactions
- Send coins
- Settings
- Export wallet
- Change wallet password
- Reset wallet
- Clone this repository with
git clone https://github.com/mikelduffy/coin-wallet.git && cd ./coin-wallet
- Install dependencies with
yarn install
ornpm install
- Run
cp .env.local-sample .env.local
and add your blockcypher API key to your.env.local
file - Start the application with
yarn start
ornpm start
- Run
yarn run test
ornpm run test
to test the application
- The blockchain.info API does not support a testnet, which complicates the development process. However, their websocket feature would make it easy to update new transactions without the need for long polling.
- The bitgo API has a pretty robust javascript library which offers testnet support as well as returning promises to utilize async/await. They only support webhook notifications, so a deployed backend and websocket/eventsource would be required for real-time transaction updates. Long polling their list transactions API is also an option. The biggest downside of using their API is their pricing model (0.25% of each outgoing transaction).
- The blockcypher API supports a test net, multiple currencies, a RESTful API as well as a javascript library. They have a free limited useage API, which would be sufficient for this project. They also have a websocket feature, however it does not have the option to listen for events from a specified address. Using long polling as an alternative makes the blockcypher API the best choice.