A Bitcoin wallet sample application using React.
WARNING: IT'S ONLY A SAMPLE! If you use this sample with real bitcoins, you do so at your own risk.
The purpose: learning React & Blockchain/Bitocin.
We are using BlockCypher API for the backend.
This app was inspired by another PHP Bitcoin wallet sample.
- Users can login using a BlockCypher token. DONE.
- Users can create Bitcoin wallets for mainnet (real bitcoins), testnet (Bitcoin test coins), or BlockCypher test chain (development chain). DONE.
- Users can list their wallets. DONE.
- Users can generate and remove new addresses in the wallet. DONE.
- Users can see their wallets balance. PENDING.
- Users can see their addresses balance. PENDING.
- Users can fund their addresses using BlockCypher faucet. PENDING.
- Users can receive funds in their wallets. PENDING.
- Users can spend funds from their wallet. PENDING.
For the time being we are only using normal wallets, instead of HD Wallets. That could be a new feature the future.
- Clone this repo:
git clone https://github.com/blockchainkatas/react-bitcoin-wallet.git
- Run
npm install
- Start the development server with
npm start
- Point your browser to http://localhost:8080
WARNING: There is an issue pending to fix regarding using
strictSSL:true
option in BlockCypher (bcpher.js) API requests.
You will need a BlockCypher token.
Error: SSL Error: https://api.blockcypher.com/v1/bcy/test/wallets/test01/addresses?token=XX does not support SSL
To avoid that problem you have to replace strictSSL:true
by strictSSL:false
in file node_modules/blockcypher/lib/bcpher.js
.
WARNING: That should be avoid in production environments but this is only a sample for learning purposes. Please DO NOT USE a BlockCypher token with real bitcoins.
- If you create a wallet whose name contains spaces addresses will be not listed correctly. More info here.
- CI with Travis and CD to Firebase.
- Use Redux.
- HD Wallets.
- Colored coin wallet like coinsprism.com.
PENDING: Create issues for concrete tasks.
- Finish all domain specifications.
- Testing.
- Use (nested routes)(https://github.com/reactjs/react-router-tutorial/tree/master/lessons/04-nested-routes) for shared components like Menu, or any other parts you think you can improve.
- Some actions take a long time to complete: for instance create a new wallet.
- Add links to BlockCypher API endpoints (like wallets list page h1 title).
- Catch BlockCypher response 429 (Too Many Requests) and show friendly message.
- Show BlockCypher response errors (for example when user uses invalid BlockCypher token).