sherlock icon indicating copy to clipboard operation
sherlock copied to clipboard

A wallet for the Bitcoin connoisseur

Sherlock Wallet

A wallet for the Bitcoin connoisseur.

Try it out: https://sherlock.eordano.com

screenshot2 screenshot1

Motivation

This wallet is expected to be a swiss army knife for the bitcoin developer. Often, I need a wallet to debug a transaction, receive some small coins, test a transaction on testnet, evaluate a script, craft a transaction from a set of UTXOs, and I wanted to have a nice interface for it.

This app is a work in progress, and it relies heavily on the bitcore library and BlockCypher's API.

Getting Started

Just clone the repo and install the necessary node modules:

$ git clone https://github.com/eordano/sherlock.git
$ cd sherlock
$ npm install       # may take a while...
$ npm start         # compile and launch

Then, browse to http://localhost:3000/

Wishlist

Features I'll eventually code into this:

  • Testnet support

  • BIP32 (hierarchical deterministic keys) support Handling of private and public keys derived from a root hd key.

  • Local storage of state Save the private keys in local storage (maybe encrypted) and retrieve them on initialization.

  • Multisig address management

  • Address management An easier way to handle addresses, multisigs, utxos associated with each address.

  • Script evaluation Evaluate a script and debug the stack on each step of the execution.

  • Blockchain explorer Explore blocks, fetch merkle proofs, navigate through transactions, blocks, addresses.

Hacking

The folder structure should make it easy to understand where everything sits.

Some annotations on where stuff lives, to get started:

src
├── app                  # Contains most of the boilerplate code for the app
│   ├── routes
│   │   └── index.js     # Add here routes to new things
│   ├── styles
│   │   └── core.scss    # Custom css
│   └── views
│       └── sidebar.js   # Add more items to the sidebar here
├── blockchain
│   └── ...              # Blockchain related code (mostly BlockCypher interactions)
├── dashboard
├── index.html
├── keys                 # Key management section
├── main.js
├── redux
│   ├── definer.js       # Useful to trash action definition boilerplate
│   └── rootReducer.js   # Import and add new reducers here
├── txcreator            # Craft Transaction code
└── utxos                # Management of UTXOs handled by the wallet

Acknowledgments

This project started as a way to test out the redux framework, and it is a fork of the react-redux-starter-kit by davezuko.

For all things bitcoin, it uses the bitcore library by BitPay, Inc.

License

Licensed under the MIT License

Copyright

© 2016 by Esteban Ordano [email protected]