BitcoinLib
Want to interact with the Bitcoin network through a DIY app? Look no further, this library is about doing it with Elixir in a very abstract way. It keeps the cryptography jargon to a minimum, while sticking to the Bitcoin glossary.
How to use
First, make sure you've got elixir set up and that you know the language's basics.
Then, create a project and add the dependency in mix.exs.
def deps do
[
{:bitcoinlib, "~> 0.1.3"}
]
endFinally, head to the private key creation documentation to get started.
Useful links
Here are the most useful links
Technicalities
This lib can
- Generate entropy with dice rolls
- Create private keys
- Derive public keys from private keys
-
Handle Hierarchical Deterministic (HD) Wallets, including
- Mnemonic Phrases
- Derivation Paths
-
Serialize/Deserialize Private Keys (
xprv,yprv,zprv) -
Serialize/Deserialize Public Keys (
xpub,ypub,zpub) - Generate Addresses
Mid term goals
- Sign Transactions (PSBT)
- Taproot support
Supported address types
| Address Type | Description | Starts With | Supported |
|---|---|---|---|
| P2PKH | Pay to Primary Key Hash | 1 | ✅ |
| P2WPKH-nested-in-P2SH | Nested Segwit | 3 | ✅ |
| P2WPKH | Native Segwit | bc1q | ✅ |
| P2TR | Taproot | bc1p | Eventually... |
Referenced bips
A bip is a Bitcoin Improvement Proposal. Here is a list of those that are at least partially implemented in this library:
- bip13 - Address Format for pay-to-script-hash
- bip16 - Pay to Script Hash
- bip32 - Hierarchical Deterministic Wallets
- bip39 - Mnemonic code for generating deterministic keys
- bip44 - Multi-Account Hierarchy for Deterministic Wallets
- bip49 - Derivation scheme for P2WPKH-nested-in-P2SH based accounts
- bip84 - Derivation scheme for P2WPKH based accounts
- bip141 - Segregated Witness (Consensus layer)
- bip173 - Base32 address format for native v0-16 witness outputs