* Refactor codebase to have has-a relationship with RescanHandling rather than is-a
get everything compiling
Get all tests passing
* Revert and clean up files
* Fix docs
Refactor TransactionProcessing into case class
Get walletTest/test passing
DLCWallet WIP
Get dlcWalletTest/test passing
Small cleanups
Fix RoutesSpec gettransaction unit test
revert logback-test.xml
cleanup
* Implement creatnewaccount rpc
# Conflicts:
# app-commons/src/main/scala/org/bitcoins/commons/serializers/Picklers.scala
# app/cli/src/main/scala/org/bitcoins/cli/ConsoleCli.scala
# app/server-test/src/test/scala/org/bitcoins/server/WalletRoutesSpec.scala
* Get WalletRoutesSpec createnewaccount unit test passing
* Rename HDPurposes -> HDPurpose
* Implement ConsoleCli arg, change HDPurpose json serialization to be a json string instead of a num
* Refactor BitcoinSServerMain to use return Unit rather than WalletHolder
* Generate block in sync flag unit test
* Empty commit to re-run CI
* Implement creatnewaccount rpc
* Get WalletRoutesSpec createnewaccount unit test passing
* Rename HDPurposes -> HDPurpose
* Fix docs
* Implement ConsoleCli arg, change HDPurpose json serialization to be a json string instead of a num
* Add NodeApiCallbacks
* Add BitcoindCallbacks
* Add BitcoindRpcAppConfig
* fix docs
* Add helper method for construction
* Add helper constructor method to avoid explicitly passing BitcoindRpcAppConfig parameter to BitcoindRpcClient when we have a BitcoindInstanceLocal
* Fix docs
* Fix open, audit commands for v0.10.0
* Get all unit tests passing
* Add logger.error() to try to debug channel state
* Try adding delay to see if dual funding process can complete before we generate blocks
* scalafmt
* Try bumping number of blocks generated
* Try disabling dual funding
* Cleanup
* Rework EclairRpcTestUtil.shutdown() to shutdown eclair/bitcoind separately
* Fix keysend test
* Add new eclair websocket events
* Empty commit to re-run CI
* First bug where we weren't shutting down a bitcoind in eclairRpcTest
* Add support for lnd 0.17.5-beta
Switch Lnd fixture back to BitcoindVersion.newest
Fix linux build
Update lnd windows hash
Fix lnd mac intel hash
* Update proto files
* Revert changes that removed mapping for numeric UInt32, UInt64 types
* Fix version
* Add bitcoind 27.0
* Fix linux, windows hashes
* Add BitcoindV27RpcClient
* Switch BitcoindVersion.newest = V27
* Try downgrading lndRpcTest to use V26 in tests
* Make pattern matching against 'bitcoind --version' more resilient for new versions of bitcoind
* Add awaitDisconnect() to BitcoindRpcTestUtil.disconnectNodes(), fix flaky v2 connection in unit test
* Get build started for 26.1
* Start introducing v26 data structures
* Switch BitcoindVersion.newest = V26
* Fix GetTxOutSetInfoResult to use hash_serialized_3
* Fix WalletRpcTest
* Refactor PeerInfoResponse to add transport_protocol_type and session_id fields in v25
* Add ServiceIdentifier.NODE_P2P_V2, add support for v2transport to addnode, add default config setting for bitcoind to have v2transport=1 in test framework, add unit test to make sure we can establish a v2 connection
* Remove V20AssortedRpc
* Add loadtxoutset
* Implement getchainstates
* Add getprioritisedtransactions
* Add getaddrmaninfo
* Add importmempool
* Cleanup println
* Implement downloading of bitcoind 25.2
* Add aarch64 hash
* Update x86 macos hash, windows hash
* WIP: scanblocks RPC
* Get in progress scanblocks state working
* Get scanblocks start request working
* Fix BitcoindRpcTestUtil.signRawTransaction
* Implement scanblocks abort
* Remove println
* Switch newest version of bitcoind to v25
* Fix BitcoindV25RpcClient.version
* move decodescript test to WalletRpcTest, rework decodescript test to use descriptors, fix LoadWalletResult
* Empty commit to run CI
* sendrawtransaction maxburnamount param
* Modify testmempoolaccept RPC return type to have two new fields for fee information
* Add test for base too
* Get MiningRpcTest, MessageRpcTest using test fitures
* Remove MultisigRpcTest, move test case to WalletRpcTest
* WIP: P2PRpcTest with fixtures
* Get P2PRpcTest working, comment out test cases that require unconnected nodes for now
* upgrade UtilRpcTest, RawTransactionRpcTest to use test fixture
* Upgrade UTXORpcTest to use test fixtures
* Create DisconnectedPeersRpcTest, create disconnected test fixtures for it
* Remove PreciousBlockRpcTest suite, move test into DisconnectedPeersRpcTest
* Remove UtilRpcTest, move test cases into other files
* Fix unit tests
* Fix rebase
* Remove support for 23.x of bitcoind
* Remove duplicate test
* Fix compile
* Move unit bech32m unit test earlier in WalletRpcTest
* Make wallet name unique in WalletRpcTest
* WIP: Remove v22
* Remove TestMempoolAcceptRpc, move it into MempoolRpc
* Remove downloading of bitcoind v22 from bitcoind-rpc.sbt
* move test case above where other test cases create wallets
* Remove duplicate test
* Remove duplicate test
* Update scalafmt-core to 3.8.1
* Update .scalafmt.conf settings to be factory default settings
* Fix typo
* scalafmt
* Empty commit to re-run CI
* Revert some scalafmt back to original scalafmt.conf
---------
Co-authored-by: Chris Stewart <stewart.chris1234@gmail.com>
* Remove support for v21 of bitcoind
* WIP: Remove deprecated rpcs wit legacy wallets
* WIP: Work up to importdescriptor
* Get low-r test case passing
* Simplify test case
* Remove BitcoindV21RpcClientTest and move test cases to BitcoindV24RpcClientTest
* Remove RpcTransactionRpcTest that only works on legacy wallet
* Fix MempoolRpcTest
* Delete MultisigRpcTest that depends on legacy wallet
* Get WalletRpcTest passing, ignore keypoolrefill test case for now until https://github.com/bitcoin/bitcoin/issues/29924 is resolved
* Add sentQuery Instant to SyncNodeState subclasses, add logic in DataMessageHandler.handlePayload() to detect if a query has timed out
* Refactor to use NodeTestUtil.disconnectNode()
* Cleanup comments
* Add NodeRunningState.removePeer(), add helper method onDisconnectNodeStateUpdate() to consolidate disconnect logic
* Remove duplicate logic
* Add bitcoin-s.node.maxConnectedPeers test
* Clean up resources in test case
* Remove unecessary replacePeers()
* Add NodeState.addPeer()
* Add NodeRunningState.connectedPeerCount, separate handling of connection slots and filter slots
* Add delay to wait for zmq to get setup in chainTest
* Add println
* only run zmq tests on CI
* Bump Thread.sleep from 1ms -> 10ms
* Empty commit to re-run CI
* Revert things
* try making thread names more unique
* try no sleep
* Remove println
* Put logging back
* Try removing ZMQ.NOBLOCK
* turn off parallelExecution to see if it matters
* Add more logging
* Re-enable parallelExecution
* Try catching all NonFatal exns
* Bump timeout
* Bump maxTries
* Try downgrading jeromq back to 0.5.4
* Revert things
* scalafmt
* Disconnect from bitcoind side rather than bitcoin-s side to make sure we don't run into a race condition for updating lastSeen
* Remove usage of CachedAppConfig, switch implicit param args for PeerDAO to be consistent with rest of code base
* Fix bug in getNodeURIFromBitcoind(), disconnect from bitcoind side in PeerManagerTest
* Add println to see why still fialing
* Add PeerConnection.getLocalAddress, add parameter localAddressBitcoinS to NodeTestUtil.getNodeURIFromBitcoind() to make sure we are getting the correct URI
* Empty commit to run CI
* Get dependencies resolving, get tor module compiling
* Get everything compiling with pekko
* Rework configs/logging to use pekko namespace
* Rename AkkaUtil -> PekkoUtil, BitcoinSAkkaAsyncTest -> BitcoinSPekkoAsyncTest
* Move away from suredbits provided peers by default
* Remove setting bitcoin-s.node.use-default-peers
* Don't allow peer to stay connected if it doesn't support compact filters
* Move disconnection logic into managePeerAfterInitialization()
* Remove reconnect() when we have no other peers, send getaddr message after we know we are keeping the peer connection
* Remove hasCf flag check, revert log
* Reduce inactivity-timeout to 5 minutes by default, shuffle peers in PeerFinder beforing pushing onto stack
* Add logic to disconnect AttemptToConnect peers after addr mesage is received
* Create PeerFinder.queryForPeerConnections(), call it directly from PeerManager on health checks rather than restarting PeerFinder
* scalafmt
* Move more logic into managePeerAfterInitalization()
* Don't set isPersistent for db peers by default
* Add call to queryForPeerConnections() inside of PeerManager.onDisconnect() to try to attempt to more peers when we have no more connections, fix MisBehavingPeer logic to not start sync, starting sync should happen in onDisconnect()
* Revert logback-test.xml
* Sort peers we are attempting to connect to by lastSeen parameter
* Refactor DoneSyncing.toHeaderSync() to return Option[HeaderSync] to represent the case where we don't have a peer to sync with
* scalafmt
* Remove duplicate PeerFinder.buildPeerData()
* Fix bug in getFilterSyncMarkerFromStopBlockHeader where we were previously querying for children rather than the block hashes at the given height for building the FilterSyncMarker for getcfilter request. Also introduce delay in sending getcfheader because of https://github.com/bitcoin/bitcoin/issues/27085
* Only fallback to reorg scenario if we find no headers at height + 1
* Remove the best filter's block header from the candidate headers in reorg scenarios
Refactor ReConnectionTest to use NodeTestUtil.awaitConnectionCount()
Refactor more of codebase to use NodeTestUtil.awaitConnectionCount()
Refactor PeerManagerTest to use NodeTestUtil.awaitConnectionCount()
Refactor more nodeTest to use NodeTestUtil.awaitConnectionCount()
use bitcoinds.size for expectedConnectionCount
* Conslidate PeerFinder.start() logic into peerConnectionScheduler, add bitcoins-s.node.try-peers-start-delay config settig to indicate how long until we start attempting to connect to peers in PeerFinder
* Cleanup
* Revert logback-test.xml
* Add documentation
* Empty commit to run CI
* Rework NodeAppConfig.peers to return Vector[Peer] rather than Vector[String]
* Add higher priority to paramPeers
* Fix bug when requesting FilterSyncMarker for filter headers outside of our in memory blockchain's range
* Rework buildNHeaders to be faster, move it to ChainUnitTest
* Rework NodeTestUtil to use a specific bestBlockHash, this is useful in reorg situations
Use param in reorg test, modify scaladoc
WIP
* Cleanup
* Try to fix usage of stopHashBE
* Cleanup
* WIP: Fix getCompactFilterStartHeight()
* Revert logback-test.xml
* Fix bug with isFiltersSynced() in reorg situations
* scalafmt, fix compile
* Fix another bug with isFiltersSynced()
* Fix compile
* Add ChainApi.getBestChainTips()
* Implement BitcoindRpcClient.getBestChainTips()
* Revert NodeTestUtil
* Use ChainApi.getBestChainTips() throughout codebase rather than blockHeaderDAO.getBestChainTips()
* Rework ChainApi.nextBlockHeaderBatchRange() to take stopHash parameter, get chainTest/test passing
* WIP: Refactor ChainApi.nextFilterHeaderBatchRange()
* Finish ChainApi.nextFilterHeaderBatchRange() refactor, get all tests passing except reorg related tests in nodeTest
* Get NeutrinoNodeTest reorg test case working
* Improve flaky test
* Cleanup
* Switch sync check to bitcoinds(1)
* Empty commit to run CI
* Implement batchSize tests in ChainHandlerTest
* Rework ChainHandlerTest to not assume we have the genesis filter header / filter inserted into the database already
* Cleanup println
* Fix bug with nextFilterHeaderBatchRange() wrt to startHeightOpt parameter
* Fix off by one bug with compact filter sync
* Add check for connectionCount
* Add longer timeout
* scalafmt
* WIP: Implement WalletCallbackStreamManager
* Implement stopping of WalletCallbackStreamManager in WalletAppConfig
* WIP: DLCWalletCallbackStreamManager
* Refactor DLCWalletCallbacks to be a trait
* Integrate DLCWalletCallbackStreamManager into WebsocketUtil
* Use java.util.concurrent.atomic.AtomicBoolean rather than monix
* Remove logger param from dlc callbacks
* fix docs
* Call super.stop() in DLCappConfig
* Empty commit to run CI
* Try to debug
* Empty commit to run CI
* Revert things