* Rework DataMessageHandler to consider syncing filterheaders if we receive a headers message with 0 block headers
* scalafmt
* Remove syncfilter job
* Cleanup
* Reduce received headers log to DEBUG
* Rework SyncNodeState.toString()
* Call PeerManager.startFilterSync() in DataMessageHandler
* Don't test MTP in unrelated test
* 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
* Refactor syncHelper() to return SyncNodeState rather than Unit
* Add FilterOrFilterHeaderSync, rework various methods in PeerManager to return Option[FilterOrFilterHeaderSyncState] to indicate if we are syncing rather than Future[Unit]
* Don't use getPeerMessageSender() if we can use syncPeerMessageSender()
* Fix case where syncpeer and new peer are different when creating a filter sync job
* Adjust createFilterSyncJob() return type, throw exception when we try to sync but PeerManager is not started
* Refactor to use SyncNodeState.{toFilterHeaderSync,toFilterSync}
* Cleanup comments
* Reduce reliance of PeerManager._peerDataMap in favor of NodeState.peerDataMap
* Fix bug where we weren't removing peers from NodeState
* Remove invariants
* Empty commit to run CI
* Empty commit to re-run CI
* 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
* Use NodeCallbackStreamManager when calling NodeCallbacks constructors to avoid dropping messages
* Fix handling of CallBackHandler.empty and names
* Empty commit to re-run CI
* Empty commit to re-run CI
* 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
* Fix bug where we weren't removing peer from NodeRunningState.waitingForDisconnection
* Empty commit to re-run CI
* Remove _peerDataMap.remove(i.peer)
* Empty commit to re-run CI
* Replace state even if client.stop() results in a failed Future
* Remove duplicate disconnect() call
* Remove log for case where we haven't set PeerConnection.connectionGraphOpt but call PeerConnection.stop()
* Remove bitcoin-s.node.initialization-timeout
* Add reproducible test case for serialization symmetry failure
* Add check for TaprootKeyPath.isValid() for checking the SchnorrPublicKey is a valid x-cord in the SchnorrDigitalSignature()
* Reset ScalaTest settings
* Get dependencies resolving, get tor module compiling
* Get everything compiling with pekko
* Rework configs/logging to use pekko namespace
* Rename AkkaUtil -> PekkoUtil, BitcoinSAkkaAsyncTest -> BitcoinSPekkoAsyncTest