All Projects → btclib-org → btclib

btclib-org / btclib

Licence: MIT license
btclib: a python3 library for 'bitcoin cryptography'

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to btclib

btc-address-generator
Bitcoin address generator (bech32, segwit, paper wallets, BIP39 seed, etc.)
Stars: ✭ 80 (+33.33%)
Mutual labels:  bip39, segwit, bip32, bech32
Bitcoinj
A library for working with Bitcoin
Stars: ✭ 4,162 (+6836.67%)
Mutual labels:  segwit, bip32, bech32, taproot
bitcoincashj
A library for working with Bitcoin Cash
Stars: ✭ 38 (-36.67%)
Mutual labels:  bip39, bip32, schnorr
noble-secp256k1
Fastest JS implementation of secp256k1. Independently audited, high-security, 0-dependency ECDSA & Schnorr signatures.
Stars: ✭ 313 (+421.67%)
Mutual labels:  ecdsa, schnorr
mnemonic-sdk
Mnemonic bip39 bip32 bip44 生成助记词 私钥
Stars: ✭ 25 (-58.33%)
Mutual labels:  bip39, bip32
ChainWallet
一个以研究技术为目地的基础项目,也只有最基本 Bitcoin、Ethereum 、EOS 相关的加密算法。
Stars: ✭ 26 (-56.67%)
Mutual labels:  bip39, bip32
Bitcoin Wallet
Bitcoin Wallet app for your Android device. Standalone Bitcoin node, no centralized backend required.
Stars: ✭ 2,672 (+4353.33%)
Mutual labels:  segwit, bech32
Fastecdsa
Python library for fast elliptic curve crypto
Stars: ✭ 158 (+163.33%)
Mutual labels:  ecdsa, elliptic-curves
EllipticCurve
An elliptic curve library written in Swift 4
Stars: ✭ 18 (-70%)
Mutual labels:  ecdsa, elliptic-curves
scure-base
Secure, audited & 0-deps implementation of bech32, base64, base32, base16 & base58
Stars: ✭ 27 (-55%)
Mutual labels:  base58, bech32
btclib
btclib: a Python3 library for 'bitcoin cryptography'
Stars: ✭ 16 (-73.33%)
Mutual labels:  ecdsa, elliptic-curves
Multy-IOS
Mobile multy-blockchain wallet client.
Stars: ✭ 25 (-58.33%)
Mutual labels:  bip39, bip32
cashuwallet
Cashu is a cryptocurrency wallet for smartphones. Be your own bank. Accept payments or spend crypto directly from your phone.
Stars: ✭ 35 (-41.67%)
Mutual labels:  bip39, bip32
Number-Theory-Python
Python code to implement various number theory, elliptic curve and finite field computations.
Stars: ✭ 85 (+41.67%)
Mutual labels:  ecdsa, elliptic-curves
ethereum-hdwallet
CLI and Node.js library for Ethereum HD Wallet derivations from mnemonic
Stars: ✭ 44 (-26.67%)
Mutual labels:  bip39, bip32
Swift Crypto
Open-source implementation of a substantial portion of the API of Apple CryptoKit suitable for use on Linux platforms.
Stars: ✭ 1,005 (+1575%)
Mutual labels:  ecdsa, elliptic-curves
tokucore
A Simple, Powerful, Modular Library for Bitcoin Blockchain As a Service(BAAS)
Stars: ✭ 61 (+1.67%)
Mutual labels:  segwit, schnorr
cryptotools
No description or website provided.
Stars: ✭ 182 (+203.33%)
Mutual labels:  ecdsa, elliptic-curves
indy
🕵️‍♂️ Find and sweep all the funds spendable by your bitcoin private key.
Stars: ✭ 41 (-31.67%)
Mutual labels:  electrum, segwit
bitcoin-address-validator
PHP package to validate legacy, segwit, native segwit (bech32) and taproot Bitcoin addresses
Stars: ✭ 30 (-50%)
Mutual labels:  segwit, taproot

