foundation-utxo-lib
v0.0.4
Published
Client-side Bitcoin JavaScript library
Downloads
67
Maintainers
Readme
Foundation UTXO Library
This repository was originally a fork of bitcoinjs-lib, but has since been built out to support the transaction building process of UTXO based coins other than just Bitcoin.
Need Support?
If you need help with a code-related matter, the first place to look is our Discord, where the developers will be available to answer any questions. However, please do not come to me with issues regarding setup. Use Google and the existing documentation for that.
Features
- Clean: Pure JavaScript, concise code, easy to read.
- Tested: Coverage > 90%, third-party integration tests.
- Compatible: Works on Node.js and all modern browsers.
- Powerful: Support for advanced features, such as multi-sig, HD Wallets.
- Secure: Strong random number generation, PGP signed releases, trusted developers.
- Principled: No support for browsers with RNG (IE < 11)
- Standardized: Node community coding style, Browserify, Node's stdlib and Buffers.
- Experiment-friendly: Mainnet and Testnet support.
- Multicoin support: Configurable behaviour based on network objects.
Examples
The below examples are implemented as integration tests, they should be very easy to understand. Otherwise, pull requests are appreciated. Some examples interact (via HTTPS) with a 3rd Party Blockchain Provider (3PBP).
- Generate a random address
- Generate an address from a SHA256 hash
- Import an address via WIF
- Generate a 2-of-3 P2SH multisig address
- Generate a SegWit address
- Generate a SegWit P2SH address
- Generate a SegWit 3-of-4 multisig address
- Generate a SegWit 2-of-2 P2SH multisig address
- Support the retrieval of transactions for an address (3rd party blockchain)
- Generate a Testnet address
- Generate a Litecoin address
- Create a 1-to-1 Transaction
- Create a 2-to-2 Transaction
- Create (and broadcast via 3PBP) a typical Transaction
- Create (and broadcast via 3PBP) a Transaction with an OP_RETURN output
- Create (and broadcast via 3PBP) a Transaction with a 2-of-4 P2SH(multisig) input
- Create (and broadcast via 3PBP) a Transaction with a SegWit P2SH(P2WPKH) input
- Create (and broadcast via 3PBP) a Transaction with a SegWit 3-of-4 P2SH(P2WSH(multisig)) input
- Import a BIP32 testnet xpriv and export to WIF
- Export a BIP32 xpriv, then import it
- Export a BIP32 xpub
- Create a BIP32, bitcoin, account 0, external address
- Create a BIP44, bitcoin, account 0, external address
- Create a BIP49, bitcoin testnet, account 0, external address
- Use BIP39 to generate BIP32 addresses
- Create (and broadcast via 3PBP) a Transaction where Alice can redeem the output after the expiry
- Create (and broadcast via 3PBP) a Transaction where Alice and Bob can redeem the output at any time
- Create (but fail to broadcast via 3PBP) a Transaction where Alice attempts to redeem before the expiry
- Recover a private key from duplicate R values
- Recover a BIP32 parent private key from the parent public key, and a derived, non-hardened child private key
- Generate a single-key stealth address
- Generate a single-key stealth address (randomly)
- Recover parent recipient.d, if a derived private key is leaked (and nonce was revealed)
- Generate a dual-key stealth address
- Generate a dual-key stealth address (randomly)
If you have a use case that you feel could be listed here, please ask for it!
Running Tests
npm test
npm run-script coverage
Complementing Libraries
- BIP21 - A BIP21 compatible URL encoding utility library
- BIP38 - Passphrase-protected private keys
- BIP39 - Mnemonic generation for deterministic keys
- BIP32-Utils - A set of utilities for working with BIP32
- BIP66 - Strict DER signature decoding
- BIP69 - Lexicographical Indexing of Transaction Inputs and Outputs
- Base58 - Base58 encoding/decoding
- Base58 Check - Base58 check encoding/decoding
- Bech32 - A BIP173 compliant Bech32 encoding library
- coinselect - A fee-optimizing, transaction input selection module for bitcoinjs-lib.
- merkle-lib - A performance conscious library for merkle root and tree calculations.
- minimaldata - A module to check bitcoin policy: SCRIPT_VERIFY_MINIMALDATA
Donations
Maintaining this project has always been driven out of nothing more than a desire to give back to the mining community, however I always appreciate donations, especially if this repository helps you in any way.
- Bitcoin: 3EbrVYLxN5WeQmPpL6owo3A7rJELXecbbc
- Ethereum: 0xd3e3daED621d228244Fa89A3dd8AF07B52E72319
- Litecoin: MFWpARrSADAy3Qj79C4pSasS9F156QipwC
- ZCash: t1NSk8gyiou8TxWRZTVuUkfM5f9riopN58A
License
Released under the MIT License. See https://opensource.org/licenses/MIT for more information