Bitcoin Programming with BitcoinJS, Bitcoin Core and LND

Welcome to the non-official Bitcoin Programming with BitcoinJS extensive guide! You will learn how to create various types of Bitcoin transactions using the version 5 of BitcoinJS library.

We will use the Bitcoin Core command-line interface in Regtest mode for various common tasks, as well as some complementary libraries like bx aka Libbitcoin Explorer.

Throughout this guide, we want to provide you with sufficient explanation to each command to understand it without drowning in information. You can refer to additional resources to better understand the Bitcoin protocol. For example, check out our Bitcoin Studio presentations.

At the moment, Bitcoin Javascript tutorials are still very scarce, but we believe it doesn’t have to be this way. The following guide intends to address this problem.

This guide is maintained on GitHub and available as a web book. It is written in awesome AsciiDoc and generated using the kickass Antora site generator.


Do you like this content?
Do you want me to maintain it and update it to the latest BitcoinJS version?
Then please consider making a donation on
If you are broke, just send me 1 satoshi to show me some ❤️, it’s more important than you may think.
Have a wonderful journey to Bitcoin mastery!



Having prior theoretical knowledge of the Bitcoin protocol will surely help, but we provide comprehensive explanation throughout this guide so it fits for beginners.

Technical requirements

  • Node >= v10 recommended

  • BitcoinJS v5

  • Bitcoin Core >= v18

  • Bash or a Bash interpreter like Cygwin or Windows Subsystem for Linux (WSL)

  • JQ (json parser)

  • Libbitcoin Explorer v3 (optional)

Unless otherwise noted, the contents of this repository are Copyright ©2019 by Bitcoin Studio and are licensed GPL v3.


  • This guide is not an official documentation

  • You must check the BitcoinJS repository for up-to-date code

  • Non-standard scripts are exposed for educational purposes

  • The author of this guide is not responsible for any loss of funds