Skip to content

pmienk/libbitcoin-explorer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5deadba · May 25, 2024
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status

Coverage Status

Libbitcoin Explorer

The Bitcoin Command Line Tool

Documentation is available on the wiki.

Downloads are available for Linux, Macintosh and Windows.

License Overview

All files in this repository fall under the license specified in COPYING. The project is licensed as AGPL with a lesser clause. It may be used within a proprietary project, but the core library and any changes to it must be published online. Source code for this library must always remain free for everybody to access.

About Libbitcoin

The libbitcoin toolkit is a set of cross platform C++ libraries for building bitcoin applications. The toolkit consists of several libraries, most of which depend on the foundational libbitcoin-system library. Each library's repository can be cloned and built using common automake 1.14+ instructions or cmake 3.5+ instructions. There are no packages yet in distribution however each library includes an installation script (described below) which is regularly verified via github actions.

About Libbitcoin Explorer

Libbitcoin Explorer (BX) is a command line tool for working with Bitcoin. It can be built as a single portable executable for Linux, macOS or Windows and is available for download as a signed single executable for each. BX exposes over 80 commands and supports network communication with libbitcoin-server or its predecessor Obelisk, and the P2P Bitcoin network. BX is well documented and supports simple and advanced scenarios, including stealth and multisig.

Installation

Libbitcoin Explorer (BX) can be built from sources or downloaded as a signed portable single file executable.

On Linux and macOS libbitcoin-explorer can be build using Autotools and cmake. This process is accomplished via the provided installation scripts install.sh or install-cmake.sh. These scripts provide a basis for installation of the dependencies of the project. Both support the use of the argument --help for further parameterization.

Installation of libbitcoin-explorer comes with requirements listed below.

Use of install-cmake.sh additionally requires cmake 3.5+.

A minimal libbitcoin-explorer build requires boost 1.73.0 to 1.76.0i, libsecp256k1, and zmq 4.3.4. The libbitcoin/secp256k1 repository is forked from bitcoin-core/secp256k1 in order to control for changes and to incorporate the necessary Visual Studio build. The original repository can be used directly but recent changes to the public interface may cause build breaks. The --enable-module-recovery switch is required. Both of these are able to be provided via the installation script(s).

Detailed instructions are provided below.

Debian/Ubuntu

Below is a breakdown of preparation required to install libbitcoin-explorer. Once an appropriate compiler and build system are in place, proceed to Install Script Execution below to perform installation.

Compiler

The current minimum verified compilers for this project are gcc 9.4.0 and clang 11.0.0.

To see your GCC version:

$ g++ --version
g++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

If necessary, upgrade your GCC compiler as follows:

$ sudo apt install g++-9
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9.4 50
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9.4 50
$ sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-9.4 50

To see your clang version:

$ clang++ --version
Ubuntu clang version 11.0.0-2~ubuntu20.04.1
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

If necessary, upgrade your clang compiler as follows:

$ sudo apt install clang-11
$ sudo update-alternatives --install /usr/bin/clang++ /usr/bin/clang++-11 50
$ sudo update-alternatives --install /usr/bin/clang /usr/bin/clang-11 50

Build System

Next install the build system (Automake minimum 1.14) and git:

$ sudo apt install build-essential autoconf automake libtool pkg-config git

Boost (Not Recommended)

Next install the Boost (1.73.0 - 1.76.0) development package. This can be accomplished via parameterization of the installation script during libbitcoin-explorer installation and it is recommended to the reader that this approach be used.

Due to the current state of packaging, boost is not provided by the standard packaging system at the required minimum version. This requires either manual source compilation (as is controlled within the installation scripts) or trusting a 3rd party Personal Package Archive. Verification of the build is done against the sources (required for proper use of ICU).

A user may find Martin Hierholzer's PPA useful. This is left for the adventurous reader.

ZMQ

Next install the ZMQ (4.3.4) development package. This can be accomplished via parameterization of the installation script during libbitcoin-protocol installation or via the libzmq3-dev package as follows:

$ sudo apt install libzmq3-dev

Macintosh

The macOS preparation differs from Linux the supported compiler and manner of dependency installation.

Compiler

Libbitcoin compiles with clang on macOS and requires C++11 support. Installation has been verified using Clang based on LLVM 14. This version or newer should be installed as part of the Xcode command line tools.

To see your Clang/LLVM version:

$ clang++ --version

You may encounter a prompt to install the Xcode command line developer tools, in which case accept the prompt.

Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin14.0.0
Thread model: posix

If required update your version of the command line tools as follows:

$ xcode-select --install

Build System

Libbitcoin supports both Homebrew and MacPorts package managers. Both require Apple's Xcode command line tools. Neither requires Xcode as the tools may be installed independently.

Using Homebrew

