bitcoin-s/release-notes/release-notes-1.9.10.md
Chris Stewart c30856fe33
2025 01 09 release notes 1.9.10 (#5889)
* Begin 1.9.10 release notes

* Sort deps

* Sort commits upto 6af79f9ed5

* Sort commits upto  ce868801ce

* Add release notes section blurbs

* add section about RPC rename from listreservedutxos -> getreservedutxos
2025-01-25 09:40:28 -06:00

19 KiB

1.9.10

This release is backwards compatible with the 1.9.x series of bitcoin-s

See the individual module sections for more information on lower level updates to the codebase.

Want to get started quickly? See our docker-compose.yml file. See instructions here

If you are a typescript developer, you can access the backend via our typescript library

Executive Summary

This release adds taproot keypath signing support. You can enable this with bitcoin-s.wallet.purpose=taproot in your bitcoin-s.conf. This release improves wallet performance and reliability and fixes various deadlocking issuese in the node/ module.

Running bitcoin-s

If you want to run the standalone server binary, after verifying gpg signatures, you can unzip bitcoin-s-server-1.9.10.zip and then run it with chmod +x ./bin/bitcoin-s-server && ./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 bitcoin-s-cli-1.9.10.zip 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 start: https://bitcoin-s.org/docs/next/applications/server#server-endpoints

Verifying signatures

This release is signed with Chris's signing key with fingerprint 9234F4D6AF47C71B741A390F8976CA0AF71A7A2A

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 signature.

Example:

$ gpg -d SHA256SUMS.asc > SHA256SUMS.stripped
gpg: Signature made Mon 18 Apr 2022 02:19:54 PM CDT
gpg:                using RSA key 9234F4D6AF47C71B741A390F8976CA0AF71A7A2A
gpg: Good signature from "Chris Stewart <stewart.chris1234@gmail.com>" [ultimate]

$ sha256sum -c SHA256SUMS.stripped

Website

https://bitcoin-s.org/

Releases

https://repo1.maven.org/maven2/org/bitcoin-s/

Snapshot releases

https://oss.sonatype.org/content/repositories/snapshots/org/bitcoin-s/

Modules

app commons

90203b295b Use default play-json json serialization macros for bitcoind json classes that cause issues with scala3 (#5718) 4471f74ccf Add error field toImportDescriptorResult, move BitcoindException to app-commons (#5705) 6b12bb515d Rework NativeProcessFactory.cmd to be Vector[String] (#5623)

App server

Also renames listreservedutxos RPC endpoint to getreservedutxos (43b75ccfd8) The app server no longer runs on tor by default.

2315f50075 appServer: Disable tor by default (#5876) 6ef926b481 appServer: Revert logback.xml (#5857) 788b99c184 refactor: Improve bitcoind wallet polling logic (#5834) 1423f2c91e appServer: Add missing server.stop() in BitcoinSServerMainBitcoindTest (#5831) f280f35431 Replace Future[Wallet] -> Wallet parameter in {BitcoinSWalletTest, BitcoindRpcBackendUtil} (#5796) ba8dd75312 refactor: DRY for DLCWalletLoaderApi.loadWallet() (#5787) 835c98e5b9 Fix race condition in WebsocketTests (#5748) 9feabc1c2b Make WebsocketTests rescan test more robust (#5661) 35003ca970 refactor: Change interval param of BitcoindRpcBackendUtil.startBitcoindBlockPolling (#5640) 2021f1f111 2024 08 13 walletholder appserver refactor (#5639) 41fab3dfd2 2024 08 07 createnewaccount rpc (#5638) 458f3cb7d3 2024 07 29 rm tx bitcoind callbacks (#5632) bc09757f8c Remove WalletHolder parameter from DLCWalletLoaderApi.loadWallet() (#5628)

bitcoind rpc

Add support for v28 of bitcoind.

f85953e527 2024 10 13 rm bitcoind v25 support (#5707) 38f0f4d692 2024 10 07 v28 bitcoind (#5696) 38850d22e3 2024 07 31 bitcoind callbacks (#5631) dad7e1cef6 Add support for bitcoind 27.1 (#5609)

Build

We are now source compatible with scala3.

e55e832932 2025 01 16 Upgrade download/upload artifact to v4 (#5864) ba4d21c495 Try pinning CI image to ubuntu 22.04 for now as a workaround until setup-java supports sbt installation (#5843) 30663fe622 Remove scala version speicfic build code (#5737) 29f10d046c Turn on -Xlint (#5728) 88125a3575 Remove .jvmopts file comments, they do not work on ubuntu (#5730) 28001af35e Add .jvmopts, conslidate JVM options there (#5729) 7c07aa0355 Pull over simple syntax changes for {cli,oracleServer,bench,dlcNode,dlcOracle,dlcOracleTest,eclairRpc,lndRpc,lndRpcTest} from #5713 (#5721) 602725174f Pull over simple syntax changes for scala3 pt2 (#5720) ab6d3f5cb7 Pull over simple syntax changes for scala3 libraries (#5719) 46d6256e39 Switch distrubution to temurin, use full semver (21.0.4) (#5704) 48462d4ac9 add checkout action to electron build (#5604) 1b109e7b36 Add previous tag to electron build steps (#5599) 4885bdb07d Add -Xsource:3 to lnd-rpc (#5595)

chain

84aba7e349 Remove test case specific fixture setup in chainTest, revert to just using test suite specific fixtures (#5712)

cli

841762b841 cli: Fix log output for bitcoin-s-cli (#5664)

clightning rpc

Core

Add support for taproot keypath signing. Add the ability to generate digital signatures with a specific hash type. Modify collection types used in core from Seq -> Vector.

07270ba8ca core: Rework NetworkPayload traits to use Vector instead of Seq for methods (#5845) d1618a2277 Add unit test for RescanState to test recursive rescans correctly (#5786) fb318efe5e core: Fix bug where we weren't checking for valid hash types in TaprootKeyPath.isValid() (#5780) b6cc97a663 2024 11 20 prevoutmap ordering (#5776) 67bb3ceabd 2024 10 31 taproot signing (#5767) 80be2f5989 2024 11 15 partialsig typeparam (#5770) bb0e40f05b 2024 11 16 rm isdummysig (#5771) fc4802d4b0 core: Implement BIP86 (#5768) c5d57de618 core: Fix divergence in behavior between TransactionSignatureSerializer.hashForSignature() methods (#5765) 4e8d5ecc7f Add Sign.{signWithHashType(),signLowRWithHashType} (#5757) 5187eee42a core: Terminate rescan early when RescanStarted.stop() is called rather than wait for the rescan to complete (#5749) e419b18d9c 2024 10 23 merkle vector (#5734) 07f17cfedf Rework Block and Transaction data structures to use Vector rather than Seq (#5733) dca2146647 2024 10 19 rm generic btree (#5725) 5f47fbe9ac Use BinaryTreeDoubleSha256Digest inside of Merkle.scala rather than BinaryTree[DoubleSha256Digest] (#5724) 1939e9fd2e core: Fix bug in RescanStarted.entireRescanDoneF (#5654)

Crypto

cccaa582bd Add Sign.{schnorrSign(),schnorrSignWithNonce()} to Sign interface (#5754) 17f965fd45 2024 11 09 schnorrsig hashtype (#5764) e69e1e5ad1 2024 10 31 digitalsignature (#5752)

db commons

00b1c85e65 Remove TableAutoInc[T] type parameter, its unnecessary and causes issues (#5711)

DLC node

DLC Oracle

DLC Server

DLC wallet

52c0625ba9 2024 09 30 dlcwallet has a wallet (#5692) 7d8dd2bc0a refactor: Provide DLCWalletUtil.verifyProperlySetTxIds() with the contractId (#5657) feeb2618d6 Move DLCDAOs to src (#5652)

Eclair rpc

gui

fee rate

3925098872 feeProvider: Ignore bitcoiner.live as site seems to be down (#5854)

keymanager

Lnd rpc

bbac2590ff Bump to lnd 18.x (#5695)

Lnurl

node

Fix various deadlock scenarios in node. This release also significantly improves startup performance of the node.

52040da386 node: Fix bug where we we could have more connections than allowed by bitcoin-s.node.maxConnectedPeers (#5885) 6a51b7c103 node: Limit initial stack push in PeerFinder.start() to maxSearchCount^2 (#5882) baa4ddf166 2025 01 23 issue 5878 (#5883) 40fef6e508 node: Add invariant we have peerServices when we cann PeerManager.handleConnect() (#5880) fa4c2868ee node: Update hardcoded-peers.txt with whats in bitcoin/contrib/seeds/nodes_main.txt (#5877) 9adbd88f69 node: Only query p2p seeds if we have no peers in our database (#5875) 3bf7e6a39e node: Use approprate ServiceIdentifer throughout node/ module (#5874) 85cc536cd5 node: Rename PeerData.stop() -> PeerData.disconnect() (#5867) 4f0c3da303 node: Fix bug where we were dropping cached outbound messages on the floor (#5853) a94fc3a92d node: Add PeerStackTest, fix bug where we could have the same ip address multiple times in PeerStack (#5848) 4d9c52c75c node: Move killswitch downstream to avoid queue deadlocks (#5819) 812f735110 node: Update DNS seeds, optimize PeerFinder.start() to start querying… (#5807) eb6edab240 Add NodeState.NoPeers, cache network messages (#5800) dbe1e7b686 tests: Make NeutrinoNodeWalletTest more robust against spurious failures (#5784) 4befe4e70a Fix potential deadlock when offering to queue in managePeerAfterInitialization() (#5667) cbccecf95d Add caveat for ConnectPeer logic to only attempt to sync from a peer when a query is timed out (#5666) 490e0217f1 Add payload to query timeout log (#5660)

wallet

Add taproot keypath utxo handling to wallet. This can enabled with bitcoin-s.wallet.purpose=taproot. This release renames the configuration option bitcoin-s.wallet.defaultAccountType -> bitcoin-s.wallet.purpose. This release improves performance of the wallet by making processing of blocks and transactions transctional at the database level. This release makes the wallet have a collection of has-a relationships rather than is-a relationships making the wallet much more modular.

57860d74d0 wallet: Batch requests for blocks during rescan (#5866) 425fb234e2 wallet: Try to avoid spurious failures on WalletSendingTest double spending test (#5846) 43efce500d tests: Cleanup BitcoindBlockPollingTest producing ERROR logs during test fixture destruction (#5829) b9616066f2 wallet: Refactor {UTXOHandlingApi,AccountHandlingApi,AddressHandlingApi} to use 'get' prefix rather than 'list' prefix for method names (#5828) 25517265fe wallet: Reduce noisy DEBUG log (#5820) b1403155fc wallet: Refactor AddressHandling to be account specific (#5825) d29dad4472 2024 12 11 issue 5625 (#5803) e2a0617d67 wallet: Don't cache TransactionProcessing now that it doesn't have internal state (#5797) 04757f9039 wallet: Remove TransactionProcessing.blockProcessingSignals (#5795) e5ff1a5018 wallet: Fix noisy log, only log when we have an output to search for (#5794) 98e89a6e93 2024 11 27 processtransaction flaky test (#5793) 6f13f263ee wallet: Remove duplicate implementations of SendFundsHandlingHandling.sendFromOutpoints() (#5792) dbdad48413 wallet: Remove unused wallet configurations (#5789) d5a77a2297 wallet: Batch database actions in processBlockCachedUtxos() (#5788) f6f01f333a wallet: Cleanup RescanHandlingTest (#5781) d8ad023254 wallet: Implement taproot keypath handling in the wallet (#5772) c6917b296b config: Rename config option bitcoin-s.wallet.defaultAccountType -> bitcoin-s.wallet.purpose (#5783) 471c063532 Remove rescan specific threadpool (#5746) 3ae69b6ab5 wallet: Get processBlockCachedUtxos() using DBIOAction (#5740) f75a52b521 Refactor TransactionProcessing.processTransaction() to use BlockHashWithConfs (#5744) 2521c5da0e Fix noisy log in TransactionProcessing (#5742) fe8acbb42f 2024 10 25 Get TransactionProcessing.processTransactionImpl() using a single database transaction (#5739) 8917188220 wallet: Rework where we fetch the number of block confirmations for a tx in the wallet (#5738) 13a895efe9 2024 09 24 simplify wallet (#5685) 7caea21b6a refactor: Move more methods out of WalletApi (#5681) e087b174c5 Move RandomFeeProvider to src (#5684) d17934f17f Add SendFundsHandlingApi, remove HDWalletApi (#5680) 8cfd5e8d6b 2024 09 19 address handling refactor (#5679) 8c5d685953 Refactor codebase to have has-a relationship with RescanHandling rather than is-a (#5675) 2d4a0adda4 Add FundTransactionHandlingApi, make FundTransactionHandling a case class (#5651) 42b13a6a62 wallet: Remove unecessary type parameter to TxCRUDComponent#TxTable (#5650) 4212d6d616 Create AccountHandlingApi, move inheritance from Wallet into HDWalletApi (#5627) 0eb1788226 Refactor WalletApi.createNewAccount to not use KeyManagerParams (#5635) f5adc331f1 Move WalletDAOs to src (#5626) e68ebeadbc refactor: Create UtxoHandlingApi, move to has-a relationship within Wallet (#5624)

testkit-core

testkit

7ee8895853 testkit: Make sure channel is in NORMAL state for both peers in openAndConfirmChannel() (#5868) 345ab017e5 testkit: Randomize defaultAccountType (purpose) in tests (#5775) 65e67287f8 2024 10 21 Replace Future.sequence() usage with Future.traverse() (#5732) 2d87129978 Reduce BitcoindRpcTestUtil.awaitConnection() interval from 10.second -> 1.second (#5703) 0843d7ecb5 Remove -port and -rpcport settings for bitcoind on startup for tests (#5702)

tor

Website

479aee3dc6 docs: Run 'yarn upgrade' (#5830) 7c3dbf96ca chore: remove redundant words in comment (#5826) e45860af90 Docs: README (#5751) 04b9e6e75f Docs fix spelling issues (#5723) 613e19c281 Pull over docs/ from #5713 (#5722) 982090ed21 Fix typos (#5714)

ZMQ

Dependencies

ce868801ce Update sbt-scalajs, scalajs-compiler, ... to 1.18.2 (#5886) 84dcc8f916 Update sbt-bloop to 2.0.8 (#5881) 4b01abe064 Update flyway-core, ... to 11.2.0 (#5870) 093598ab7f Update sbt-assembly to 2.3.1 (#5873) a911d53eae Update sbt-mdoc to 2.6.2 (#5809) 9aca249eb6 Update pekko-grpc-runtime, ... to 1.1.1 (#5766) 09d7f7a7aa Update scala-library to 2.13.16 (#5862) 2ef1eec88b Update sqlite-jdbc to 3.48.0.0 (#5863) 0a376afc99 Update bcprov-jdk18on to 1.80 (#5860) b9510776bc Update postgresql to 42.7.5 (#5861) d5083feda6 Update metrics-core, metrics-healthchecks, ... to 4.2.30 (#5859) 326c851dec Update sbt-bloop to 2.0.7 (#5858) b2addd539c Update sbt-scalajs, scalajs-compiler, ... to 1.18.1 (#5841) 1c96d89d42 Update logback-classic to 1.5.16 (#5837) 4a8e48da37 Update flyway-core, ... to 11.1.1 (#5839) 2110132d7b Update sbt-native-packager to 1.11.0 (#5838) 6af79f9ed5 Update sqlite-jdbc to 3.47.2.0 (#5836) dee3a1cdee Update waffle-jna to 3.5.1 (#5832) bab9fe0b2e Update scalamock to 6.1.1 (#5833) 6b81211e37 Update client3:core, ... to 3.10.2 (#5827) 051f6ed5cb Update jna to 5.16.0 (#5822) 1f4ba9c612 Update logback-classic to 1.5.15 (#5821) ce18753462 Update sbt, scripted-plugin to 1.10.7 (#5823) 86a3b2f88c Update logback-classic to 1.5.14 (#5818) 916507ad00 Update sbt-ci-release to 1.9.2 (#5817) 97f807444a server: Deduplicate wrapping callbacks in steams (#5815) 3d16dfbc97 Update guava to 33.4.0-jre (#5814) 881a15f518 Update sbt-bloop to 2.0.6 (#5813) 54ef1bd0a5 chain: Add invariant that we have at least 1 header in Blockchain (#5810) b709a58715 Update flyway-core, ... to 11.1.0 (#5808) 4df0a7bc4e Update flyway-core, ... to 11.0.1 (#5799) 06db0aa4b2 Update sbt, scripted-plugin to 1.10.6 (#5798) 960b172d26 Update metrics-core, metrics-healthchecks, ... to 4.2.29 (#5790) 7867d258e6 Update sqlite-jdbc to 3.47.1.0 (#5791) e852b11dbc Update flyway-core, ... to 11.0.0 (#5782) 795def555c Update flyway-core, ... to 10.22.0 (#5779) e680c9d643 Update pekko-http, pekko-http-testkit to 1.1.0 (#5778) 35fdb07e2d Update sbt-buildinfo to 0.13.1 (#5763) 340edc85b0 Update sbt-bloop to 2.0.5 (#5762) d255914765 refactor: Use ECDigitalSignature.appendHashType() throughout codebase (#5761) 39e23c2a09 Update flyway-core, ... to 10.21.0 (#5759) 21dd6fee80 Update sbt-bloop to 2.0.4 (#5758) 3569f51870 Update sbt, scripted-plugin to 1.10.5 (#5756) aafac07491 Update sbt-buildinfo to 0.13.0 (#5755) 18c74c1351 Update bcprov-jdk18on to 1.79 (#5750) 2366b80c70 Update sbt, scripted-plugin to 1.10.4 (#5743) 91b3fc1e45 Update logback-classic to 1.5.12 (#5741) 387bcfdeb8 Update flyway-core, ... to 10.20.1 (#5735) ff459b674c Update sqlite-jdbc to 3.47.0.0 (#5736) 528ceae9d4 Update sbt-ci-release to 1.9.0 (#5731) ed7a152a51 Update sbt, scripted-plugin to 1.10.3 (#5726) 9e61e9bab7 Update flyway-core, ... to 10.20.0 (#5717) b22e3d4aee Update client3:core, ... to 3.10.1 (#5716) a0d6ecf50d Update logback-classic to 1.5.11 (#5715) 271da3ccea Upgrade upickle to 4.0.2 (#5710) 3ef88ecdc2 Update sbt-ci-release to 1.8.0 (#5709) 1e7e48d546 update flyway dependency to 10.19.0 (#5708) 7dc58666b9 Update logback-classic to 1.5.10 (#5706) 919789add2 Update sbt-assembly to 2.3.0 (#5697) c7dce64718 Update sbt-ci-release to 1.7.0 (#5698) 5c73183046 Update logback-classic to 1.5.9 (#5700) 54646d4516 Update sbt-bloop to 2.0.3 (#5699) 7d601c45c8 Update metrics-core, metrics-healthchecks, ... to 4.2.28 (#5694) e695474c61 Update client3:core, ... to 3.10.0 (#5693) 5afa058892 Update sbt-coveralls to 1.3.14 (#5691) dd5a1af828 Update slick, slick-hikaricp to 3.5.2 (#5690) e76768334d Update sbt-scalajs, scalajs-compiler, ... to 1.17.0 (#5689) 58e2dc2b5a Update sqlite-jdbc to 3.46.1.3 (#5688) 67666b7579 Update waffle-jna to 3.5.0 (#5682) c4b219d93a Update junixsocket-core to 2.10.1 (#5683) 287bf984a0 Update sbt-bloop to 2.0.2 (#5677) a8e9dcd443 Update sbt-mdoc to 2.6.1 (#5674) 628c3f9bef Update sbt-bloop to 2.0.1 (#5673) 625e790477 Rework TransactionProcessing to be a has-a relationship rather than is-a relationship in the codebase (#5659) 6bf69de119 Update jna to 5.15.0 (#5668) 3525603f9e Update sbt-mdoc to 2.6.0 (#5671) e2e604e8a0 Update scalacheck to 1.18.1 (#5670) d6669aa061 Update sbt to 1.10.2 (#5669) 7a8c6b8298 Update logback-classic to 1.5.8 (#5658) d723610054 Update sbt-scoverage to 2.2.0 (#5656) c3288a7224 Update ant to 1.10.15 (#5653) b98087a5ee Update postgresql to 42.7.4 (#5648) 24e22a48e7 Update sbt-scoverage to 2.1.1 (#5649) 14f456dec3 Update metrics-core, metrics-healthchecks, ... to 4.2.27 (#5644) 19571dd737 Update sbt-ci-release to 1.6.1 (#5647) 364df59ea2 Update logback-classic to 1.5.7 (#5643) 21180213c6 Update sqlite-jdbc to 3.46.1.0 (#5646) 231397c409 Update scodec-bits to 1.2.1 (#5645) f2726ec900 Update sbt-bloop to 2.0.0 (#5642) a2855766c2 Update slf4j-api to 2.0.16 (#5637) 3d900f9b26 Update sbt-ci-release to 1.6.0 (#5641) 9c25209198 Update client3:core, ... to 3.9.8 (#5636) f0bb99d9ef Update sbt-native-packager to 1.10.4 (#5633) d1bff0eea2 Update sqlite-jdbc to 3.46.0.1 (#5634) 88b1dfd4c5 Update sbt-coveralls to 1.3.13 (#5630) 559157e0c7 Update sbt-coveralls to 1.3.12 (#5620) dcaebefe29 Update junixsocket-core to 2.10.0 (#5617) 7690fbe2a7 Update sbt-bloop to 1.6.0 (#5616) 27025e5dda Update sbt to 1.10.1 (#5618) dc9e5ff1b9 Update sbt-mdoc to 2.5.4 (#5619) a81119eb49 Update sbt-scoverage to 2.1.0 (#5614) 97a5758dfe Update sbt-mdoc to 2.5.3 (#5612) f1e2238cfc Update play-json to 3.0.4 (#5611) 267f70860c Update otj-pg-embedded to 1.1.0 (#5610) ca9bfa03e0 Update scalatest to 3.2.19 (#5613) 29c38aa525 Update scala-java-time to 2.6.0 (#5606) c559eca5f7 Update metrics-core, metrics-healthchecks, ... to 4.2.26 (#5607) 06295bb941 Update scalapb-runtime to 0.11.17 (#5605) 9a002730f2 Update sqlite-jdbc to 3.46.0.0 (#5603) 677109c4ea Update sbt-bloop to 1.5.18 (#5602) d13abaa8ea Update gson to 2.11.0 (#5600) 5833f5894d Update client3:core, ... to 3.9.7 (#5601)