Skip to content

stevenroose/hal

Folders and files

NameName
Last commit message
Last commit date

Latest commit

c86a143 · Mar 21, 2025
Apr 16, 2020
Oct 5, 2024
Mar 21, 2025
Jun 6, 2023
Feb 14, 2019
Dec 27, 2018
Sep 23, 2019
Mar 21, 2025
Mar 21, 2025
Mar 21, 2025
Dec 27, 2018
Aug 29, 2023
Mar 21, 2025

Repository files navigation

hal -- the Bitcoin companion

hal is a command line tool that provides all kinds of Bitcoin-related utilities.

Installation

$ cargo install --locked hal

Summary of commands:

  • address

    • inspect: get information about addresses
    • create: create addresses using public keys or scripts
  • bech32

    • decode: parse the elements of the Bech32 format
    • encode: encode data in the Bech32 format
  • bip32

    • derive: derive keys and addresses from extended keys
    • inspect: inspect a BIP-32 xpub or xpriv
  • bip39

    • generate: generate a new BIP-39 mnemonic
    • get-seed: get the seed value and BIP-32 master key for a given BIP-39 mnemonic
  • block

    • create: create a binary block from JSON
    • decode: decode a binary block to JSON
  • hash

    • sha256: hash data with SHA-256
    • sha256d: hash data with double SHA-256
  • key

    • generate: generate a random keypair
    • derive: generate a public key from a private key
    • inspect: inspect private keys
    • ecdsa-sign: make ECDSA signatures
    • ecdsa-verify: verify ECDSA signatures
    • pubkey-tweak-add: add a scalar to a point
    • pubkey-combine: add two points together
  • ln

    • invoice
      • decode: decode Lightning invoices
  • merkle

    • proof-create: create a merkle proof
    • proof-check: check a merkle proof
  • message

    • hash: get hashes of Bitcoin Signed Message
    • sign: sign a message using Bitcoin Signed Message
    • verify: verify a Bitcoin Signed Message
    • recover: recover the pubkey or address that signed a message
  • miniscript

    • descriptor: get information about an output descriptor
    • instpect: inspect miniscripts
    • parse: parse a script into a miniscript
    • policy: inspect policies
  • psbt

    • create: create a PSBT from a raw unsigned transaction
    • decode: decode a PSBT to JSON
    • edit: edit a PSBT inline
    • finalize: finalize a PSBT into a fully signed transaction
    • merge: merge multiple PSBTs into one
  • random

    • bytes: generate random bytes
  • script

    • decode: decode a PSBT to JSON
  • tx

    • create: create a binary transaction from JSON
    • decode: decode a binary transaction to JSON

Minimum Supported Rust Version (MSRV)

hal should always compile on Rust 1.41.1. Note that it should be build using the Cargo.lock file, so using --locked.

Extensions

hal allows the use of extensions that can be installed separately.

Known extensions:

Ideas:

  • optional Trezor and Ledger integration