Skip to content


Choose a tag to compare
@Christewart Christewart released this 03 May 18:51
· 1778 commits to master since this release

v0.6.0 - Javascript!

Executive Summary

This release support scalajs for both the crypto and core module. You can now use these modules from javascript.

We now support docker for our oracleServer and appServer projects.
Follow these links for docker builds for appServer and oracleServer

We support the latest bitcoind rpc client (0.21.1) that has the taproot activation code baked into it.

Our libsecp256k1 pre-compiled binaries now support osx_arm64 which makes them compatible with the new M1 chip from Apple.

Finally, we had to re-write the git history for this release due to #2830 . This means previous commits have been re-written.


101 Chris Stewart
49 benthecarman
44 Scala Steward
6 Nadav Kohen
6 rorp
2 Aris
1 saguywalker

Running Bitcoin-S

If you want to run the standalone server binary, after verifying gpg signatures, you
can unzip and then run it with ./bin/bitcoin-s-server to start the node. You will need to
configure the node properly first, you can find example
configurations here.

You can then unzip the folder and start using the bitcoin-s-cli like this:

./bin/bitcoin-s-cli --help
Usage: bitcoin-s-cli [options] [<cmd>]

  -n, --network <value>    Select the active network.
  --debug                  Print debugging information
  --rpcport <value>        The port to send our rpc request to on the server
  -h, --help               Display this help message and exit

For more information on what commands bitcoin-s-cli supports check the documentation, here is where to

Verifying signatures

This release is signed with Chris's signing key with
fingerprint 339A49229576050819083EB3F99724872F822910

To do the verification, first hash the executable using sha256sum. You should check that the result is listed in
the SHA256SUMS.asc file next to its file name. After doing that you can use gpg --verify to authenticate the


$ sha256sum
$  gpg --verify SHA256SUMS.asc
gpg: Signature made Thu 04 Feb 2021 12:49:59 PM CST
gpg:                using RSA key 339A49229576050819083EB3F99724872F822910
gpg: Good signature from "Chris Stewart <>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 339A 4922 9576 0508 1908  3EB3 F997 2487 2F82 2910

Or you can verify all binaries at once with the following commands:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
$ sha256sum -c SHA256SUMS.stripped OK OK
bitcoin-s-cli-x86_64-apple-darwin: OK
bitcoin-s-cli-x86_64-pc-linux: OK
bitcoin-s-cli-x86_64-pc-win32.exe: OK OK OK OK



Snapshot releases

New modules

We added a few new modules in the 0.6. We will provide brief descriptions for
the new modules below.

CoreJS & CryptoJS

This are scalajs compatible modules for our crypto and core projects.
This means that you can now use the crypto and core modules in both
the browser and nodejs runtimes.


We split testkit into two modules this release. Now testkitcore is scalajs
compatible, while testkit still takes in heavier weight JVM dependencies. testkitcore is
used to test the scalajs projects like cryptoJS and coreJS.