A Python library for 'bitcoin cryptography'

PyPI pyversions PyPI version Code style: black Imports: isort Linted: flake8 Linted: pylint Type-checked: mypy Type-checked: pyright Refactored: sourcery Security: bandit Build Status ReadtheDocs Coverage Status PyPI status GitHub License Follow on Twitter

btclib is a Python3 type annotated library intended for teaching, learning, and using bitcoin, its blockchain, and the associated elliptic curve cryptography.

It is rigorously and extensively tested: the test suite covers 100% of the code base and reproduces results from both informal and major reference sources.

Originally developed for the Bitcoin and Blockchain Technology course at the University of Milano-Bicocca, btclib is not intended for production environments: it is often refactored for improved clarity, without care for backward compatibility; moreover, some of its algorithms could be broken using side-channel attacks.

Included features are:

  • modulo algebra functions (gcd, inverse, legendre symbol, square root)
  • octets / integer / point / var_int / var_bytes helper functions
  • elliptic curve class
    • fast algebra implemented using Jacobian coordinates
    • double scalar multiplication (Straus's algorithm, also known as Shamir's trick)
    • multi scalar multiplication (Bos-coster's algorithm)
    • point simmetry solution: odd/even, low/high, and quadratic residue
  • elliptic curves: SEC 1 v1 and v2, NIST, Brainpool, and low cardinality test curves
  • ECDSA signature with (transaction) DER encoding
  • ECDSA signature with (message) compact encoding: standard p2pkh and BIP137/Electrum extensions to p2wpkh and p2wpkh-p2sh
  • EC Schnorr signature (according to BIP340 bitcoin standardization)
    • batch validation
    • threshold signature (see test-suite)
    • MuSig multi-signature (see test-suite)
  • Borromean ring signature
  • RFC 6979 to make signature schemes deterministic
  • Sign-to-contract commitment
  • Diffie-Hellman
  • Pedersen committment
  • Base58 encoding/decoding
  • p2pkh/p2sh addresses and WIFs
  • Bech32 encoding/decoding
  • p2wpkh/p2wsh native SegWit addresses and their legacy p2sh-wrapped versions
  • BIP32 hierarchical deterministic key chains
  • SLIP132 key versions (xprv, yprv, zprv, Yprv, Zprv, tprv, uprv, vprv, and Uprv) with corresponding mapping to p2pkh/p2sh, p2wpkh-p2sh, p2wpkh, p2wsh-p2sh, p2wsh and p2tr addresses
  • BIP39 wordlists and mnemonic for generating deterministic keys
  • Electrum standard for mnemonic
  • Script encoding/decoding
  • nulldata, p2pk, p2ms, p2pkh, p2sh, p2wpkh, p2wsh and p2tr ScriptPubKeys
  • BlockHeader and Block data classes
  • OutPoint, TxIn, TxOut, and TX data classes
  • legacy, segwit_v0 and taproot transaction hash signatures
  • BIP174 partially signed bitcoin transactions (PSBT): PsbtIn, PbstOut, and Psbt data classes

To install (and/or upgrade) btclib:

python -m pip install --upgrade btclib

You might want to install btclib into a python virtual environment; e.g. from the root folder:

Bash shell

python -m venv venv_btclib
source ./venv_btclib/bin/activate
python -m pip install --upgrade btclib

Windows CMD or PowerShell:

python -m venv venv_btclib
.\venv_btclib\Scripts\activate
python -m pip install --upgrade btclib

Windows Git bash shell:

python -m venv venv_btclib
cd ./venv_btclib/Scripts
. activate
cd ../..
python -m pip install --upgrade btclib

Some development tools are required to develop and test btclib; they can be installed with:

python -m pip install --upgrade -r requirements-dev.txt

Some additional packages are needed to build the documentation:

python -m pip install --upgrade -r docs/requirements.txt

Developers might also consider to install btclib in editable way:

python -m pip install --upgrade -e ./
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].