First install Homebrew.

Next install the build system (Automake minimum 1.14) and wget:

$ brew install autoconf automake libtool pkgconfig wget
Using MacPorts

First install MacPorts.

Next install the build system (Automake minimum 1.14) and wget:

$ sudo port install autoconf automake libtool pkgconfig wget

Boost (Not Recommended)

As above, it has been noted that the installation scripts can control the installation of boost from sources. This is desirable due to package system support changes. Installation from Homebrew or MacPorts may be accomplished, however significant parameterization may be required due to version requirements. This is left to the adventerous reader.

ZMQ

Next install the ZMQ (4.3.4) development package. This can be accomplished via parameterization of the installation script during libbitcoin-protocol installation or via Homebrew as follows:

$ brew install zeromq

Install Script Execution

The autotools install script and cmake install script are written so that the manual build steps for each dependency can be inferred by a developer.

You can run either install script from any directory on your system. By default this will build libbitcoin-explorer in a subdirectory named build-libbitcoin-explorer and install it to /usr/local/. The install script requires sudo only if you do not have access to the installation location, which you can change using the --prefix option on the installer command line.

The build script clones, builds and installs six unpackaged repositories, namely:

The script builds from the head of their version7 and version3 branches respectively. The master branch is a staging area for changes. The version branches are considered release quality.

The below provides examples for install script execution. The use of ./install.sh may be substituted with ./install-cmake.sh in order to use cmake tools to build the libbitcoin repositories. It should be noted that autotools is still required for libbitcoin/secp256k1 and most other install script managed dependencies.

Build Options

Any set of ./configure options can be passed via the build script, for example:

$ CFLAGS="-Og -g" ./install.sh --prefix=/home/me/myprefix

Compiling with ICU (International Components for Unicode)

Since the addition of BIP-39 and later BIP-38 support, libbitcoin conditionally incorporates ICU. To use the BIP-38 and BIP-39 passphrase normalization features libbitcoin must be compiled with the --with-icu option.

$ ./install.sh --with-icu

Building ICU, Boost and/or ZMQ

The installer can download and install any or all of these dependencies. ICU is a large package that is not typically preinstalled at a sufficient level. Using these builds ensures compiler and configuration compatibility across all of the build components. It is recommended to use a prefix directory when building these components.

$ ./install.sh --with-icu --build-icu --build-boost --build-zmq --prefix=/home/me/myprefix

Windows

Visual Studio solutions are maintained for all libbitcoin libraries. NuGet packages exist for dependencies. ICU is integrated into Windows and therefore not required as an additional dependency when using ICU features.

The libbitcoin execution environment supports Windows XP Service Pack 2 and newer.

Supported Compilers

Libbitcoin requires a C++11 compiler, which means Visual Studio 2013 (with a pre-release compiler update) or later. Download and install one of the following free tools as necessary:

NuGet Repository

Dependencies apart from the libbitcoin libraries are available as NuGet packages:

The packages can be viewed using the NuGet package manager from the libbitcoin solution. The package manager will prompt for download of any missing packages.

The libbitcoin solution files are configured with references to these packages. The location of the NuGet repository is controlled by the nuget.config file repositoryPath setting and the NuGetPackageRoot element of each [project].props file.

Build Libbitcoin Projects

Visual Studio solutions are maintained for all libbitcoin libraries.

After cloning the the repository the libbitcoin build can be performed from within Visual Studio or using the build_all.bat script provided in the builds\msvc\build\ subdirectory. The script automatically downloads all required NuGet packages.

Tip: The build_all.bat script builds all valid configurations for all compilers. The build time can be significantly reduced by disabling all but the desired configuration in build_base.bat and build_all.bat.

The libbitcoin dynamic (DLL) build configurations do not compile, as the exports have not yet been fully implemented. These are currently disabled in the build scripts but you will encounter numerous errors if you build then manually.

Note that all dependencies must be fulfilled. This can be accomplished by building libbitcoin repository projects in the following order:

  1. libbitcoin/libbitcoin-system
  2. libbitcoin/libbitcoin-protocol
  3. libbitcoin/libbitcoin-client
  4. libbitcoin/libbitcoin-network
  5. libbitcoin/libbitcoin-explorer

Optional: Building secp256k1

The secp256k1 package above is maintained using the same Visual Studio template as all libbitcoin libraries. If so desired it can be built locally, in the same manner as libbitcoin.

This change is properly accomplished by disabling the "NuGet Dependencies" in the Visual Studio properties user interface and then importing secp256k1.import.props, which references secp256k1.import.xml.

About

Bitcoin Command Line Tool

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 88.3%
  • Shell 5.2%
  • M4 3.3%
  • CMake 1.7%
  • Makefile 1.1%
  • Batchfile 0.4%