Bitcoin and blockchain utilities in Python for address generation, validation, transaction parsing, and block exploration.
- Address Generation - Generate Bitcoin addresses (P2PKH, P2SH, Bech32)
- Address Validation - Validate any Bitcoin address format
- Key Pair Generation - Create private/public key pairs using secp256k1
- Transaction Parsing - Decode and inspect raw Bitcoin transactions
- Block Explorer - Query blockchain data via public APIs
- Wallet Utilities - HD wallet derivation (BIP-32/BIP-39)
- Hash Utilities - SHA-256, RIPEMD-160, double-hash functions
python-blockchain-tools/
├── src/
│ ├── __init__.py
│ ├── address.py # Address generation and validation
│ ├── keys.py # Key pair generation (secp256k1)
│ ├── transaction.py # Transaction parsing and creation
│ ├── explorer.py # Block explorer API client
│ ├── hashing.py # Cryptographic hash utilities
│ └── encoding.py # Base58, Bech32 encoding
├── tests/
│ ├── test_address.py
│ ├── test_keys.py
│ ├── test_transaction.py
│ ├── test_hashing.py
│ └── test_encoding.py
├── examples/
│ ├── generate_address.py
│ ├── validate_address.py
│ └── parse_transaction.py
├── requirements.txt
├── setup.py
└── README.md
# Clone
git clone https://github.com/yashhzd/python-blockchain-tools.git
cd python-blockchain-tools
# Create virtual environment
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
# Install dependencies
pip install -r requirements.txt
# Run tests
python -m pytest tests/ -vfrom src.keys import generate_keypair
from src.address import pubkey_to_address
private_key, public_key = generate_keypair()
address = pubkey_to_address(public_key, network="mainnet")
print(f"Address: {address}")from src.address import validate_address
result = validate_address("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa")
print(f"Valid: {result.is_valid}, Type: {result.address_type}")from src.transaction import parse_raw_transaction
raw_tx = "0100000001..."
tx = parse_raw_transaction(raw_tx)
print(f"Inputs: {len(tx.inputs)}, Outputs: {len(tx.outputs)}")# Run tests
python -m pytest tests/ -v
# Run with coverage
python -m pytest tests/ --cov=src
# Lint
flake8 src/ tests/
mypy src/MIT