Giter Site home page Giter Site logo

isew / multisig-tool Goto Github PK

View Code? Open in Web Editor NEW

This project forked from coinbase/multisig-tool

0.0 2.0 1.0 347 KB

Multisig Vault recovery tool

Home Page: http://coinbase.github.io/multisig-tool/

License: Apache License 2.0

Makefile 0.18% CSS 1.02% HTML 2.24% JavaScript 96.56%

multisig-tool's Introduction

Coinbase Multisig Vault recovery tool

You can use this open source tool to send all the coins from your Coinbase Multisig Vault to any bitcoin address you choose.

In order to do this you will need the data from your vault backup that you either printed out or saved somewhere.

http://coinbase.github.io/multisig-tool

Usage

Required input

To complete this recovery process, you will need the following information:

  • 3 extended public keys (xpubkeys)
  • User seed
  • Shared encrypted seed
  • Your vault password

Online/Offline

Internet connection is only required in Step 1, where you input the public keys, so that we can fetch the unspent outputs from your vault addresses.

Before inputting your keys in Step 2 and signing the transaction you can safely go offline.

In Step 3 you will get a signed transaction in raw hex form.

You can then copy this transaction and verify it with Bitcoin Core and decoderawtransaction or using an online tool like Coinb.in.

After verifying you then broadcast it using Bitcoin Core and sendrawtransaction or any other API or client that supports broadcasting transactions into the Bitcoin network.

Running

You can download this tool and run it locally or use our hosted version at http://coinbase.github.io/multisig-tool.

Running locally

If you wish to run the tool locally, you need to do it through a local web server. The easiest way to do that is by running:

make run

This is because we use Web Workers for decrypting your BIP38 encrypted shared key seed, and Web Workers are not permitted to run through the file:/// protocol.

Another alternative is to run Chrome with the --allow-access-from-files parameter.

Development

This tool was designed to have a minimal code foot print so it could be easily auditable.

All the domain specific crypto is done in the various files in lib/multisig.

These files are compiled using Browserify into multisig.js with:

make compile

Everything else is either UI code or dependency libraries.

Dependencies

BitcoinJS

We use the BitcoinJS library to handle HD wallets, Bitcoin keys, addresses and transactions.

BIP38

We use the BIP38 library to decrypt the encrypted shared key seeds.

To build the multisig/bip38.js we used:

  1. Install packages with npm:

    npm install bip38 crypto-browserify --save

  2. Use browserify to resolve dependencies:

    browserify -r bip38 -s Bip38 > lib/multisig/bip38.js

Then we amend the lib/multisig/bip38.js to support progress callbacks and Web Worker messages handling.

We need this as a separate file, because we're using it with web workers.

Improvements missing

  1. There is currently no error checking whatsoever. That means the tool won't let you know if something is wrong with your input or with anything else. It will just silently stop working.

  2. There is also currently no support for group vaults.

We plan to tackle those issues soon, but we do accept community contributions as well. So if you have a solution for some of these, please submit a pull request!

multisig-tool's People

Contributors

coblee avatar evrial avatar jimpo avatar maksim-s avatar mihar avatar nicolasochem avatar sds avatar

Watchers

 avatar  avatar

Forkers

cryptoempathy

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.