c6c4e83 Remove logging from testkit core (#2813)

1959495 Add testkit-core module (#2726)

Lnd rpc client

This is a new lnd rpc client for the bitcoin-s project. You can now interact with a lnd daemon
using bitcoin-s.

Not all lnd rpc functions are implemented as of this release.

8ec93c6 Add protoc exception for apples new chip arch. This requires protoc to be built manually as they do not natively ship m1 support yet (#3013)

b874c1c Add Lnd macaroon to GRPC client settings (#2996)

07e0b19 Add GetTransactions funciton to lnd (#2959)

be14de4 Fix lnd build warning (#2899)

5310efc Fix parsing comments in LndConfig (#2864)

825024f Add sendouputs function to lnd rpc (#2858)

4055de7 Inital LND rpc with some tests (#2836)


This is basic async functionality that is compatible with scalajs. This is used by testkitcore
to test async code.

65cb0d1 Move tests out of bitcoindRpcTest that belong in async-utils (#2796)

e06c9e4 2021 03 09 async utils tests (#2781)

7a068ac 2021 02 25 async utils (#2725)

Suredbits Oracle Explorer Client

This is an implementation of our API for the oracle server. You can now use this to
post announcements, and attestations to the oracle explorer. For more information
on the API please see the docs.

eab5e51 Fix ExplorerEnv from string (#2968)

7b600bb Add get oracle name to explorer client (#2969)

3916a0b 2021 04 07 issue 2875 (#2879)

ac49564 Add website url to ExplorerEnv (#2868)

7968b23 Rework oracle explorer client to use new api paths (#2866)

a4454e8 Add helper functions for hashing annoucements for SbExplorerClient (#2861)

49b6d39 Implement Oracle Explorer Client (#2838)


This is a new module that provides useful scripts to run with bitcoin-s. We have two as of the
time of this writing

  1. ScanBitcoind - scans against bitcoind with a height range. You need bitcoind connection configured in your bitcoin-s.conf
  2. ZipDatadir - compresses the bitcoin-s datadir into a .zip file

9ecea9f 2021 04 24 bitcoin s scripts (#2961)

136d6f5 2021 04 19 Zip Bitcoin-s datadir (#2927)

Existing modules

App server

The primary changes in appServer are api bug fixes, adding new endpoints (estimateee)
and using akka streams to improve efficiency when processing blocks from bitcoind.

84661bd Refactor BitcoinSRunner to use StartStop[Async] (#2986)

bf831ae Fix lockunspent RPC (#2984)

6fbaf9f Add estimate fee cli command (#2983)

105942e Use filters for bitcoind backend syncing if available (#2926)

0aa3291 Implement workaround for spendinginfodb by rescanning to find missing spendingTxId (#2918)

4e1ace2 2021 04 18 Use akka streams in BitcoindRpcBackendUtil.syncWalletToBitcoind (#2916)

b1be334 Fix ZMQ Config with bitcoind backend (#2897)


The primary changes in the crypto module are adding support for ecdsa adaptor signatures
which are a fundamental primitive discreet log contracts.

The other major change in the crypto module is adding support for scalajs. To implement
this we decided to use bcrypto as the javascript implementation of crypto.

To do this, we now have a CryptoRuntime trait that gives an interface to be implemented against
for generic crypto runtimes support in bitcoin-s.

7fd9aca Add Schnorr and Adaptor Secp Bindings and Update Adaptor (#2885)

c2409b4 Silence scalajs warnings for org.bitcoins.crypto package (#2822)

e6899b2 Made ECPrivateKey signing synchronous and got src compiling (#2652)

85f6ee8 Adaptor signatures for Scala.js (#2794)

911fca5 Schnorr js (#2805)

78448b2 Revert "Schnorr sigs for Scala.js (#2784)" (#2802)

8e7bde0 Schnorr sigs for Scala.js (#2784)

7e23eec SipHash for Scala.js (#2797)

5a2f95c WIP: Implement bcrypto facades (#2743)

e590574 Resturcutre cryptoTest & coreTest to work with scalajs build (#2731)

5ba7b55 2021 02 27 dersignatureutil mv (#2730)

c90f318 Refactor crypto module to be compatible with Scala.js part 1 (#2719)

b1fc575 CryptoRuntime abstraction (#2658)


This release begins incorporating discreet log contract data structures in our core module.

This module also now supports scalajs.

There are also performance improvements and bug fixes in this release for core

279b93f Rework P2SHScriptSignature.isStandardNonP2SH() (#2963)

a3954db 2021 04 17 spendinfodb invariant (#2912)

8b8d5dc Fix conversion from sats/vb to sats/kw (#2895)

85fb931 Implement BIP32Path.fromHardenedString(). (#2886)

68a82de Initial DLC Templates (#2847)

fa80f36 Get all of Core working with JS (#2826)

8cd4816 Fix potential unordered nonces in announcement (#2831)

7aa3ccd Attempt to find type name when parsing incorrect tlv type (#2820)

50d4e1f Move hard coded test vectors from resource files into scala files (#2818)

07514e2 Remove logging from core (#2810)

b0f7d6f Implement bech32m (#2572)

12bff30 Add Broadcast TxoState (#2735)

8b6c065 Completely remove range event descriptors (#2764)

f322a74 2021 02 21 cheap redeemscript check (#2707)

63e4497 2021 02 20 number byte representation (#2703)

a0476e9 Decrease false positive rate to avoid spurious CI failures (#2698)

b30fdf8 Fix normalized string comparison (#2695)

74a30fe Optimized sigPoint computation to use non-custom secp functions (#2665)

bcd2df6 Compute sigPoints eagerly but asynchronously (#2642)

e68ffb4 Use specific functions for Oracle Signing version (#2659)

d1cc5e0 Refactor HDCoinType to be ADT (#2657)

097fa24 Create ScriptFactory.isValidAsm() to standardize how check validity o… (#2629)

ea75d62 Add number cache trait, use it in all number types (u8,u32,etc) and S… (#2627)

bbd1dbc Do cheap checks in predicates first before more expensive ones (#2628)

0d38721 Added utilities to created linear approximations of Long => Long functions (#2537)


Bug fixes and usage of caching of bitcoind for chain tests.

a27d4ac Get FilterSync test working with cached bitcoind in chainTest project (#2952)

85087b0 Refactoring chain (#2662)

Db commons

Unique naming of database connection pools and reduce the amount of logging.

db45ef9 Name each database connection pool uniquely (#2973)

4f1f53e Bump hikari logging interval to 10 minutes (#2888)

Fee Provider

Small quality of live improvements.

c7b717f Allow HttpFeeRateProvider to have a specified return type (#2970)


Some refactoring and improvements to get CI passing reliability.

e3017fd Peer Message Receiver Refactor (#2938)

1653898 Fix missing super.stop() to shutdown DbAppConfig db connection pool (#2943)

7764828 Bump timeout on bind to avoid spurious ci failures hopefully (#2791)


This wallet release moves all OS resources such as threads into WalleAppConfig.
Now you need to call WalletAppConfig.stop() to free those resources.
Now you can treat the Wallet data structure as any old Scala/Java object rather
than having to worry about leaking resources.

There are also a variety of bug fixes and performance improvements in this release.

27afb66 2021 04 23 issue Move rebroadcast scheduling into WalletAppConfig (#2957)

cbfbdd1 Call .hex on all txIds and blockhashes in logs for TxProcessing (#2939)

c95c0f9 Move wallet scheduler into WalletAppConfig (#2933)

13fc3c2 2021 04 18 Reset txo state when overwriting spendingTxId (#2919)

38fdbb3 Add test for tx that doesn't originate from wallet (#2932)

238c083 2021 04 18 wallet received txo state (#2914)

d062948 Wallet Rebroadcast Transactions thread (#2711)

c3c96a6 Reduce fee rate for spending coinbase utxos (#2815)

9494eec Move blockhash to tx table from spending info table (#2744)

bf4afd6 Begin re-introducing parallelism in the wallet to make everything faster (#2705)

1a2ddf6 Reduce usage of .findAll() (doesn't scale for large dbs). Now pass in… (#2706)

b633333 Allow implicit execution context to be passed in to RescanHandling.findMatches() & RescanHandling.fetchFiltersInRange() (#2704)

a5252b2 Bump the timeout for address queue exception test to make sure we get correct exception (#2697)


libsecp256k1 natives for the new osx_arm64 used by the m1 chip.

1339abe 2021 05 02 m1 secp256k1 natives (#3014)


This release for testkit focuses on fixing resource leaks in the fixture code.
There were multiple places we were not shutting down threads and connection pools
through out the testkit project.

This project also introduces the CachedBitcoind abstraction. Previously we would
spin up a new bitcoind for EVERY test that is ran. This is obviously inefficient.

Now we cache a bitcoind and re-use it for the entire test suite.
This improves CI reliability greatly, and reduces required resources to run our test suites.

a2911f3 Fix race condition with BitcoindChainHandlerViaZmqTest (#2990)

38baea5 refactor BitcoindRpcTestUtil test methods to take ZmqConfig rather than zmqPort (#3002)

f792fb3 Fix database pool name for postgres database connection pools (#2997)

77cd94a 2021 04 27 wallet fixtures config (#2980)

85fed08 Reduce pg connections from 300 -> 50 in test cases (#2974)

73939a1 Call WalletAppConfig.stop() when destroying wallet in test fixtures (#2975)

3483a46 Don't wrap pg.close() in a Try and then do nothing with it, propogate the exception (#2972)

de5f7fc Reduce number of threads in postgres connection pool for tests (#2931)

1931949 2021 04 19 Cleanup after ourselves in postgres tests (#2921)

2287c6c Implement caching of bitcoind in the walletTest,nodeTest, and partially bitcoindRpcTest project (#2792)

392eb31 Add guard for the case when listFiles returns null (#2696)

DLC oracle

This release makes the oracle have its own directory $HOME/.bitcoin-s/oracle

We also now provide the ability to delete and oracle's signatures.
This is useful for when you accidentally submit signatures for an attestment, but don't publish it anywhere.


3dbeac2 Add ability to delete Oracle signatures (#2851)

2a6da6a Fix DLCOracle to be Network Agnostic (#2749)

a018088 Make sure DLCOracleAppConfig creates the oracle directory (#2720)

93ec7ed Change oracle db to have its own directory (#2667)

Oracle Server

The theme for the oracle server release is segregating
the oracleServer configuration from the appServer configuration.

There is also simplifications and bug fixes included in this release for the oracle server.

4bf4f0a Add signed outcome to getevent rpc, fix other small api bugs (#2757)

7aa6899 Correct log location and logs for oracle server (#2722)

d94a4ed 2021 02 15 appserver docker (#2673)

a78de18 Fix docs to use correct oracle server port (#2666)

931a528 Give oracle server its own port (#2653)

86566c5 Simplify oracle server RPC api (#2656)

Bitcoind rpc

This release includes a rpc client compatible with the 0.21.1 release of bitcoin core
that includes taproot activation logic.

There are also various bug fixes included in this release.

52f609e Use bitcoind v0.21.1 (#3006)

e064cd7 Fix missing teardown code for MultiWalletRpcTest (#2946)

d726c49 Have BitcoindV21RpcClientTest wait for indexes to sync (#2855)

bfe7b3f Create NativeProcessFactory, extend it in both Client.scala & EclairRpcClient.scala (#2800)

5b4aac5 Refactor starting second bitcoind in MempoolRpcTest, remove Thread.sleep (#2776)

355fc6e Wrap entire Client.getPayload() into try catch to avoid exceptions leaking (#2767)

be18b1b Cache httpClient in bitcoind, rename Test.akkaHttp -> Test.akkaHttpTestkit (#2702)

Documentation / Website

ff39945 More release notes updates, mostly add boiler plate (#3018)

2e8790f Add descriptions for new projects (#3016)

7dc6acd Add missing list resevedutxos docs (#3015)

d6f275b Redo release notes draft as we rewrote the git history (#3011)

93822c7 Make sure call ci matrixs run on java11 (#2985)

acac751 Updated links in adaptor signature doc (#2950)

b80b039 Lnd rpc docs (#2896)

5abf399 Use markdowns detail tags to collapse optional sections, remove the secp256k1 section on (#2890)

bb379ec Add docs for using CachedBitcoind (#2880)

17e088d 2021 04 07 first 0.6 release notes (#2872)

89c2e6c Add (#2881)

c3e952a Add docs for getblockheader (#2811)

9b954c9 Make website publish work with teh latest stable version (#2766)

d03bb2d Make it clear on the page that this is only for development, you can find binaries in (#2759)

e61e0cd Update docs to use the latest docker image names (#2758)

b7030bb 2021 02 19 dockerhub docs (#2693)

f4d0f36 2021 02 10 Website fixes (#2643)

f8694eb Fix/typos (#2633)

593b1e2 Update README to have correct latest version (#2631)


991ce38 Use release flag rather than target flag as that is what is intended (#2976)

4c859f1 Add timeouts to our CI workflows (#2908)

c738f23 Fix build warnings that came with sbt 1.5.0 (#2857)

eb9b2de Enable scalajsbundler plugin on coreJS (#2853)

2554665 Enable publishing of scalajs artifacts (#2849)

60c1ad1 Rework the website scaladoc aggregation and website (#2846)

a275668 Update gitignore file with recommendations from unidoc (#2845)

00df875 update Base docker image to a ubuntu buster (#2799)

49544fc Turn off parallelExecution and remove extra AsyncUtil test class (#2790)

7245eb0 Update all deps that failed because of bad build (#2774)

aed21f0 Add fetch depth zero to everything to fix bug introduced in #2766 (#2773)

8a4739d 2021 03 04 fix publish pt2 (#2763)

6b48128 Add new JS projects to list in build.sbt (#2761)

99c5d6e Enable 'dockerUpdateLatest' option to give us the latest tag on publishing artifacts (#2752)

63e1320 Fix unidoc issue with scala-js modules, this now ignores them from un… (#2742)

2d25fe4 Skip publishing of js projects (#2734)

94934e1 Rework docker configuration to pass in a custom configuration file (#2718)

203b45c Workaround for issue 2708 (#2709)

477597e Set fetch-depth to 100 so we don't take forever to clone repo on ci (#2694)

56a1432 Get basic docker image working with oracle server (#2668)

2f85b67 Add github workflow steps to publish to dockerhub (#2684)

d27f24e Make sure dynver versions use '-' instead of '+' (#2681)

89745c2 Add --depth 100 restriction when cloning bitcoin-s repo to speed up clone time (#2674)


e7d34a9 Update metrics-core to 4.1.21 (#3003)

56d177b Update javafx-base, javafx-controls, ... to 17-ea+8 (#2978)

0f8903e Upgrade to scalac 2.12.13 (#2509)

e6d78c7 Update sbt-scoverage to 1.7.0 (#2982)

0bf6df7 Update scalatest + scodec deps (#2937)

7a73dc5 Update sourcecode to 0.2.6 (#2928)

0cad0ed Update metrics-core to 4.1.20 (#2958)

23d77b2 Update sbt to 1.5.1 (#2971)

a194adb Update scalafx to 16.0.0-R22 (#2942)

00efd8b Update scala-java-time to 2.2.2 (#2941)

2775206 Update postgresql to 42.2.20 (#2945)

27992ed Update sbt-mdoc to 2.2.20 (#2930)

0d546f3 Update javafx-base, javafx-controls, ... to 17-ea+7 (#2911)

b5b9849 Update breeze-viz to 1.2 (#2907)

b6337b8 Bump website dependencies by running yarn update (#2884)

ce36112 Update akka-actor, akka-discovery, ... to 2.6.14 (#2878)

112067c Update metrics-core to 4.1.19 (#2877)

969dee7 Update javafx-base, javafx-controls, ... to 17-ea+6 (#2852)

a2628ca Update scala-java-time to 2.2.1 (#2862)

89e84ff Update sbt to 1.5.0 (#2854)

4d25325 Update sourcecode to 0.2.5 (#2848)

832d930 Update scalatest to 3.2.7 (#2843)

6e57493 Update sbt-scalajs, scalajs-compiler, ... to 1.5.1 (#2837)

703f958 Update scala-collection-compat to 2.4.3 (#2834)

a9ccf23 Update sbt-mdoc to 2.2.19 (#2833)

c2e054d Update scodec-bits to 1.1.25 (#2835)

85ff255 Update akka to v10.2.4 (#2832)

2cc2da9 Update javafx-base, javafx-controls, ... to 17-ea+5 (#2829)

c5a3b5a Update sbt-ci-release to 1.5.7 (#2819)

1daba85 Update javafx-base, javafx-controls, ... to 17-ea+3 (#2804)

fba880e Update sbt-native-packager to 1.8.1 (#2798)

77ee3f7 Update sbt-ci-release to 1.5.6 (#2789)

ecae07c Update javafx-base, javafx-controls, ... to 17-ea+2 (#2728)

06654f4 Update akka-http, akka-http-testkit to 10.1.14 (#2723)

54dc824 Update metrics-core to 4.1.18 (#2716)

eb24b18 Upgrade scalac to 2.13.5 (#2713)

07488dd Update akka-actor, akka-slf4j, akka-stream, ... to 2.6.13 (#2714)

fca9e4b Update scalatest to 3.2.5 (#2687)

fe70391 Update sbt-bloop to 1.4.8 (#2683)

fb2e5d5 Update postgresql to 42.2.19 (#2686)

a19f35e Update scalatest to 3.2.4 (#2677)

42f3523 Update sbt-mdoc to 2.2.18 (#2676)

e4b0f1f Update scala-collection-compat to 2.4.2 (#2670)

775aa67 Update scodec-bits to 1.1.24 (#2671)

d929af4 Update scalacheck to 1.15.3 (#2669)

0d5863b Update sbt-bloop to 1.4.7 (#2661)

a5d592a Update javafx-base, javafx-controls, ... to 16-ea+7 (#2654)

19b47b8 Update janino to 3.1.3 (#2559)

0c9bba8 Update sbt-mdoc to 2.2.17 (#2632)