multisig

Multisig

Porting Multi-signature Address to Svelte Firebase Typescript

MultiSigAddress

MultiSigAddress Generator and Spender port to Svelte / Typescript

The following site is currently being converted to components/Svelte, Typescript, and Cloud Functions for additional security.

Notes/Features

Currently the following has been tested:

  • User provides an input for m and n for the m-of-n (ie 2 of 3, 3 of 5, etc)
  • CSPRNG provided by bitcoinJS-lib creates n key pairs, and those public keys are used to create the multisig P2SH address.
  • Output to user is the P2SH address on the left-hand side, and on the right-hand side the first private key out of n keys.
  • The additional private keys can be cycled through using the arrow buttons above the private key QR code
  • Additional output to the user includes the public keys (and qr codes) and the sequence they were used to create the address and redeem script.
  • User can save redeem script hex to a USB drive, OR if they want to stay true to paper wallet regenerate the redeem script using the public key qr codes along with the redeem-script.html tool which can scan your public key qr codes with your webcam. Typing in by hand I suppose is a possible third option, but not likely or recommended considering the redeem script can be quite long.

To make the paper wallet more like a wallet, I have also added some additional standalone pages (tools) that will allow users to find UTXOs for specific addresses to build and sign transactions.

  • Users build transactions with UTXO selection using the multisig-build.html tool. (internet needed to fetch UTXOs)
  • Users sign transactions offline using the multisig-sign.html tool
  • Users are responsible for broadcasting the raw hex transactions

Warnings

Obviously the shortcomings are:

  • building the transaction as a contract and managing keys will take significant changes to terminology and user interface
  • fees should be Satoshis per byte like segwitaddress.org instead of inputting exact fee in Satoshis (and computed as fees for site)
  • users cant create an address from their own provided public keys, segmenting features for version releases

It currently supports both testnet and mainnet. While this works on mainnet, I don't recommend using this at all.

Acknowledgement

Kyle Honeycutt/coinables Kazuhiko Arase BitcoinJS-lib Bitcore

Top categories

Loading Svelte Themes