BitcoinLib
Want to interact with the Bitcoin network through a DIY app? Look no further, this library is about doing it with Elixir, whether you know what it is or not in the simplest way possible. It makes abstraction of most of the cryptography jargon, while sticking to the Bitcoin glossary.
How to use
For non-elixir developers, here is a getting started tutorial
Otherwise here are the most useful links
Add as a dependency in mix.exs
def deps do
[
{:bitcoinlib, "~> 0.1.0"}
]
end
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
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 bitcoin improvement proposals (bips)
- 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