* Move NodeState back to node module
* Refactor peerWithServicesDataMap into NodeState
* More usage of state.peerDataMap in stream
* Fix log message
* Fix compile
* Move PeerFinder into NodeState
* WIP: Move PeerFinder init into NeutrinoNode.start()
* Get things mostly working again after rebase
* Fix bug in handling of headers message where we wouldn't transition to DoneSyncing if a peer sent us 0 headers
* Move SendToPeer into stream
* scalafmt
* Empty commit to run CI
* Re-add DataMessageHandlerTest
* Renable disconnecting portion of NeutrinoNodeTest
* Empty commit to run CI
* Remove disconnection part of test again
* Empty commit to re-run CI
* Empty commit to re-run CI
* Fix bug where number needed to be interpreted as a UInt32 rather than Int32 by the ScriptInterpreter in the case of OP_CSV
* Add static test vector, fix another occurrence of bug
* Get ChainApi.nextBlockHeaderBatchRange() tests passing
* Get all tests passing in chainTest/test
* Get all tests passing
* Add BlockHeaderDAO.getBlockchainFrom(header,startHeight), use it for filter marker computation
* Add carve out for IBD when syncing filter headers to avoid loading entire block header chain into memory
* Cleanup
* Fix inconsistencies between ChainApi.{nextBlockHeaderBatchRange, nextFilterHeaderBatchRange}
* 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
* Dont initiate disconnect logic from bitcoind, its falky for some reason
* Fix bug where we weren't switching sync to another peer on disconnect for the case where we were waiting for disconnection
* Empty commit to run CI
* Empty commit to run CI
* Add NodeShuttingDown
* Add NodeShutdown to NodeStreamMessage, use it in PeerManager.stop()
* Add guard to NeutrinoNode.stop() to see if stop() was called when the isStarted flag is set, if we aren't started don't attempt to destroy the akka stream
* 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()
* Fix another bug with isFiltersSynced()
* Fix compile
* Cleanup uncessary checks
* Empty commit to re-run CI
* Empty commit to re-run CI
* Empty commit to re-run CI
* Rework randomPeerWithServices() to be inside of NodeState, try to move more state into NodeState
* Don't try to sync from peer waitingForDisconnection
* Add PeerWithServices, keep track of ServiceIdentifier in PeerManager and NodeState
* Try to make reorg test more reliable
* Empty commit to run CI
* 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
* Make GossipMessage use PeerManager queue to avoid gossiping messages to peers that are being disconnected
* Remove isIBD check for gossiping getheaders after filter sync is complete
* Add log warning when NodeState has a peer, but peerDataMap doesn't when gossiping messages
* Rework various private methods in DataMessagehandler to return NodeState rather than DataMessageHandler
* Refactor compact filter header handling into private helper method
* Refactor handling of headersmsg in case where the headermsg came from a different peer than our current syncPeer
* Add DEBUG log
* Remove unecessary helper method in PeerFinder
* scalafmt
* Empty commit to re-run CI
* Empty commit to re-run CI
* Empty commit to re-run CI
* Empty commit to run CI
* Empty commit to re-run CI
* Rework ConnectionGraph.stop() to return Future[Done] that represents the stream being completed
* Empty commit to re-run CI
* Fix bug in handleStreamComplete()
* Revert log levels
* Empty commit to run CI
* Remove calls to PeerData.stop() inside of PeerManager.onDisconnect(), now call PeerConnection.disconnect() when stream is complete
* Empty commit to re-run CI
* Empty commit to re-run CI
* Empty commit to re-run CI
* Empty commit to re-run CI
* Make PeerFinder.removePeer() return Option[PeerData]
* Move socks5 greeting into Socks5Connection.socks5Handler() so each individual uage doesn't have to roll its own greeting
* Implement socks5Handler() to return a materialized stream
Get something working
Cleanup
* Remove connection parameter
* Add scaladoc
* Pull queue, PeerFinder into NeutrinoNode and out of PeerManager
* Remove ControlMessageHandler param from PeerData
* Make ControlMessageHandle.handleControlPayload() take PeerMessageSenderApi as a param instead of just a Peer
* move construction of akka stream from PeerManager to NeutrinoNode
* Move inactivity checks out of PeerManager and into NeutrinoNode
* Move queue initialization into NeutrinoNode
* cleanup
* Set NeutrinoNode.isStarted to true when NeutrinoNode.start() is called
* Empty commit to re-run CI
* Modify FilterSync.toString()
* scalafmt
* Fix bug where we weren't checking if connection is timed out on activity checks
* Empty commit to run CI
* reset log level
* Reset PeerConnection.connectionGraphOpt = None when connection is disconnected
* Move resetting connectionGraphOpt into PeerConnection.disconnect()
* Call PeerData.stop() inside of PeerManager.onDisconnect()
* Empty commit to run CI
* Empty commit to re-run CI