Bwt Versions Save

A lightweight wallet indexer for Bitcoin, available as an Electrum RPC server and a modern HTTP REST API.

v0.2.4

3 years ago

Changelog

  • Allow specifying an explicit script type for xpubs using -x <xpub>:wpkh, -x <xpub>:shwpkh or -x <xpub>:pkh.

  • Fix blockchain.block.headers sending wrong number of headers (#87, thanks @stevenroose!)

  • Check testmempoolaccept prior to custom broadcast (#80)

  • Dependency updates and various small enhancements


Also see the v0.2.4 releases for bwt-electrum-plugin, libbwt, libbwt-nodejs and libbwt-jni.

Installation

Installation instructions are available on the README.

Verifying signatures

The releases are signed by Nadav Ivgi (@shesek). The public key can be verified on the PGP WoT, github, twitter, keybase, hacker news and this video presentation.

# Download (change x86_64-linux to your platform)
$ wget https://github.com/bwt-dev/bwt/releases/download/v0.2.4/bwt-0.2.4-x86_64-linux.tar.gz

# Fetch public key
$ gpg --keyserver keyserver.ubuntu.com --recv-keys FCF19B67866562F08A43AAD681F6104CD0F150FC

# Verify signature
$ wget -qO - https://github.com/bwt-dev/bwt/releases/download/v0.2.4/SHA256SUMS.asc \
  | gpg --decrypt - | grep ' bwt-0.2.4-x86_64-linux.tar.gz$' | sha256sum -c -

$ tar zxvf bwt-0.2.4-x86_64-linux.tar.gz
$ ./bwt-0.1.5-x86_64-linux/bwt --xpub <xpub> ...

The signature verification should show Good signature from "Nadav Ivgi <[email protected]>" ... Primary key fingerprint: FCF1 9B67 ... and bwt-0.2.4-x86_64-linux.tar.gz: OK.

Reproducible builds

The builds are fully reproducible.

You can verify the checksums against the v0.2.4 builds on Travis CI: https://travis-ci.org/github/bwt-dev/bwt/builds/764306060

See more details here.

v0.2.3

3 years ago

Changelog

  • New --prune-until <target> option to automatically prune the chain up to the given target (height, unix timestamp or YYYY-MM-DD formatted date)

    Require configuring bitcoind with prune=1 to allow manual pruning via the RPC.

  • New --no-wait-sync option to allow importing addresses without waiting for bitcoind to finish syncing first

    Useful for tracking wallets during the IBD of a pruned node, so transactions could be indexed before the blocks get pruned.

  • Fix compatibility with the upcoming v0.22 Bitcoin Core release (https://github.com/sparrowwallet/sparrow/issues/67#issuecomment-791522237)

  • HTTP: Set the WWW-Authenticate header to make logging-in possible via web browsers

  • Implement an fd-based daemon readiness notification mechanism, enabled with FD_NOTIFY=<fd>

  • Fix whitepaper extractor

  • UX touchups for progress indicator, welcome banner and logs

  • Allow setting UNIX_LISTENER_MODE to control permissions for the unix socket notification listener

  • Allow setting NO_REQUIRE_ADDRESSES as an env variable

Breaking CLI changes:

  • The Electrum SOCKS5-based authentication needs to be explicitly enabled with --electrum-socks-auth, in addition to enabling the --auth-* options. By default, authentication will only be enabled for the HTTP API server.

Also see the v0.2.3 releases for bwt-electrum-plugin, libbwt, libbwt-nodejs and libbwt-jni.

Installation

Installation instructions are available on the README.

Verifying signatures

The releases are signed by Nadav Ivgi (@shesek). The public key can be verified on the PGP WoT, github, twitter, keybase, hacker news and this video presentation.

# Download (change x86_64-linux to your platform)
$ wget https://github.com/bwt-dev/bwt/releases/download/v0.2.3/bwt-0.2.3-x86_64-linux.tar.gz

# Fetch public key
$ gpg --keyserver keyserver.ubuntu.com --recv-keys FCF19B67866562F08A43AAD681F6104CD0F150FC

# Verify signature
$ wget -qO - https://github.com/bwt-dev/bwt/releases/download/v0.2.3/SHA256SUMS.asc \
  | gpg --decrypt - | grep ' bwt-0.2.3-x86_64-linux.tar.gz$' | sha256sum -c -

$ tar zxvf bwt-0.2.3-x86_64-linux.tar.gz
$ ./bwt-0.1.5-x86_64-linux/bwt --xpub <xpub> ...

The signature verification should show Good signature from "Nadav Ivgi <[email protected]>" ... Primary key fingerprint: FCF1 9B67 ... and bwt-0.2.3-x86_64-linux.tar.gz: OK.

Reproducible builds

The builds are fully reproducible.

You can verify the checksums against the v0.2.3 builds on Travis CI: https://travis-ci.org/github/bwt-dev/bwt/builds/763199070

See more details here.

v0.2.2

3 years ago

Changelog

  • Authentication support for the Electrum and HTTP API servers (#70)

  • Compatibility with Bitcoin Core v0.21 (#78)

  • Support for Signet

  • New GET /bitcoin.pdf HTTP API endpoint for extracting the Bitcoin whitepaper from the block chain (https://twitter.com/shesek/status/1352368296553836544)

  • New --create-wallet-if-missing option to ease the creation of a designated bitcoind wallet (#76)

  • Docker: Multi-arch images for amd64, arm32v7 and arm64v8 (#79)

  • Indexer: Fix detection of conflicted mempool transactions

  • Support setting boolean options using environment variables (FORCE_RESCAN, CREATE_WALLET_IF_MISSING, ELECTRUM_SKIP_MERKLE, NO_STARTUP_BANNER and VERBOSE)

  • Accept wildcard envirnoment variables for options that accept multiple values (XPUB_*, DESC_*/DESCRIPTOR_* and ADDRESS_*)

  • Upgrade to rust-bitcoin v0.26.0, rust-miniscript v5.0.1 and bitcoincore-rpc v0.13.0


Also see the v0.2.2 releases for bwt-electrum-plugin, libbwt, libbwt-nodejs and libbwt-jni.

Installation

Installation instructions are available on the README.

Verifying signatures

The releases are signed by Nadav Ivgi (@shesek). The public key can be verified on the PGP WoT, github, twitter, keybase, hacker news and this video presentation.

# Download (change x86_64-linux to your platform)
$ wget https://github.com/bwt-dev/bwt/releases/download/v0.2.2/bwt-0.2.2-x86_64-linux.tar.gz

# Fetch public key
$ gpg --keyserver keyserver.ubuntu.com --recv-keys FCF19B67866562F08A43AAD681F6104CD0F150FC

# Verify signature
$ wget -qO - https://github.com/bwt-dev/bwt/releases/download/v0.2.2/SHA256SUMS.asc \
  | gpg --decrypt - | grep ' bwt-0.2.2-x86_64-linux.tar.gz$' | sha256sum -c -

$ tar zxvf bwt-0.2.2-x86_64-linux.tar.gz
$ ./bwt-0.1.5-x86_64-linux/bwt --xpub <xpub> ...

The signature verification should show Good signature from "Nadav Ivgi <[email protected]>" ... Primary key fingerprint: FCF1 9B67 ... and bwt-0.2.2-x86_64-linux.tar.gz: OK.

Reproducible builds

The builds are fully reproducible.

You can verify the checksums against the v0.2.2 builds on Travis CI: https://travis-ci.org/github/bwt-dev/bwt/builds/756663238

See more details here.

v0.2.1

3 years ago

Changelog

  • Migrated to the @bwt-dev github org and split up into:

    bwt, bwt-electrum-plugin, libbwt, libbwt-jni and libbwt-nodejs.

  • Java Native Bindings for libbwt (libbwt-jni, #73)

  • Support for tracking standalone addresses (#14)

    Using --address <address> or --address-file <path>.

  • New config options: force_rescan (9e7ccbe), setup_logger (35fc49f) and require_addresses (162790d)

  • Gracefully wait for bitcoind to warm-up (dec6d46)

  • Support for android_logger (74b2b2f)

  • Scrub bitcoin authentication from logs (c31def7)

  • Improved syncing/scanning progress updates (faba3f, 6e282fd, fdd46f3, 5ba2a0b)

  • Indexer: Fix excessive importing/rescanning (a20ae79)

  • Indexer: Fix cache invalidation for spends lookups (360eaee)

  • Indexer: Fix handling of missing mempool entries (e9b7511)

  • Electrum: Fix TCP listener not shutting down on shutdown signal (5bd639a)

  • Docker/CI: Update to Rust v1.49 (5bd639a)

Breaking CLI changes:

  • The --bare-xpub option was removed. Use a descriptor instead.

Also see the v0.2.1 releases for bwt-electrum-plugin, libbwt, libbwt-nodejs and libbwt-jni.

Installation

Installation instructions are available on the README.

Verifying signatures

The releases are signed by Nadav Ivgi (@shesek). The public key can be verified on the PGP WoT, github, twitter, keybase, hacker news and this video presentation.

# Download (change x86_64-linux to your platform)
$ wget https://github.com/bwt-dev/bwt/releases/download/v0.2.1/bwt-0.2.1-x86_64-linux.tar.gz

# Fetch public key
$ gpg --keyserver keyserver.ubuntu.com --recv-keys FCF19B67866562F08A43AAD681F6104CD0F150FC

# Verify signature
$ wget -qO - https://github.com/bwt-dev/bwt/releases/download/v0.2.1/SHA256SUMS.asc \
  | gpg --decrypt - | grep ' bwt-0.2.1-x86_64-linux.tar.gz$' | sha256sum -c -

$ tar zxvf bwt-0.2.1-x86_64-linux.tar.gz
$ ./bwt-0.1.5-x86_64-linux/bwt --xpub <xpub> ...

The signature verification should show Good signature from "Nadav Ivgi <[email protected]>" ... Primary key fingerprint: FCF1 9B67 ... and bwt-0.2.1-x86_64-linux.tar.gz: OK.

Reproducible builds

The builds are fully reproducible.

You can verify the checksums against the v0.2.1 builds on Travis CI: https://travis-ci.org/github/bwt-dev/bwt/builds/754451937

See more details here.

v0.2.0

3 years ago

Changelog

  • Descriptor based tracking! βœ¨πŸŽ‰ (#1)

    You can now specify output script descriptors to track via --descriptor <descriptor>. Descriptors are also used internally to represent user-provided --xpubs.

    The HTTP API was updated to be fully descriptor-based. Wallets and wallet origins are now identified by the descriptor checksum, addresses have descriptors associated with them, and a new bip32_origins field is available based on the descriptor origin information.

  • Support for Electrum multi-signature wallets (#60)

    For a manual server setup, this requires using the sortedmulti() descriptor. For example, for a 2-of-3 wallet: sortedmulti(2,xpub1...,xpub2...,xpub3...).

    With the Electrum plugin, this should Just Workβ„’.

  • Alpha release of libbwt (#64), a C FFI interface for managing the bwt servers, and of nodejs-bwt-daemon (#65), a nodejs package that wraps it.

  • Support non-wallet transactions in blockchain.transaction.get / GET /tx/:txid/hex (requires txindex and no pruning)

  • Emit wallet rescan and blockchain sync progress updates (via mpsc, ffi and the console)

  • Support binding on ephemeral port (e.g. --http-addr 127.0.0.1:0) (#63)

  • Reduce the number of dependencies (#61)

  • Shutdown cleanly, via SIGINT/SIGTERM for CLI or a custom signal for library users (#62, #66)

  • HTTP: Alias GET /txs/since/0 as GET /txs

  • Fix blockchain.scripthash.listunspent / Query::list_unspent to return an empty set instead of erroring when there's no history.

  • Electrum: Fix mempool.get_fee_histogram (5af7bfc62d7d98)

  • Upgrade to rust-bitcoin v0.25, rust-miniscript v4.0.0 and rust-bitcoincore-rpc v0.12

Breaking CLI changes:

  • The -d CLI option was changed to mean --descriptor instead of --bitcoind-dir (which is now available as -r).

  • Renamed --http-server-addr to --http-addr and --electrum-rpc-addr to --electrum-addr

  • The CLI now accepts a single --rescan-since timestamp instead of a separate one for each descriptor/xpub.

  • The separator for environment variables with multiple values is now ; instead of ,. For example: DESCRIPTORS="wpkh(xpub../0/*);wpkh(xpub../1/*)"


Downloads

Full Server 1 Electrum Server 2 Electrum Plugin 3
Linux πŸ“₯ Download πŸ“₯ Download πŸ“₯ Download
macOS πŸ“₯ Download πŸ“₯ Download πŸ“₯ Download
Windows πŸ“₯ Download πŸ“₯ Download πŸ“₯ Download
ARMv7 πŸ“₯ Download πŸ“₯ Download πŸ“₯ Download
ARMv8 πŸ“₯ Download πŸ“₯ Download πŸ“₯ Download
1 Includes Electrum RPC, HTTP API and WebHooks support (learn more)
2 Includes Electrum RPC support only (learn more)
3 Plugin with an embedded RPC server - hot wallets are unsupported (learn more)

Installation

Installation instructions are available on the README.

Verifying signatures

The releases are signed by Nadav Ivgi (@shesek). The public key can be verified on keybase, github, twitter and HN. The signature can be verified as follows (replace x86_64-linux with your download):

# Download package
$ wget https://github.com/shesek/bwt/releases/download/v0.2.0/bwt-0.2.0-x86_64-linux.tar.gz
# Fetch signing key
$ gpg --keyserver keyserver.ubuntu.com --recv-keys FCF19B67866562F08A43AAD681F6104CD0F150FC
# Verify signature
$ wget -qO - https://github.com/shesek/bwt/releases/download/v0.2.0/SHA256SUMS.asc \
  | gpg --decrypt - | grep ' bwt-0.2.0-x86_64-linux.tar.gz$' | sha256sum -c -

You should see Good signature from "Nadav Ivgi <[email protected]>" ... Primary key fingerprint: FCF1 9B67 ... and bwt-0.2.0-x86_64-linux.tar.gz: OK.

Reproducible builds

The builds are fully reproducible.

You can verify the checksums against the v0.2.0 builds on Travis CI: https://travis-ci.org/github/shesek/bwt/builds/745668826

See more details here.

v0.2.0-rc.1

3 years ago

v0.1.5

3 years ago

Changelog

  • Reproducible builds using Docker (#51)

  • Pre-built binary releases for macOS (#24) and ARMv7/v8 (#19)

  • Electrum plugin: Compatibility with Electrum v4 β€” except for lightning which is tricky with personal servers (#53)

  • Electrum: New welcome banner (#44)

  • Scriptable transaction broadcast command via --tx-broadcast-cmd <cmd> (#7)

    The command will be used in place of broadcasting transactions using the full node, which may provide better privacy in some circumstances. The string {tx_hex} will be replaced with the hex-encoded transaction.

    For example, to broadcast transactions over Tor using the blockstream.info onion service, you can use:

    --tx-broadcast-cmd '[ $(curl -s -x socks5h://localhost:9050 http://explorerzydxu5ecjrkwceayqybizmpjjznk5izmitf2modhcusuqlid.onion/api/tx -d {tx_hex} -o /dev/stderr -w "%{http_code}" -H "User-Agent: curl/7.$(shuf -n1 -e 47 58 64 68).0") -eq 200 ]'
    

    (Replace port 9050 with 9150 if you're using the Tor browser bundle.)

    h/t @chris-belcher's EPS for inspiring this feature! 🎩

  • Load bitcoind wallet automatically (#54)

  • Electrum plugin: Fix hot wallet test (#47)

  • Electrum: Fix docker image libssl dependency with the http feature (#48)

  • Improve block download check on regtest (#45, #35)

  • HTTP API: Fix GET /block/tip (#46)

  • HTTP API: Add GET /banner.txt (#44)

  • Tests: Upgrade to Electrum v4


Downloads

Full Server 1 Electrum Server 2 Electrum Plugin 3
Linux πŸ“₯ Download πŸ“₯ Download πŸ“₯ Download
macOS πŸ“₯ Download πŸ“₯ Download πŸ“₯ Download
Windows πŸ“₯ Download πŸ“₯ Download πŸ“₯ Download
ARMv7 πŸ“₯ Download πŸ“₯ Download πŸ“₯ Download
ARMv8 πŸ“₯ Download πŸ“₯ Download πŸ“₯ Download
1 Includes Electrum RPC, HTTP API and WebHooks support (learn more)
2 Includes Electrum RPC support only (learn more)
3 Plugin with an embedded RPC server - hot wallets are unsupported (learn more)

Installation

Installation instructions are available on the README.

Verifying signatures

The releases are signed by Nadav Ivgi (@shesek). The public key can be verified on keybase, github, twitter and HN. The signature can be verified as follows (replace x86_64-linux with your download):

# Download package
$ wget https://github.com/shesek/bwt/releases/download/v0.1.5/bwt-0.1.5-x86_64-linux.tar.gz
# Fetch signing key
$ gpg --keyserver keyserver.ubuntu.com --recv-keys FCF19B67866562F08A43AAD681F6104CD0F150FC
# Verify signature
$ wget -qO - https://github.com/shesek/bwt/releases/download/v0.1.5/SHA256SUMS.asc \
  | gpg --decrypt - | grep ' bwt-0.1.5-x86_64-linux.tar.gz$' | sha256sum -c -

You should see Good signature from "Nadav Ivgi <[email protected]>" ... Primary key fingerprint: FCF1 9B67 ... and bwt-0.1.5-x86_64-linux.tar.gz: OK.

Reproducible builds

The builds are fully reproducible.

You can verify the checksums against the v0.1.5 builds on Travis CI: https://travis-ci.org/github/shesek/bwt/builds/732966695

See more details here.

v0.1.4

3 years ago

Changelog

  • Implement improved mempool tracking, including support for an "effective feerate" metric that takes unconfirmed ancestors into account, calculated as MIN(own_fee/own_vsize, (own_fee+ancestor_fee)/(own_vsize+ancestor_vsize)).

    HTTP API: the wallet transaction format now includes new own_feerate, effective_feerate, bip125_replaceable and unconfirmed_parents fields available for unconfirmed transactions.

    Electrum server: provide fee information for unconfirmed transactions using the effective feerate metric. This is unlike other Electrum server implementations, that report the direct own fee without regard to ancestors. (#10)

  • Electrum server: Implement --electrum-skip-merkle to save some resources by not generating SPV proofs entirely, even when it's possible. (#34)

  • Electrum plugin: Automatically enable --skipmerklecheck and --electrum-skip-merkle, for better out-of-the-box pruning support and to save some resources. (#34)

  • Indexer: Use listsinceblock instead of listtransactions. This makes syncing more bandwidth-efficient and simplifies the implementation. (#33)

  • Electrum server: Optimize dispatching notifications to subscribers.

  • Electrum server: Use height of -1 to indicate that a transaction has unconfirmed parents as its inputs. (#40)

  • Electrum plugin: Disable support for hot wallets.

  • Make rust builds 65% faster (#15, 8e785cbb2dc63ce599a2f65d3d5a162da9a52b8c)


Installation

Installation instructions are available on the README.

Verifying signatures

The releases are signed by Nadav Ivgi (@shesek). The public key can be verified on keybase, github, twitter and HN. The signature can be verified as follows (replace x86_64-linux with your download):

# Download package
$ wget https://github.com/shesek/bwt/releases/download/v0.1.4/bwt-0.1.4-x86_64-linux.tar.gz

# Verify signatures
$ gpg --keyserver keyserver.ubuntu.com --recv-keys FCF19B67866562F08A43AAD681F6104CD0F150FC
$ wget -qO - https://github.com/shesek/bwt/releases/download/v0.1.4/SHA256SUMS.asc \
  | gpg --decrypt - | grep ' bwt-0.1.4-x86_64-linux.tar.gz$' | sha256sum -c -

You should see Good signature from "Nadav Ivgi <[email protected]>" ... Primary key fingerprint: FCF1 9B67 ... and bwt-0.1.4-x86_64-linux.tar.gz: OK.

Electrum plugin

The Electrum plugin is available for download for Linux and Windows, as the electrum_plugin package.

⚠️ NOTE: The plugin supports watch-only wallets only and cannot be used with hot wallets. This is done as a security measure, which is expected to eventually be relaxed. You can use the plugin with hardware wallets or with an offline Electrum setup. For hot wallets, you will need to setup a standalone server instead of using the plugin, ideally away from your keys.

v0.1.3

3 years ago
  • Electrum: Use dummy SPV proofs to support pruning with the --skipmerklecheck option.

v0.1.2

3 years ago
  • Electrum plugin: restore the previous oneserver setting when the plugin is disabled, to prevent users from inadvertently connecting to public Electrum servers with this setting still on.

  • Electrum plugin: allow specifying additional custom CLI arguments using the GUI

  • Electrum plugin: check for permissions before attempting the bind the real-time sync unix socket.

  • Make builds over 40% smaller by stripping symbols, which rust apparently doesn't do for release builds. Thanks @elichai for brining this to my attention.