Bitcoin Hierarchical Deterministic wallet Python

Here we start a series of articles that entirely cover topics on how to start working with a blockchain network; from local creation of keys and addresses to transaction creation, signing, and broadcasting to the network. We take Bitcoin as the best example of the UTXO model, though then we’ll trace the same for Account-based blockchain networks.

In this article, we will create a bitcoin HD (Hierarchical Deterministic) wallet using Python language. To learn how HD wallet works, you can check this article.

Prerequisite

  • Python
  • Basic understanding of programming

Download and install python’s latest version from its official website.

We need to install a python library called bitcoinlib to create and manage bitcoin wallets. To install the library run following command.

pip install bitcoinlib

Bitcoin HD Wallet with Python

Using HD wallets, we can generate a complete suite of crypto wallets for different cryptocurrency networks using just one seed. However, in today’s article, we will only focus on Bitcoin and how to create a simple HD wallet.

So let’s create our first Bitcoin HD wallet.

from bitcoinlib.wallets import HDWallet

wallet = HDWallet.create('Wallet1')

key1 = wallet.new_key()

print(key1.address)

In the above script, we are performing the following steps:

  • Importing bitcoinlib library
  • create a new wallet
  • Generating a new HD Key.
  • Create a new address

To run the above program, save it in a file with .py extension. (Ex- hd_wallet1.py). Then run that file using the command below.

python hd_wallet1.py

Bitcoin HD Wallet with Mnemonics

Mnemonics are very popular because they are easy to remember. Let’s see how to create a Bitcoin wallet using mnemonics.

from bitcoinlib.wallets import HDWallet, wallet_delete

from bitcoinlib.mnemonic import Mnemonic

passphrase = Mnemonic().generate()

print(passphrase)

wallet = HDWallet.create("mWallet1", keys=passphrase, network='bitcoin')

key1 = wallet.new_key()

print(key1.address)

In the above script, we are performing the following steps.

  • Importing relevant classes from bitcoinlib
  • Generating a random mnemonic, you can pass your own
  • Creating a new wallet named mWallet1
  • Generating keys
  • Getting bitcoin public address

To run this program, save it in a file with .py extension. (Ex- hd_wallet2.py). Then run that file using the command below.

python hd_wallet2.py

To learn more about the bitcoinlib library check out the official documentation.

In the next article, we will talk about the Bitcoin Multi-sig wallet and how to create one.

Note: Never post your keys or mnemonic publically.