A Python package for generating Bitcoin addresses using ECDSA
Project description
Bitcoin Address Generator
⚠️ Educational and Development Use Only
This package is intended for educational and development purposes. Do not use for production or with real Bitcoin transactions.
Introduction
This repository explores the use of randomly generated hexadecimal numbers to create a bitcoin wallet address using the Elliptic Curve Digital Signature Algorithm. When Alice wants to buy a book from Bob, after all has been agreed upon, Bob needs to provide Alice with a bitcoin wallet address where the payments will be deposited. The transaction will be done on the blockchain, so Bob needs a bitcoin wallet address to receive payments. This repository covers how a bitcoin wallet address can be created from randomly generated private keys.
In cryptography, the Elliptic Curve Digital Signature Algorithm (ECDSA) offers a variant of the Digital Signature Algorithm (DSA) which uses elliptic-curve cryptography.
Method
Bob signs a hash of a message with his private key, and then Alice proves with his public key. Bob also uses a random nonce value for the signature (K)
With ECDSA, Alice will sign a message with her private key, and then Bob will use her public key to verify that she signed the message (and that the message has not changed)
The diagram below illustrates the architecture and how the Bitcoin wallet addresses are created:
Features
- Generate random private keys
- Convert private keys to public keys using ECDSA
- Create valid Bitcoin addresses
- Command-line interface
- Comprehensive validation
- Educational examples and documentation
Setting Up Our Environment
To achieve desired outcome, first we need to set-up the environment. For development purposes, you can use:
- Google Colab environment - https://colab.research.google.com/
- Local Python environment
- Package installation via pip (see Installation section)
For getting randomly generated private keys, you can use:
- Random generation within the package
- Private keys from wallet addresses created via https://www.bitaddress.org
- Other hex generators like https://www.browserling.com/tools/random-hex
Note: For production use, always ensure secure methods of private key generation.
Python Libraries & Dependencies
• ECDSA Python Library - Implementation of the Elliptic Curve Cryptography • Hashlib - Contains hash algorithms for SHA256, RIPEMD160 • Codecs - For encoding and decoding • Base58 - For Base58Check encoding
Installation
pip install bitcoin-address-generator
Quick Start
from bitcoin_address_generator import generate_wallet
# Generate new wallet
private_key, public_key, address = generate_wallet()
print(f"Bitcoin Address: {address}")
Command Line Usage
# Generate new address
bitcoin-address-generator generate
# Validate address
bitcoin-address-generator validate <address>
Development Roadmap
v0.1.0 (Current)
- Basic Bitcoin address generation
- Command-line interface
- Core cryptographic operations
- Educational documentation
- Test suite
v0.2.0 (Planned)
- Support for different address types (P2SH, SegWit)
- Key encryption for secure storage
- QR code generation for addresses
- Bulk address generation
- Basic transaction signing
v0.3.0 (Planned)
- HD wallet support (BIP32/39/44)
- Mnemonic phrase generation
- Multi-signature support
- Network validation
- Address balance checking
v0.4.0 (Planned)
- Web interface
- API endpoint support
- Transaction history
- Address monitoring
- Automated testing with testnet
Documentation
Feedback
If you have any feedback, please reach out to me at gs_wl889@icloud.com
Contributing
Contributions are always welcome! See CONTRIBUTING.md for ways to get started. Please adhere to this project's CODE_OF_CONDUCT.md.
Love to read more? Here are some resources & references
- Bitcoin Technical Document
- List of Addresses Prefixes
- Elliptic Curve Digital Signature Algorithm
- ECDSA Python Library
- SEC2: Recommended Elliptic Curve Domain Parameters
- Efficient and Secure ECDSA Algorithm Survey
Security
This package is for educational purposes. See SECURITY.md for important security considerations.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bitcoin-address-generator-0.1.0.tar.gz.
File metadata
- Download URL: bitcoin-address-generator-0.1.0.tar.gz
- Upload date:
- Size: 10.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2122cdf1646de04f10fbcc31da5e07bbcf74cda307e083ff5d4b362388ab1281
|
|
| MD5 |
671b7b9b5775488d376a80e10a492f51
|
|
| BLAKE2b-256 |
fe03fc1389005c19bac3f66a0d9e7b7b59034a02449cd0f0df3db332afae5330
|
File details
Details for the file bitcoin_address_generator-0.1.0-py3-none-any.whl.
File metadata
- Download URL: bitcoin_address_generator-0.1.0-py3-none-any.whl
- Upload date:
- Size: 11.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.21
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b6f03700b350d833d8ebfe30b0cd2590ee5127fda62a9f862e723e80a1cc9765
|
|
| MD5 |
bb2830aecbe48504e8f04826dda3e404
|
|
| BLAKE2b-256 |
ee799e03827d0c46b2ca5a29e1465a526ddb74db23dcb1a938a6abf1cb647819
|