* Refactor TransactionProcessing.processTransaction() to use BlockHashWithConfs
Create WalletUtil.getBlockHashWithConfs(), use it in various places through the codebase
* Fix docs
* 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
* 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
* Implement unit tests for key expression fidelity to user input for hardened paths
* Create HardenedType, rework BIP32Node to take Option[HardenedType] as a parameter
* Fix docs
* 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
* 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()
* 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
* 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
* First attempt at implementing inactivityChecks()
* Move lastParsedMessage logic into PeerMessageSender
* Add bitcoin-s.node.inactivity-timeout config option
* implement unit test
* Fix CommonSettings
* scalafmt
* scalafmt
* Rename lastSuccessfulParsedMsg -> lastSuccessfulParsedMsgOpt
* make sure we disconnect in the case the stream terminates with an error
* Reduce log level
* Remove support for v19 of bitcoind
* Remove downloading v19 bitcoind inside of bitcoind-rpc.sbt
* Clean up docs
* Move unit tests in BitcoindV19RpcClientTest into other test files so we don't remove them, these rpcs are supported in future versions of bitcoind
* Break versioning on V19 of bitcoind rpc client in chain handler, use BitcoindRpcClient with V19BlockFilterRpc
* Make NodeTestWithCachedBitcoindNoP2pBlockFilters for test case with unsupported peers
* Fix docs
* Empty commit
* Empty commit
* Turn logging off again
* Add OrderedSchnorrSignatures, use it in OracleAttestment, propagate it threw the codebase
* Small cleanups
* Add SortedVecFactory
* Fix test case with out of order nonces
* Fix bug where no exception was thrown if the acceptor did not have enough money
* Revert ContractInfo.max definition, fix bug in acceptDLCOffer
* Fix incorrect usages of ContractInfo.max
* Refactor ContractInfo.max -> ContractInfo.maxOfferorPayout
* Fix dlc.md
* Fix Tor hidden service config
* default the target list to an empty list
* Scala 2.12 compatibility
* update docs
* Fix typo
Co-authored-by: Chris Stewart <stewart.chris1234@gmail.com>
* add header sync validation
* fix docs, minor fixes
* Refactor to us InvalidBlockHeader ChainException, also refactor recovery to private helper method
* changes from comments
Co-authored-by: Chris Stewart <stewart.chris1234@gmail.com>
* Implement isinitialblockdownload flag in databaes
* Change to IsInitialBlockDownload to be less confusing
* Fix missing refactors, add ChainApi.isIBD()
* Implement logic for ChainApi.isIBD(), add configuration flag to toggle whether to emit websocket events while IBD is ongoing or not, add isinitialblockdownload field to getinfo endpoint
* Remove confusing ChainApi.isIBD() that didn't accurately account for the case where IBD wasn't set in the database
* Fix bug around emitting the websocket events
* Add some documentation
* Move MockChainQueryApi/NodeApi out of BaseWalletTest
* refactor BitcoinSServerMain.start() to return WalletHolder
* Add walletConfig to WalletWithBitcoind
* Move findOutputsBeingSpent into WalletApi
* Add WalletApi.clearAllAddresses(), HDWalletApi.{findAccount, getnewaddress(account)}
* Add HDWalletApi.fundRawTransaction() with an account as parameter
* Add WalletApi.findByScriptPubKey()
* Fix lots of tests in WalletIntegrationTest
* Create WalletApi.processOurTransaction()
* Get things compiling
* Fix tag integration test
* Refactor AnyDLCHDWalletApi -> DLCNeutrinoHDWalletApi
* Fix docs
* Get postgres tests passing locally
* Move initBalance map before calling callback in CallBackUtilTest
* Get compile working, rename to destroyOnlyWalletWithBitcoindCached
* Fix docs
* Fix missing destroyWalletAppConfig
* Fix scalafmt
* Fix bug in dlcWalletTest where wallet db thread pools weren't being shutdown after unit test completes
* Empty commit
* Move MockChainQueryApi/NodeApi out of BaseWalletTest
* fix docs
* Move wallet configurations out of BaseWalletTest
* Move helper methods out of BitcoinSFixture trait into companion object to simplify the hierarchy
* Refactor usage of WalletWithBitcoind to allow parameterization of the BitcoindRpcClient type
* Implement rescan with akka streams
Get basic stream working with rescan
Fix bug where we weren't using rescan specific threadpool
Implement killswitch for rescan
* WIP: Expose promise to allow external completion of rescan stream
* Rework RescanStarted.RescanStarted to contain a promise to complete the stream early, and a future that represents the completed streams materialized value
* Comment cleanup
* Fix compile errors, remove killswitch
* Fix 2.12.x compile
* Introduce ActorSystem into wallet, refactor rescans to use that ActorSystem
* Fix import
* Fix bug where we were prepending instead appending to batched Vector
* Propogate RescanState upwards into WalletRoutes
* Refactor fetching of filters to be a Flow
* Add `sync` JSON field to the `getinfo` endpoint output
* improve test coverage
* update docs
* rename sync flag
* WebSocket notifications
* fix unit tests
* fix unit tests
* increase test timout