/bitcoin-address-generator

πŸͺ™ Bitcoin address generator

Primary LanguageRust

Bitcoin Address Generator

A bitcoin address generator written in Rust.
Generates a Bitcoin wallet address from a random private 256bit key.

Made for learning purposes only.

Here are the steps used to generate the address:

 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
 β”‚                     β”‚                      β”‚            β”‚
 β”‚ 256 bit Private Key β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚ Public Key β”‚
 β”‚                     β”‚  Elliptic Curve      β”‚            β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  Digital Signature   β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
                          Algorithm                  β”‚
                                                     β”‚SHA256/RIPEMD160
                                                     β”‚
 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      Add network     β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”
 β”‚     Hashed Key      β”‚      byte prefix     β”‚            β”‚
 β”‚   with net prefix   │◄────────────────────── Hashed Key β”‚
 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”˜                      β”‚            β”‚
            β”‚     β”‚                           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚     β”‚
SHA256 twiceβ”‚     β”‚
            β”‚     β”‚
            β”‚     β”‚
            β”‚     β”‚                                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
            β”‚     └────────────────────────────────────►│             β”‚
            β”‚               Add first four bytes        β”‚  Unencoded  β”‚
  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” of checksum to hashed key      β”‚   Address   β”‚
  β”‚                    β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Ίβ”‚             β”‚
  β”‚      Checksum      β”‚                                β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
  β”‚                    β”‚                                       β”‚
  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                       β”‚
                                                               β”‚Base58 Encoding
                                                               β”‚
                                                     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                                                     β”‚                    β”‚
                                                     β”‚     BITCOIN        β”‚
                                                     β”‚       WALLET       β”‚
                                                     β”‚        ADDRESS     β”‚
                                                     β”‚                    β”‚
                                                     β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