Bitcoin-S-Core v0.4.0 Release Notes

Release Date: 2020-09-24 // about 1 year ago
  • v0.4.0 - Wallet Extravaganza

    βš™ Running Bitcoin-S

    πŸ”§ If you want to run the standalone server binary, after verifying gpg signatures, you can unzip bitcoin-s-server-0.4.0.zip 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 also unzip the bitcoin-s-cli-0.4.0.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 comands 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 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 it's file name.
    After doing that you can use gpg --verify to authenticate the signature.

    Example:

    $ sha256sum bitcoin-s-server-0.4.0.tgz
    aa1084edb5fcd3d1dbcafe0d0fba787abf4cd455bbe38809bd9a65a49c0cd0eb bitcoin-s-server-0.4.0.tgz
    $ gpg --verify SHA256SUMS.asc 
    gpg: Signature made Thu 24 Sep 2020 12:49:39 PM CDT
    gpg: using RSA key 339A49229576050819083EB3F99724872F822910
    gpg: issuer "[email protected]"
    gpg: Good signature from "Chris Stewart <[email protected]>"
    

    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/

    πŸ‘ PostgreSQL Support

    πŸ”§ Bitcoin-S now supports PostgreSQL as a database backend! By default Bitcoin-S still uses SQLite, but you can follow the instructions here to use PostgreSQL instead. This can be used for every database's backend: Node, Chain, Wallet.

    πŸ‘ BIP 340 Schnorr Support

    πŸŽ‰ Initial support for BIP 340 style Schnorr signatures has been added.
    πŸ‘ This support gives new data types as well as the ability to create and verify Schnorr Signatures.
    The signing and verification is done in Java, it is planned to give the option to use bindings to secp256k1 in the future.

    ⬇️ Dropped Support for scala 2.11

    πŸ‘ Bitcoin-S no longer supports scala 2.11 due to akka no longer supporting scala 2.11

    Module level changes

    Bitcoind RPC client

    βœ… A BitcoindRpcClient can now be used as a NodeApi and a ChainQueryApi, this allows test cases to be simpler as well as allows a wallet to be paired to a bitcoind. Other minor bug fixes and test optimizations are included as well.

    Commits

    πŸ›  dccc2b4 Fixed getblockchaininfo for v19 (#1711)
    πŸ›  54c02e5 Fixed getAddressInfo for versions 18 and 19 (#1679)
    088d9cb Add signrawtxwithwallet bitcoind function (#1665)
    βœ… 6556c53 BitcoindV17RpcClientTest get system time closer to getNewAddress call (#1612)
    βœ… fac75a8 Bump spread for address info tests in BitcoindV17RpcClientTest (#1591)
    βœ… 003bda2 Attempt to fix BitcoindV19RpcClientTest from losing connection (#1515)
    ⚑️ b621412 Optimize and Clean up WalletRpcTest (#1511)
    3514101 Implement Bitcoind as ChainQueryApi & NodeApi (#1481)
    af02cb7 Implement BitcoindRpcClient as a FeeProvider (#1486)
    87af379 Attempt to add a bit of delay on expecting rescan to fail so we dont' have as much of a async issue (#1381)
    πŸ‘€ 5dddd82 Add JsonParseException catch clause in the isStartedF method (#1334)

    Commons

    This is a new project that holds common items used throughout Bitcoin-S. Currently, it primarily contains JSON models and serializers.

    Commits

    e504d8d Added DLC json data structures (#1575)
    06db27a Added appCommons to project aggregate so that it can get published (#1347)
    🚚 e5ef17f Move Json Reader, Writers, and Serializers to App Commons (#1328)

    Core

    πŸ‘ UTXOSpendingInfo has been replaced by InputInfo and InputSigningInfo, this is allows for better distinction between inputs with the ability to sign.

    ♻️ TxBuilder has been completely refactored to be more modular and interactive, checkout the new docs for more information.

    ⚑️ Signing now requires having the full funding transaction for due to the BIP 143 vulnerability.

    πŸ›  Various bug fixes, optimizations, and improvements.

    Commits

    7c4822f Have RawTxSigner use low R signing (#1722)
    98cb6f7 2020 09 18 btchrp stringfactory (#2031)
    ⚑️ d798353 Updated Bouncy Castle Schnorr implementation to most recent BIP 340 (#2025)
    24dfa72 Create FeeUnitFactory and functions to calculate tx fee rates (#1990)
    739288f Cache DoubleSha256Digest.hex (#1932)
    a9ad927 Apply string factory to a bunch of easy things (#1891)
    ef9bd41 Add new hash preimage PSBTInput types (#1893)
    2a1c399 Implement basic TLV functionality (#1847)
    d65f68e 2020 08 14 issue 1829 (#1833)
    🚚 fa388c7 Create more of a project structure in org.bitcoins.core.api, move DbR… (#1799)
    πŸ”€ d31806f Add synchronous version of StartStop (#1771)
    e4e81d8 Allow NonWitness and Witness UTXOs in same InputPSBTMap (#1761)
    82ab96c Make ECDigitalSignature extend NetworkElement (#1750)
    πŸ“œ 8f86c18 Improved block parsing time by approx. 33% (#1728)
    5b2ad82 Add low R signing (#1342)
    βœ… 5a75b32 Shuffle Finalizer Tests + bug fix (#1680)
    7abca65 Create ShuffleFinalizer (#1660)
    18c931e Create BIP 69 finalizer (#1661)
    8830edd Segwit Signing Bug Fix (#1670)
    🚚 a7c51e7 Move BIP 143 invariant for PSBTs to allow signed transactions (#1631)
    7f4a984 Override correct equals functions (#1621)
    βœ… a309694 Only fail CallbackTest if promise is not completed (#1607)
    a2ce5e5 Rework signing logic to take full funding transaction (#1560)
    24f60c0 ScriptSignature from P2WSH Witness (#1605)
    1eadf09 Made P2SHScriptSignature.isP2SHScriptSig less forgiving (#1594)
    ♻️ de048e4 Refactored to allow support and disabling of RBF (#1588)
    38a73de Lots of misc. improvements from dlc branch (#1583)
    fb99307 Added BlockTimeStamp abstraction for BlockStamps that aren't hashes (#1573)
    041f805 Callback rework (#1542)
    9dea425 2020 06 09 addr invoice string factory (#1538)
    ad6d4a3 Add StringFactory trait (#1537)
    βœ… 54c8a3f Make Golomb Filter Test run in parallel (#1512)
    πŸ‘· 7fd36e9 Reduce number of hashes used in GolombFilterTest to keep CI from timing out (#1494)
    afbce5b Cache numbers between 0 and 256 to make serialization/deserialization faster (#1482)
    13884f5 Rework Standard Finalizer (into pieces) (#1473)
    1f4227c Add more optimizations, MultSignatureScriptPubKey.isMultiSignatureScr… (#1475)
    πŸ›  8b62272 Fixed sequence computation for P2PKWithTimeout and RawTxFinalizer composition discovered during DLC rebase (#1461)
    aa88568 Implement FeeUnit SatoshisPerKW (#1455)
    βœ… 7df8451 Fix fee rate calculation bugs, add tests (#1454)
    ⚑️ 01c2759 Attempt to optimize block tests more to avoid timeouts (#1459)
    ♻️ fec601c TxBuilder Refactor (#1426)
    7dd1084 Small optimization for ScriptOperationFactory.operations (#1450)
    βœ… 5c7585c Fix allowing BytesToPushOntoStack(0) (#1448)
    πŸ‘· 29579b5 Reduce number of property based tests from 200 -> 100 so we don't time out on CI (#1447)
    5ff7118 2020 05 17 optimizations (#1435)
    🚚 f3469f8 Remove the clause in Transction.fromHex() where we throw in the case … (#1431)
    ♻️ aee8868 InputInfo Refactor (#1400)
    1cf7e21 2020 05 11 bech32 addr tostring (#1413)
    8514d36 Fix isMinimalPush to not look for OP_1Negate when pushing 0x4f(79) (#1367)
    βœ… f6c799c TransactionSignatureChecker bug fix and tests (#1341)
    🚚 19afc6b Removed SingleSigner abstraction and replaced with a simple signSingle method in SignerUtils (#1308)
    🚚 4827d2d Remove flaky gcs test that times out (#1301)
    βœ… 14535fc P2WSH Signer fix + tests (#1300)
    8c953c3 2020 03 28 uint32 cache (#1279)
    πŸ“œ 752685f Replace all usages of List inside of ScriptParser with Vector (#1280)
    8ec143d Give ScriptInterpreter functions to verify a transaction or single input (#1223)

    Chain

    The ChainHandler now picks the best chain based off of the one with the most work, instead of the longest.

    πŸ”€ The ChainHandler also now batches the processing of filters to make an IBD and syncing much faster.

    πŸ›  Various other bug fixes have been done as well.

    Commits

    βœ… 5df27a4 Increase chain test code coverage even more (#2028)
    314afbd Increase chain code coverage (#2023)
    πŸ”€ d0abc19 Handle the case where our block headers are synced already (#2021)
    2f6ff1d Make ChainApi.getHeadersBetween() be inclusive on the 'from' parameter (#2009)
    449e205 Introduce 'FilterSyncMarker' to ChainApi, make it clearier what exact… (#2003)
    πŸ‘ 72cfd4b Make BlockHeader, BlockHeaderDb have better toStrings (#2007)
    πŸ”€ 7b4b4a2 Resolve issues with reorgs and syncing filters (#1969)
    ⚑️ 8d1d0fc Update callbacks for LN support (#1938)
    βœ… 19bbe25 Segregate mainnet chainhandler tests and regtest chainhandler tests (#1988)
    ⚑️ f14eeb3 Optimize findClosestToTime (#1959)
    a7c06a1 Add chainHash to ChainParams (#1972)
    🚚 1b788d0 Move getBestFilterHeader() use the best chain by chainwork for determining the fitler header (#1964)
    b36ad55 Change maxBy and minBys to use maxByOption and minByOption (#1961)
    893d036 Rename ChainApi.nextHeaderBatchRange -> ChainApi.nextBlockHeaderBatchrnage (#1957)
    45c11f2 Fix max by for getBlockCount (#1951)
    4d6d96c Fix getBestFilterHeader for headers 2016 or more blocks away from tip (#1943)
    5909a57 Make sure both filter ehaders and filters are empty before sending fi… (#1936)
    πŸ‘» 5785f0c Fix maxBy() exception in the case of empty Blockchain in ChainHandler… (#1934)
    453e02b Implement getBestFilterHeader based on a number of block headers that… (#1926)
    🌲 267cf06 Fix log to output correct function (#1913)
    🚚 4cdbeaf Move ChainApi to core (#1888)
    b1b5f0a Use database to calculate number of confirmations (#1789)
    βœ… ff8f922 Batch and execute headers for chain work calculation test case, this … (#1837)
    βœ… 11e0871 Attempt to batch checking of headers in chainTest to avoid reject exe… (#1826)
    ⚑️ 4323cd7 Drop older headers on chain update (#1763)
    576d455 Add back chain index after creating a temp table (#1753)
    f4d4f8e Batch add filters to database (#1725)
    ⚑️ 5e80795 2020 07 25 optimize recalc chainwork (#1697)
    c3b7629 Fix Postgres types (#1723)
    ⚑️ 930f184 Optimize getBestFilter functions (#1715)
    17e9c87 Fix getBlockchainsBetweenHeights (#1710)
    🚚 383aaa7 Remove need to parse every header in a blockchain on instantiation (#1704)
    4b710dd Create getBlockchainsBetweenHeights for BlockHeaderDAO (#1703)
    πŸ”Š 8f3bcbb Add extra logs, fix best filter bug (#1624)
    94568ab Change ChainApi.getBestFilterHeader() return type to Future[Option[Co… (#1550)
    7d970ea Attempt to fix memory leak in recalc chain work (#1535)
    43a5c6c Fix Chaindb chainwork Migration (#1518)
    31807c9 Implement best block hash correctly (#1452)

    CLI

    πŸ“„ The CLI commands now have proper help messages with the addition of a bunch of new commands. Checkout the list of all the commands for more information.

    Commits

    667d2bc Fix case of cli command sendwithalgo (#1835)
    πŸ‘ 1f6e224 Address Tagging/Labeling Support from CLI (#1790)
    1c2bc70 CLI: Handle non-json responses (#1749)
    a84543c Pulled down dlc CLI code (#1589)
    be37fda Add sendrawtransaction CLI and Api commands (#1351)
    c7a350d Add CLI commands for current wallet apis (#1291)
    380ef24 Fix CLI commands (#1271)
    a7af3cd CLI command to stop node (#1268)
    bbe7b78 CLI help message include commands and their arguments (#1254)

    Crypto

    This is a new module that used to be contained in the Core project. The Crypto project is meant to handle using cryptographic primitives (keys, signatures, and hashes).

    πŸš€ Schnorr Support has been added! Schnorr keys, nonces, and signatures can be now be used inside of Bitcoin-S through libsecp256k1 or our own BouncyCastle implementation. This is in its very early stages as an alpha release without thorough review and is subject to change (as the schnorr BIP is subject to change). Please use with caution.

    Commits

    bed34f4 Use safeRewind for signWithEntropy (#1774)
    2c78d9f Create safeRewind() helper method in secp256k1jni (#1546)
    665b585 Schnorr Data Structures (#1564)
    ♻️ 2199cfb CryptoContext Refactor (#1469)
    πŸ“œ a37a7d1 Implemented (lax) signature parsing in Bitcoin-S (#1446)
    ♻️ 4d9692f Crypto Project Refactor (#1380)

    Db Commons

    πŸ‘ PostgreSQL support!

    🌲 Logging has been completely redone to only use grizzled slf4j.
    🌲 Changing settings in your bitcoin-s.conf file will no longer effect logging, only a logback.xml file will.

    πŸ›  Various bug fixes, optimizations, and improvements for other modules.

    Commits

    ♻️ 8361ff6 Refactor logging to only use grizzled slf4j (#2019)
    f471119 Create DatabaseDriver ADT instead of booleans (#1902)
    🚚 9a1dfdf Remove AppConfig.initialize() in favor of AppConfig.start() (#1907)
    1c84dc3 Add an ability to one Postgres database for all sub-projects (#1897)
    f702410 Db conf on pr 1877 (#1879)
    350928b Correcly use reference.conf file (#1869)
    1d7793c Only use appenders with no Logback conf (#1867)
    🚚 9dc7b2c Remove default false for useLogbackConf (#1816)
    ⚑️ 26a2529 CRUD Test suite + updateAll improvements (#1618)
    7b8f17a Added locks on start calls for loggers (#1713)
    4363967 Fix All Loggers! (#1695)
    ⚑️ 6a1e4ae Add .transactionally to CRUD.updateAll(), CRUD.upsertAll(), CRUDAutoInc.createAll() (#1698)
    03da22b Fix length of BigIntMapper (#1651)
    102e577 AppConfig Start Interface (#1598)
    ⚑️ 586075e Temporary fix for update all on CRUDAutoInc Tables (#1596)
    🚚 8c0e64e Move slickDbConfig out of JdbcProfileComponent trait into AppConfig (#1510)
    πŸ‘ a9430c2 PostgreSQL support (#1315)
    0a35cdb Implement AppConfigFactory (#1462)
    c811ccc Add option to correctly use logback config (#1398)
    64b1384 2020 04 08 multi db dao (#1355)
    0️⃣ 02d926b Reduce default num threads used for slick being a thread pool of 20 to 5 (#1281)

    Eclair RPC

    ⬆️ Eclair has been upgraded to v0.4.1 and EclairInstance now recognizes more config options.

    Commits

    πŸ‘· 5426c01 Fix CI failure in eclair test (#1735)
    15870a7 Eclair RPC 0.4.1 (#1627)
    ⬆️ 8350a47 Upgrade Eclair to v0.4 (#1421)
    848c4cd Add bitcoind and zmq config options to EclairInstance (#1428)

    Fee Provider

    πŸ“„ A new project for Bitcoin-S, used for retrieving fee rates. An initial implementation for getting fee rates from bitcoiner.live, BitGO, and mempool.space are included. For more information checkout the docs

    Commits

    f8ca35b Add mempool.space as a fee provider (#1751)
    38c80d7 Implemenet BitGo fee provider (#1662)
    6ecb3cd Attempt to re-enable fee provider publishing (#1503)
    βœ… 89ec91f Skip publishing of fee-provider-test (#1495)
    217a8b6 Skip publishing fee provider for now (#1492)
    πŸ‘ 3e323ce Fee Rate Api Support (#1470)

    GUI

    A new GUI has been added for the wallet. It has minimal functionality but allows for basic sending and receiving.
    πŸ“„ There is a tab for executing DLCs however it will not work without compiling from the adaptor-dlc branch, more information can be found here.

    Commits

    πŸ’» 56937f7 Give gui command line arguments (#1931)
    bbb43c2 Fix gui theme to correctly color the button bar (#1626)
    πŸ“¦ 4683d41 Added DLC GUI stuff to a new package in the existing GUI and made a new tab for DLCs (#1590)
    b022909 Introduced bundle project and created main class that runs server and then gui (#1531)
    🚚 ab9b0bd Remove GUI unused imports (#1440)
    πŸ”Š 91b2602 Add bitcoin-s icon, add dark theme to dialogs (#1425)
    afd67b6 Modify gui background color to be same as our website (#1404)
    55e3d2d Dark mode GUI (#1316)
    920199c Constructed simple Bitcoin-S wallet GUI (#1285)

    Key Manager

    A Key Manager now has a creation time, this should allow for more optimal rescans if used.

    Commits

    βœ… 293eb24 Increase test coverage in WalletStorage (#2030)
    efc8e72 Increase code coverage in key manager (#2024)
    9c17e00 Implement KeyManagerLogger (#1386)
    βœ… eb37e55 Increase Key Manager test coverage (#1465)
    556f713 Add wallet creation time for rescans (#1353)

    Node

    πŸ›  Some notable bug fixes in the node project:

    Safely handles reorgs that happen when the node is offline

    Can now safely rebroadcast transactions

    πŸ”€ Does not need to wait for a new block to begin syncing filters

    Send correct the time in a VersionMessage

    πŸ‘‰ Uses a more descriptive user agent

    πŸ“„ NodeCallbacks now return Future[Unit] to add the ability for the node to wait for the callbacks to complete, learn more reading the callback docs

    Commits

    πŸ‘ e8c28de Warn if peer does not support services we need (#1921)
    🌲 be89159 Improve logging in DataMessageHandler (#1922)
    0f5929d Clean up calls in Node and Chain (#1896)
    79f7573 Send get filters message if we haven't cached any yet (#1900)
    c9c18fa Create ADT for NodeType instead of booleans (#1901)
    485874d Simplify Transaction Broadcast (#1872)
    ⚑️ 098c0ee Update user agent to 0.4.0 (#1887)
    βœ… 9a36d79 Fix safely broadcast a transaction twice test (#1851)
    e229441 Send correct version message on node start up (#1793)
    97ddf62 Send GetHeadersMessage using all of our cached headers to prevent reorgs from stalling node (#1758)
    29c5bff Stop requesting merkle block messages while in neutrino mode (#1730)
    7db465f Callbacks to appconfig (#1740)
    πŸ”€ 5776eae Start syncing filters on node startup (#1729)
    728a4a8 Fix Node Startup Issue (#1683)
    c64a590 Skip downloadBlocks if given an empty Vector (#1690)
    🚚 c65338f Remove need for wallet from BroadcastTransactionTest (#1666)
    βœ… 2b919ff Node broadcast tx twice test (#1611)
    65c7c84 Drop AutoInc col for Broadcastable Transaction Table (#1630)
    βœ… f7efc25 Add tests that NodeCallbacks are executed (#1582)
    βœ… b7504ed Have BroadcastTransactionTest rebroadcast on failure (#1561)
    ⚑️ 0928fca Optimize UpdateBloomFilterTest (#1548)
    4ee234d 2020 06 12 mv to appconfig (#1553)
    ⚑️ aa53ee5 Fix and Optimize Broadcast Transaction Test (#1545)
    🌲 e6af044 Add more descriptive log message in P2PClient when we get disconnectd (#1514)
    ⚑️ d0ad497 Try and improve reliability of UpdateBloomFilterTest, also add getMem… (#1434)
    🌲 38fe580 Neutrino Logging (#1382)
    🐧 2194196 Re-enable NeutrinoNodeWithWalletTest for Linux (#1366)
    🚚 831e89c Use FutureUtil.foldLeftAsync() to process messages we parsed on the p2p network. This moves the blocking with Await.result() from inside of each message we process, to after the entire batch of messages is processed (#1326)
    βœ… 064d8bd Fix MerkleBuffers test to be async (#1329)
    efaf457 Make 'maxHeightQuery' vals inside of BlockHeaderDAO, CompactFilterHeaderDAO, CompactFilterDAO (#1325)
    27dbefd Call getFilterHeaderCount async inside of nextFilterHeaderBatchRange while we are fetching our start height for fetching filters (#1327)
    aa2d88f Network specific filterHeaderBatchSize (#1286)
    717434d Change NodeCallbacks to Future[Unit] s (#1206)
    afd8d93 Terminate not reliant on node.stop

    Server

    πŸ‘€ Logging has been improved in the server, as well as some configuration options have been added, visit the server config docs to see them all.

    The server should now properly handle errors on start up and shutdown.

    Commits

    e353d21 Throw errors that occurr in startup (#1950)
    🌲 6e2c811 Rolling log file location (#1846)
    πŸ“œ 26f47d2 Fix server parsing for send to address (#1819)
    a3a2248 Add missing route for getaddressinfo (#1834)
    60e8289 Don't wait for rescan completion to send message (#1836)
    πŸ”§ cad3c64 Output logger configuration on startup now (#1814)
    47e305e Config CLI option, datadir correctly read from config (#1807)
    🌲 e247289 Make Akka log to file correctly (#1801)
    ⏱ d723167 Bump stop timeout (#1797)
    πŸ‘ 26aee5e Better return message for bitcoin-s-cli stop (#1777)
    6f95c27 Replace localhost with 127.0.0.1 automatically (#1772)
    eb09319 Have AppConfig use BitcoinNetwork.fromString (#1748)
    🚚 674c376 Move where we call wallet.start() and node.start() to the same place to avoid initializaiton issue 1687 (#1689)
    πŸ”€ 0ee7354 Start server before sync (#1682)
    8b85751 Give more descriptive error when there are no peers set (#1652)
    7784087 Break things up in server/Main.scala, allow things to be done asynchr… (#1522)
    c54ee10 2020 06 05 mv chainwork calc (#1519)
    πŸ”§ 29e439d Add rpcport configuration options in both bitcoin-s.conf and as a command line parameter (#1387)
    πŸ”€ 4284f3e Log correct type of node sync (#1384)
    ee2d74b Change sendrawtransaction return to be just txId (#1354)

    βœ… Testkit

    βœ… Wallets created by fundWalletWithBitcoind will now have the same utxos as a wallet created by FundedWallet. This should make them interchangable and ease some pain from switching between the two kinds of test fixtures.

    βœ… Wallet Fixtures now have a bip39PasswordOpt parameter to allow for testing some of the wallet's key manager.

    πŸ›  Fixed a bug that led to performance issues due to a wallet's threads not being properly closed.

    Commits

    ⏱ 3e86438 Rename parameter names from 'duration' -> 'interval' just like our ActorSystem.schedule() names the parameter (#2005)
    βœ… b43d5d2 2020 08 22 chaintest cleanup (#1877)
    e4460bb 2020 08 21 clean broadcast dao (#1875)
    🚚 50a43d0 Remove uncessary extension of Async 'FixtureAsyncFlatSpec' in WalletDaoFixture, it's inherited from BitcoinSWalletTest already (#1881)
    403d70e Fix async bug with destruction of fixtures (#1878)
    199661d Start calling appConfig.stop() in destruction fixture code (#1868)
    βœ… c5f7c3d Disable logging for tests (#1839)
    βœ… ac21e04 Cap the amount of threads an actor system can spin up to 2 in tests (#1578)
    a66ead6 Make it so wallet fixtures take a bip39PasswordOpt as a paramter (#1555)
    βœ… 6b19732 Fixed all walletTest threads not being closed (#1552)
    βœ… 977a696 Testkit wallet with bitcoind uses bitcoind as api (#1499)
    πŸ›  92ac40c Fixed buggy type inference on Gen.frequency by explicitly passing in type parameter (#1439)
    βœ… ce3e37d Create KeyManagerTestUtil.bip39PasswordNonEmpty for test case that requires non empty password (#1373)
    260f52f Make fundWalletWithBitcoind have the same utxo amounts as FundedWallet (#1364)

    Wallet

    Many new APIs available for different types of sending and funding of transactions.

    πŸ“„ Wallet now has the ability to add callbacks for certain functions, check the docs for more information.

    Wallets now use its KeyManager's creation time for faster rescans.

    βœ‚ Remove Unlocked vs Locked Wallet distinction, this was removed because it was not used, the KeyManager still has a locked and unlocked state however.

    The wallet now has the ability to watch any ScriptPubKey, this will be useful for off-chain protocols.

    πŸ›  Various bug fixes, optimizations, and improvements.

    Commits

    36b4579 Add ImmatureCoinbase TxoState (#2029)
    βœ… ff878c5 Use randomized fee rates for wallet tests (#1977)
    bf1799d Fix Two KeyManagers in scope for fundRawTransactionInternal (#1986)
    βœ… 2da7149 Don't spend immature coinbases, fix tests (#1981)
    a4dc805 Validate key manager matches account db on wallet startup (#1948)
    bd94ff1 Only mark utxos as reserved on successful coin selection (#1944)
    f734e00 Calculate correct TxoState when processing a transaction (#1929)
    4104e0c Fix rescans that are larger than the batch size (#1916)
    🚚 66ec89b Move WalletApi to Core (#1890)
    🚚 28ff318 Move WalletApi necessities to core (#1886)
    🚚 acbdbfa Move all remaining wallet db representations (#1885)
    🚚 f1b228a Move TransactionDb to Core (#1849)
    🚚 f757120 Move AddressTagDb to Core (#1850)
    🚚 02f02fb Create KeyManager Api & move SpendingInfoDb to core (#1848)
    d697534 Fix selecting Utxos twice in fundRawTransactionInternal (#1866)
    773dbb7 Watch arbitrary SPKs (#1860)
    0904ba4 Fix V8 Migration (#1862)
    🚚 7c62bb2 Remove unnecessary parallelization in Wallet (#1823)
    ♻️ 874a96e Refactor wallet DB (#1798)
    0ca5b69 Fix get missing utxos (#1832)
    c9fba8a Create primary key of (address, tag_type) for AddressTag table (#1828)
    86f68b3 Fix address tag issue where we weren't adding tags to an address, we were replacing existing tags (#1824)
    c5617f6 Require utxos aren't spent when sending from outpoints (#1817)
    ⚑️ cb962f4 Optimize unmarkUTXOsAsReserved (#1804)
    1a80132 Fix for Wallet confirmed states (#1782)
    d9024b1 Have wallet shuffle inputs and outputs (#1721)
    b044b64 Implement Wallet.listTransactions() (#1744)
    7db465f Callbacks to appconfig (#1740)
    🚚 d6ce8de Move Node type of out Wallet API (#1708)
    🚚 96ebf2b Wallet API remove app config (#1706)
    🚚 d5a0bcd Wallet API, widen key manager definition, remove unlock functions (#1705)
    🚚 6860819 Wallet API move execution context (#1707)
    βœ… 4ef425d Add ProcessBlockTest (#1674)
    24f83d2 Create HDWalletApi (#1693)
    🚚 8102fde Move function defs from wallet api to wallet (#1694)
    3a1f3d3 Unreserve spent utxos (#1676)
    c6f1dcf Fix CoinSelector for KiloX fee rates (#1664)
    407c19b Enforce unique outpoints for SpendingInfoDb (#1673)
    9ed7957 Let Wallet find utxos by state (#1668)
    15ddc74 Random Coin Selection (#1663)
    c2fa7d7 Address Tagging Attempt 2 (#1320)
    021e21d Rescan when UTXOs don't have associated transactions (#1562)
    fdb4026 Formatting Fix (#1606)
    ea62374 Fix WalletAppConfig.hasWallet for Postgres (#1576)
    e63061e Wallet callbacks (#1543)
    1305e53 2020 06 14 wallet root accounts (#1556)
    βœ… 5d276d2 Attempt to fix database locking errors in process tx test (#1477)
    🚚 5508af5 Create a simplified version of the WalletApi.unmarkUTXOsAsReserved() that just takes in a tx and scans outpoints if they are in our wallet, also move the mark/unmark methods out of Wallet.scala and into UtxoHandling.scala (#1463)
    d6978e0 Fix balance by account (#1457)
    a1b220a Add ability to unreserve utxos (#1458)
    9172aa3 Add ability to make OP_RETURN commitments (#1417)
    c4382cd Wallet Send with coin selection algorithim (#1409)
    ⚠ 11fb182 Fix Warning in TransactionDb (#1427)
    a9cd445 Add list unused addresses call (#1408)
    8f5c845 Add listFundedAddresses call (#1407)
    bf6d90a Add listSpentAddresses call (#1406)
    1454bf6 Wallet send from outpoints (#1405)
    🚚 4723dce Remove Unlocked vs Locked Wallet distinction (#1379)
    20c6e43 Batch processing compact filters (#1363)
    6cfe7b4 Ignore immature coinbase outputs when funding a transaction (#1365)
    5881aff Rescan from account (#1348)
    🚚 ee852bd Remove redundant logic that computes an HDAccount. We don't need this because we are explicitly passing in the account we want to create (#1359)
    8d4cbeb Require that addresses are the correct network when sending (#1332)
    βœ… 0a4ca6d Bump number of addresses generated in negative test case for AddressHandling where we expect a illegal state exception to be thrown (#1333)
    934b731 2020 04 02 get new address queue (#1299)
    c347fb5 Fix Block Header Callback (#1331)
    abd28f9 GetAddress Wallet API call (#1287)
    73b4146 Add wallet pay to many (#1317)
    ♻️ f620fb2 getNewAddressHelper Refactor (#1322)
    ⚑️ d6b4ac0 Update TxoState for transactions after they've been confirmed (#1178)
    80882bf Wallet Transaction Tracking (#1197)
    0️⃣ 3ba5cae Fix hardcoded network for the default wallet account (#1277)
    d8586ef Fetch addresses and utxos async in LockedWalletApi.processCompactFilter() (#1283)
    0f89992 Wallet integration for nested segwit v0 spending (#1272)
    90e4ca1 Custom fee rate for wallet sends

    πŸ“š Website & Documentation

    ⚑️ 94c1903 Update sbt-mdoc to 2.2.9 (#2033)
    ⚑️ 603e3db Update Website Deps (#2011)
    πŸ“„ 09556a0 docs: Fix broken links in Docs + minor touchups (#1908)
    πŸ“„ b909503 docs: dlc branch -> adaptor-dlc branch (#1903)
    πŸ“š e345227 docs: Remove e2e dlc info from documentation, add some notes about using gui bundled with node (#1905)
    ⚑️ 3805fc6 docs: Updated setup and dlc docs (#1895)
    πŸ›  9e5e263 Fixed Transaction Signing doc (#1800)
    🚚 f26d9e6 Docs: Remove WalletApi disclaimer (#1785)
    πŸ“„ 83906d7 Docs: Address Queue (#1776)
    πŸ“„ 9cd2c41 Docs: Command line options (#1734)
    πŸ— 4b03dcc Fix nightly build docs section (#1639)
    πŸ“„ 8ba3a79 Use One click install in docs (#1640)
    πŸ“„ e393854 Fee Provider Docs (#1641)
    15870a7 Eclair RPC 0.4.1 (#1627)
    ⚑️ d907967 Update broken slack link (#1580)
    9507315 Document LN Data types (#1504)
    πŸ“„ 95fb2b7 Add docs for server endpoints (#1505)
    πŸ”§ 62ebf64 Add database configuration as a heading that can be hyper linked too (#1501)
    ⚑️ c64c1dd Update docs pertaining to logging (#1471)
    ⚑️ b3050c0 Update stable version in doc.sbt, add getting started link to README.md (#1453)
    9d59acb Fix spacing in README.md (#1444)
    πŸ“„ 9a7b90c Add DLC GUI Docs (#1438)
    171a6c1 Fix Oracle info in DLC doc (#1401)
    c2c1c20 DLC code snippet clarification (#1393)
    🚚 14dfc92 Remove compile for dlc.md as we don't have schnorr in master (#1378)
    πŸ›  e49bb86 Add fixed dlc doc instructions (#1376)
    πŸ— 7b6c6c7 Add information on how to build libsecp256k1 to the secp README (#1318)
    ⚑️ 81b8ac7 Added Tables of Content to the bigger docs using doctoc, updated signing-transactions.md (#1319)
    πŸ“ˆ 4450773 Add google analytics key for bitcoin-s site (#1292)
    7c30ecc Add new GPG key (#1263)
    4559edd Actually add all files for 0.3.0 on the website so they show up (#1256)

    Other

    ⚑️ 89fe847 Update sbt-bloop to 1.4.4 (#1954)
    23a8b1f OSX native libsecp256k1 (#2014)
    d819dd0 trivial: add trivial phase to travis (#2008)
    ⚑️ 79ca910 Update sbt-mdoc to 2.2.8 (#2001)
    ⚑️ 47fb9e0 Update slick, slick-hikaricp to 3.3.3 (#1987)
    ⚑️ 4343a4b Update scodec-bits to 1.1.20 (#1960)
    ⚑️ e560159 Update play-json to 2.9.1 (#1994)
    ⚑️ 1b0113f Update sbt-mdoc to 2.2.7 (#1995)
    149e519 Fix RoutesSpec to assert results (#1979)
    βœ… 9daa7e7 Bump scalatestplus version (#1894)
    ⚑️ 88ae895 Update scalatest to 3.2.2 (#1876)
    🚚 f96bb97 Remove 2.11 specfic files (#1892)
    πŸ— 8529eb7 Cache Travis Builds (#1859)
    68ec48c Bring back strict compiler opts (#1854)
    ⚑️ 4186be5 Update scalafmt-core to 2.6.4 (#1686)
    ⚑️ 1660f56 Update postgresql to 42.2.16 (#1873)
    ⚑️ b13d9ce Update sbt-native-packager to 1.7.5 (#1838)
    ⚑️ 86647d3 Update postgresql to 42.2.15 (#1831)
    ⚑️ 90138a9 Update sbt-mdoc to 2.2.5 (#1812)
    βͺ 0bd60fd Revert scalaTestPlus 3.2.1.0 -> 3.2.0.0 (#1810)
    ⚑️ 1e41bf0 Update sbt-mdoc to 2.2.4 (#1786)
    ⚑️ 84dfb33 Update sbt-buildinfo to 0.10.0 (#1792)
    0a16a79 Bump prismjs from 1.20.0 to 1.21.0 in /website (#1788)
    βͺ 931ad6b Revert scalaTest to 3.2.0 (#1791)
    ⚑️ bb7786d Update akka-actor, akka-stream, ... to 2.6.8 (#1677)
    5b385fd Bump scala 2.12 compiler to 2.12.12 (#1669)
    ⚑️ e9ec643 Update akka-actor, akka-stream, ... to 2.6.7 (#1656)
    πŸ‘· cfdee84 Run only docs CI for PRs that start with Docs: (#1643)
    ⚑️ 1970f75 Update sbt-native-packager to 1.7.4 (#1644)
    ⚑️ 34e9be1 Update website deps (#1622)
    d3641c3 scalafmt On Compile (#940)
    βœ… 105052d Have travis only run tests if it compiles (#1577)
    2b91c39 Added compile scope scalafmtCheck to travis runs (#1563)
    πŸ—„ 8d21cd1 Bump akka to 2.6.4, fix deprecated things (#1374)
    ⚠ 8241e12 Filter -Xfatal-warnings when using scala console so we don't get error messages when you are trying out code (#1485)
    ⚠ 9040e2c Filter warnings on doc for publishing (#1484)
    ⚠ 11a635f Add -Xfatal-warnings on Scala 2.13 (#1483)
    df13a0b Drop 2.11 from inThisBuild.sbt and Deps.scala (#1479)
    606d2fe Add hardcoded jvmopts file that starts with a 2g heap (#1436)
    🐎 920f0c3 2020 05 19 improve test performance (#1449)
    ⬆️ a38b77d upgrade Scala to 2.13.2 in places in travis.yml (#1432)
    ddf060b Bump .travis.yml scala version (#1368)
    ce33c57 Bump scala version to 2.13.2 (#1360)
    βœ… 28aea46 Increased test coverage by 0.97% (#1343)
    ⚑️ abec5ac Update Secp256k1 (#1310)
    1340753 Fix Travis caching (#1295)
    πŸ“¦ 9995e22 Bump sbt-native-packager to 1.7.0 (#1265)
    b913a42 Bump scalac 2.12.x series to 2.12.11 (#1257)
    ⚑️ 0c67805 Update sbt-mdoc to 2.1.4 (#1244)


Previous changes from v0.3.0

  • βš™ Running bitcoin-s

    πŸ”§ If you want to run the standalone server binary, after verifying gpg signatures, you can unzip bitcoin-s-server-0.3.0.zip 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 also unzip the bitcoin-s-cli-0.3.0.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
      -h, --help Display this help message and exit
      <cmd> The command and arguments to be executed. Try bitcoin-s-cli help for a list of all commands
    

    πŸ“š For more information on what comands bitcoin-s-cli supports you will need to look at source code as we do not have documentation yet, here is where to start: https://github.com/bitcoin-s/bitcoin-s/blob/v0.3.0/app/cli/src/main/scala/org/bitcoins/cli/ConsoleCli.scala#L35

    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/

    Migrations

    All of our modules that require databases now have database migrations. The tool we use for these migrations is called flyway. To find your projects migraitons, you need to look inside of the [project-name]/src/main/resources/[database-name]/migration/. For example, the chain projects migrations live under the path chain/src/main/resources/chaindb/migration/V1__chain_db_baseline.sql.

    0️⃣ Migrations can be executed by calling the DbManagement.migrate() method. Migrations are applied by default on server startup, via the AppConfig.initialize() method.

    πŸ”§ These migrations are setup so that project's databases and migrations are independent of each other. Therefore if you want to use the bitcoin-s-chain project, but not the bitcoin-s-wallet project, wallet migrations are not applied. It should be noted if you are using a module as a library, you are responsible for configuring the database via slick's configuration and calling AppConfig.initialize() to ensure the entire module is initialized correctly.

    Module level changes

    Bitcoind RPC client

    πŸ‘ Bitcoin-S now supports the RPC commands introduced bitcoind v19 and is still backwards compatible with previously supported versions.

    πŸš€ The list of new RPC commands can be found here: https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.19.0.1.md#new-rpcs

    Commits

    βœ… 6e5c0e4 Fix the time based test cases in BitcoindV17RpcClientTest (#1224)
    858138f Bitcoind v19 RPC (#910)
    βœ… 39bcfb2 Add sanity tests for .hashCode() and .equals() for multiple instances for EclairRpcClient/BitcoindRpcClient (#881)

    Core

    πŸš€ Bitcoin-S has entirely re-written its signing logic in this release. Previously, BitcoinUTXOSpendingInfo was a generic type which was used for signing all ScriptPubKeys. Now BitcoinUTXOSpendingInfo has become an ADT with specific support for different kinds of signing and which supports nesting for nested ScriptPubKey structures such as P2WSH and ConditionalScriptPubKey. In conjunction with this change to BitcoinUTXOSpendingInfo, the Signer ADT has been re-written to work with specific BitcoinUTXOSpendingInfo subtypes and to support nesting via delegation to other Signers when signing a ScriptPubKey with nested/composed structure. This change has allowed all signing logic to be removed from TxBuilder which now makes a simple call to BitcoinSigner.sign.

    ♻️ Alongside the refactor of all signing logic in Bitcoin-S, the ability to sign transactions with a specific key alone, and generate only a single ECDigitalSignature has also been added. This functionality is essential to multi-party transaction construction as Bitcoin-S signing previously required all Signers to be available at once for signing. This new functionality is carried out by BitcoinSignerSingles using the method signSingle.

    πŸ‘€ See https://bitcoin-s.org/docs/core/adding-spks for a full description of how ScriptPubKeys are now created and signed for.

    πŸ“¦ Bitcoin-S now has implementations of BIP 158 Golomb Coded Sets in the new gcs package within core. This includes general functionality to create filters of any kind as descried in BIP 158, which can be found in GCS.scala and GolombFilter.scala. Specific support for Basic Block Filters used by version 0 Neutrino nodes is also implemented in BlockFilter.scala. BIP 157 Filter Headers are also implemented in FilterHeader.scala. Various algorithms for matching against these BIP 158 filters are implemented in the BlockFilterMatcher trait.

    πŸ“š Bitcoin-S now fully supports PSBTs with functionality for creation, updating, combining, signing, finalizing, and transaction extraction. You can find the documentation here: https://bitcoin-s.org/docs/core/psbts

    Commits

    277d625 Bouncy Castle Fallback (#1232)
    5e7cc6f Fix missing pattern patch case for when we have zero headers (#1242)
    674ba24 Added hash types to scriptsignature generators (#1219)
    5ccd01a Seq and Map Wrappers (#1131)
    ⚑️ 4ce0588 Update dns seeds to reflect what is currently in bitcoin core, some of the old seeds do not exist anymore (#1157)
    πŸ‘· c67629f Reduce GCS generator params again to try and stop timing out on CI (#1144)
    βœ… dad1fb7 Descriptor fixes and test (#1116)
    5692a7d Replace null values with EmptyTransaction and PSBT.empty
    8f70996 LnInvoice must ignore unknown LN tag fields (#1068)
    d84c926 Fix the order of LN tag fields in serialized invoces (#1066)
    πŸ‘ d858df7 PSBT Support (#1031)
    βœ… 8941ea0 Bech32 weakness test vectors (#1056)
    c4ade3b Txo state flyway (#1052)
    fcaa966 Added PubKey addition functionality (#1051)
    ⚑️ 7512ca3 Updated P2PKWithTimeout to use CSV instead of CLTV (#1050)
    3ffd988 Single Signing (#1020)
    βœ… d75f75c Fixed BitcoinTxBuilderTest which was broken in #900 (#1021)
    βœ… 7ba1865 Increase core test coverage
    82ef36e Create MaskedToString, implement it in ECPrivateKey, ExtPrivateKey, M… (#1011)
    πŸ‘ c738bb3 Support for payment secret and features LN invoice tags (#1012)
    6d0bceb P2SH Signing (#993)
    34a3efd Change ScriptPubKey to RawScriptPubKey in ScriptWitness (#975)
    f280103 2019 12 17 sign ext key (#959)
    πŸ›  d1007b4 Fixed nLockTime setting when spending a P2PKWithTimeoutSpendingInfo (#973)
    74f7f73 P2PKWithTimeoutSPK (#967)
    🚚 9916783 Remove Sign trait from ECPublicKey, move signing functionality into ECPrivateKey (#962)
    caf9b7d Add invariant to WitnessTransaction that says inputs.length == witnes… (#954)
    2f28700 Implement CurrencyUnit as Numeric (#932)
    69077f8 Add little endian functionality to Network Element and Factory (#931)
    βœ… 971de61 BIP32Path Factory and new tests (#928)
    7cfd33b ChainQueryApi (#926)
    d2bdf27 Timelock bug fix (#920)
    βœ… 3183f17 BitcoinTxBuilderTest Hang (#901)
    c7a8a8e Add descriptors as toString for script pubkeys (#902)
    🚚 b89d20e Moved BitcoinTxBuilder property tests into ScalaTest context, fixed bug where opPushData was marking valid short P2SH scripts as invalid (#900)
    15ec7b8 Nicer Satoshis.apply (#899)
    ♻️ 804f18f Refactor compact filter matching (#838)
    306699b MultiSignatureWithTimeoutScriptPubKey (#867)
    7fe6604 Made ScriptPubKey and ScriptSignature toStrings nicer (#859)
    254828e OP_NOTIF ScriptPubKey and Signing (#858)
    βœ… 4355543 Conditional Signing Tests (#865)
    3c7fd6c Nested OP_IF ScriptPubKey and signing (#857)
    ♻️ d86acff ScriptInterpreter Conditional Refactor (#855)
    38db570 OP_IF Signing (#802)
    3ed4c4a RawScriptPubKey (#843)
    20c4279 Replace scriptPubKeyToSatisfy with spendingInfoToSatisfy in Signer (#842)
    βœ… ec38acb GCSTest fix (#845)
    310ccbb Spending Info ADT use (#840)
    ♻️ 5454d67 Signer UTXOSpendingInfo refactor (#830)
    8dc005a UTXOSpendingInfo ADT (#834)
    4641e00 Created LockTimeSigner and delegated LockTimeScriptSignature signing from other places to it (#798)
    d2b6a83 P2WSH Signer! (#797)
    🚚 eb78d61 Removed the ScriptProgram companion object
    ⚑️ 8184f4a Update script_tests.json, fix bugs that were unveiled with that updat… (#799)
    ♻️ e9c4b10 Script Program apply method refactor part 5 (#760) (#801)
    ♻️ cd76bf5 Script Program apply method refactor part 7 (#760) (#804)
    ♻️ 6d1b304 Script Program apply method refactor part 6 (#760) (#802)
    ♻️ 3ef128f Script Program apply method refactor part 4 (#760) (#800)
    ♻️ 672446b Script Program apply method refactor part 3 (#760) (#795)
    ♻️ 25f4831 Script Program apply method refactor part 2 (#760) (#794)
    ♻️ bbe1e87 Script Program apply method refactor part 1 (#760) (#793)
    7b3e9f7 2019 10 01 script program cleanup (#791)
    c3df666 2019 10 01 script interpreter cleanup (#772)
    09ea1fb Use the fact that network headers specify the number of bytes in the … (#783)
    🚚 cee1e82 Reduce GCSTest by more, remove unused warnings when using scala console from sbt (#779)
    🚚 4ee36e8 Removed the sealed trait and private case class Impl pattern from ScriptPrograms (#759)
    πŸ‘ 933f0fc Initial BIP157 support (#695)

    Chain

    Compact filters

    We incorporated storage for CompactFilterHeaders and CompactFilters in the chain project. For more information on what these are please read BIP158. We currently cache all filters locally so that they can be reused for things like wallet rescans.

    πŸ‘€ If you would like to see how wallet rescans work with the filters, please see https://bitcoin-s.org/docs/wallet/wallet-rescan

    Commits

    πŸ”€ 6d6b102 2020 03 08 filter sync (#1209)
    800fdff 2020 03 15 chainhandler getnancestor (#1247)
    🚚 ba91c61 Create removed Neutrino tables (#796)
    3f734a9 Make ChainApi to scan the block filters in order to find matches (#786)
    ⚑️ 5cc0b30 Optimize org.bitcoins.chain.blockchain.BaseBlockChain (#781)

    Cli

    πŸ‘ The CLI project has added support for PSBTs, getting the number of filters and filter headers, and doing a wallet rescan.

    As well as new CLI commands, a Console CLI has been added. This allows you to access CLI commands from within the code base.

    Commits

    🚚 a043d38 Remove requirement for sats parameter (#1190)
    980d532 Allow getbalance to return in sats
    β†ͺ c363156 Add codehause dependecy as a work around for issue 1110, there is a i… (#1105)
    61dfa35 Console CLI (#1095)
    a13feef Simplify txReads
    5f1716b CLI Commands for PSBTs
    c968e79 CLI command for filter and filter header counts (#1063)
    7e6f489 2019 11 28 cli native image doc (#903)
    43ec85a Rescan RPC (#854)

    Db commons

    πŸ“¦ These are mostly minor bug fixes inside of this library. As db-commons is mainly used as a utility library for us for interacting with our application, most of these fixes do not apply to you. This package will more than likely be renamed to app-commons in the future.

    Commits

    a6e21fe Multiple Logger Fix (#1086)
    ea555c5 If migrations fail, attempt to baseline the database and apply migrations again (#1058)
    πŸ— f263f5c Add build config to skip publishing the new db-commons-test library (#1057)
    ♻️ 81dcdbe 2019 09 27 logging refactor pt2 (#765)
    🚚 dadd522 Remove hard coded log level in test app config (#757)

    Eclair

    πŸš€ Our eclair rpc project now supports eclair v0.3.3. Here is the official release from ACINQ themselves:

    πŸš€ https://github.com/ACINQ/eclair/releases/tag/v0.3.3

    πŸ“š Here is there API documentation:

    https://acinq.github.io/eclair/#introduction

    πŸ‘€ For more information on how eclair works please see

    πŸ“„ https://bitcoin-s.org/docs/rpc/rpc-eclair

    Commits

    βœ… e387d07 Make eclair tests use bitcoind v19 rather than bitcoind v17 (#1187)
    d4f3e18 Use java.time.Instant to represent timestamps in EclairApi (#1118)
    πŸ‘ 00feee8 Support for Eclair 0.3.3 (#1097)
    🌐 b83884e Eclair Web Socket client (#1006)
    🐎 e1acac0 Eclair performance tests
    2527354 Add comments indicating what time unit eclair sends things in for the… (#884)
    cbf7711 Fix runnable not being cancelled when payment fails (#869)
    βœ… 73c734f Fix monitorInvoice unit test (#846)
    be8676e Fix getsentinfo Eclair Rpc call (#851)
    ⬆️ 2038faf Upgrade to ecalir v0.3.2 (#818)
    βœ… 6df467d Improve EclairRpcClientTest execution time (#826)
    βœ… 5ec86ae Fix bitcoind version for eclair tests (#778)

    Key Manager

    πŸš€ The key manager is a new module this release. The key manager module's goal is to encapsulate all private key interactions with the wallet project. For more information please see: https://bitcoin-s.org/docs/key-manager/key-manager

    Limitations

    There is also an ongoing discussion about the two possible passwords the key manager can have:

    1. BIP39 Password
    2. A password used to encrypt the key material on disk.

    #972

    πŸ‘€ Currently bip39 password is supported at the library level, but is not supported for end users using the server project. You can see that the bip39 password is hard coded to None here.

    πŸ‘€ There is a password that is used to encrypt your mnemonic seed on disk, but that password is hard coded to a default value. THIS MEANS THAT YOUR MNEMONIC SEED CAN TRIVIALLY BE STOLEN IF AN ATTACKER CAN ACCESS YOUR HARD DRIVE. TAKE PROPER OPSEC PRECAUTIONS.

    πŸš€ Overall the key manager module should be considered insecure. For this release, it is more about setting up the API for further development in subsequent releases.

    Commits

    039722a Implement abililty to use BIP39 password. This means this password ne… (#990)
    🚚 25916ac This creates a subtype BIP39KeyManager and moves all existing KeyMana… (#988)
    🚚 8fb1716 Move initialization of wallet entropy into the key manager (#966)
    72097e3 2019 11 30 key manager (#904)

    Node

    πŸš€ We now support a neutrino node that can be hooked up to the rest of bitcoin-s to interact with the p2p network. Since neutrino is not officially released yet in bitcoin core, we have built a custom binary to run it. If you wish to experiment with neutrino please the website:

    Commits

    πŸ”€ 7fbc642 Fix sync issues (#1090)
    abaa058 Rescan and fetch blocks (#835)
    πŸ‘· 80c8636 Disable OSX neurtino tests in CI (#777)
    πŸ”€ 6476e34 Add a log at INFO level to indicate we are making progress while syncing (#780)
    🚚 a42d297 Remove bitcoind dependency from node (#770)
    🚚 e66bf4c Remove isInitialized() check in sendMsg, which was causing a deadlock (#763)
    71a136b Fix bug where we were sending messages before we were fully initialized (#755)

    Server

    πŸš€ The server project is a bundle of all of our sub projects that you can send http requests to and have bitcoin-s do something. The easiest way to do this is with the CLI tool. The biggest change in this release is now we support configuration with a --datadir flag to specify where the bitcoin-s datadir rather than just reading the default. For more information read https://bitcoin-s.org/docs/applications/server

    Commits

    πŸ”§ 2896fd9 2020 02 21 datadir configurable (#1156)
    πŸ‘€ 30f5850 Added server handling for empty account tables while a seed exists (#1094)

    βœ… Testkit

    πŸš€ This release is enhancing pre-existing test case functionality and cleaning up bugs. We now have common traits for a lot of our older test cases that allow us to make it easier to refactor the entire code base. It also fixes a few small bugs in the fixture creation and deletion code that were the source of CI failures.

    Commits

    πŸ‘· ba2cded Address issue 916. In our chain project fixtures we did not make sure that tables were fully created before trying to insert information into tables in futures. This causes race conditions on slow CI machines that are fixed now because we call 'makeChainHandler()' inside of the setupTableF flatMap (#1129)
    πŸ”§ 7045fdb Add peers section to the example configuration (#1065)
    ♻️ 62f2b19 Refactor make dependent fixtures to use built in scalatest helper met… (#939)
    ♻️ 089bb2b Refactor old test cases to use BitcoinSUnitTest (#814)
    βœ… 27560ac Make tests to not require pre-installed bitcoind (#766)
    βœ… 029b106 2019 09 28 common test trait (#767)

    Wallet

    The wallet project now computes transaction confirmations dynamically, allows for more expressive states for transaction state (ie pending confirmation vs confirmed), as well as adds the ability for wallet recovery and rescans.

    Commits

    βœ… 231aa3b (benthecarman/txo-state-test) TxoState Life Cycle Tests
    βœ… 9858718 Fix Wallet tests' keymanager to use changed config (#1173)
    βœ… c7f8ab7 2020 03 06 wallet rescan test (#1218)
    24fcf8c Reserved TxoState (#1111)
    b50f818 Create migration to drop confirmations column from txo_spending_info … (#1099)
    bc9a25b 2020 1 11 accounts (#1022)
    bf3a89b 2020 1 04 fund raw tx (#1010)
    1ad402e Add more expressive txo states for the wallet (#1001)
    d776e1c Automated wallet recovery (#985)
    🚚 a31066d Move rescan logic from node to wallet (#974)
    b92fc1c Compute confirmations dynamically (#938)
    a752c53 Neutrino Wallet: OnCompactFilter handler (#905)
    ⚑️ 9e677b6 [Neutrino] Update balances (#888)

    Website

    e3cbfda ChainQueryApi doc (#1204)
    3bfabe7 Adding new SPK doc (#1208)
    89f1db6 Make imports in chain.md invisible (#1213)
    πŸ“„ d9881dd Fix typo in docs (#1203)
    ⚑️ 963752c Update eclair.md, also add code example (#1192)
    ⚑️ 267d5eb Update website configuraiton.md with migrations information (#1189)
    πŸ“„ a5ac2d8 Add PSBTs to Docs Sidebar (#1172)
    a3150d2 Added a getting-setup markdown doc for the website (#1167)
    ⚑️ af9d110 Update try-bitcoin-s.sh (#1165)
    c026c9a Add section on how to generate a new version
    fd8ec18 Create v0.3.0 of the website
    67a4955 Add trusted peer caveat in node.md (#1250)
    f9ef6e5 Add a philsophy section on getting-started.md, add missing libraries (#1251)
    7f54b09 2020 03 17 secp256k1jni md (#1248)
    βœ… 677ec52 Bump docusaraus dependency to the latest version 1.14.4 (#1243)
    dfeebf6 Add headings for both Node and cofiguration on the sidebar (#1241)
    βœ… 5e4d5fb Add testkit md (#1234)
    87c768e Add disclaimers to the wallet/key-manager around API breaking changes… (#1237)
    e598d4c 2020 03 13 node md (#1229)
    69783f9 Order website sidebar by project, fix capitalization (#1226)
    🚚 47665a2 Remove unused imports in docs
    6b5b70c Fix error, add await to psbt doc (#1220)
    81ad5bb PSBT signing with BitcoinUTXOSpendingInfoSingle
    190f49a NodeApi doc (#1205)
    ⚑️ af9d110 Update try-bitcoin-s.sh (#1165)
    fa0e0d1 Add section to contributing.md for when travis ci won't run for new contributors (#1135)
    πŸ“š a8a17d8 Example config on in documentation (#1069)
    af4744d Add server to sidebar.json so that it shows up (#981)
    ⚑️ d78bcaa Docs: update Security.md and fix edit button (#965)
    ⚑️ 31f1073 Update bitcoind docs to have correct versions
    ⚑️ 04b4aa4 Update website following https://bitcoin-s.org/docs/contributing-website and running 'yarn upgrade' (#943)
    fd64c42 Add a reference to ChainQueryApi to the wallet (#936)
    πŸ“š 0f9c349 Add documentation on env variable SBT_OPTS and add documentation about it (#914)
    πŸ“„ a91cff0 quick fix of link to txbuilder examples in docs (#815)
    πŸ“š 5d28e91 Add akka logging documentation to our contributing.md (#764)

    πŸ‘Œ Verifying signatures

    πŸš€ This release is signed with christewart's signing key with fingerprint 339A49229576050819083EB3F99724872F822910

    You can find the key here: https://api.github.com/users/christewart/gpg_keys

    Thanks to our contributors

    • Ben Carman
    • Chris Stewart
    • cwaldron97
    • dependabot[bot]
    • Nadav Kohen
    • philbertw4
    • rorp
    • Scala Steward