* WIP
* Fix sql queries, fix up unit tests that were implicitly using wallet.processOurTransaction()
* Remove default parameter markAsReserved=false on FundTransactionHandling.fundRawTransactionInternal()
* Fix submodule
* Add test to make sure if we fail to reserve utxos, we roll the database transaction back
* Add some clarifying comments
* address ben's code review for failures in finishSend()
* Scalafmt
* Add some logs to indicate how long startup time is
* Parallelize submodule configuration startup between modules dependent on tor and modules not dependent on tor
* Start tor dependent modules in parallel too
* Make Wallet.initialize() use DBIOAction
* Scalafmt
* Make Wallet.initialize() use .transasctionally
* Add CRUDAction.{updateAllAction, updateAction}
* Move updateDLCOracleSigs into DLCActionBuilder and make it an action
* Update DLCTransactionProcessing.calculateAndSetOutcome() to use actions
* WIP
* Finish implementing {CRUD,CRUDAction}.createAllAction()
* Try to make database inserts more atomic
* Consolidate more database calls in DLCWallet.initDLCForAccept()
* WIP2
* More refactor and using actions
* Add DLCIdDaoUtilNoPK for querying when dlcId is not a primary key
* Add DLCDataManagement.deleteDLC()
* make DLCWalletApi.createDLCOffer() use actions
* Rework DLCWallet.createNewDLCAccept() to use DBIOAction
* Use actions in DLCWallet.registerDLCAccept() a bit
* Create DLCActionBuilder, move actions to there
* Move more actions into ActionBuilder
* Implement transactionally on database writes for actions
* Implement MasterXPubDAO
* Fix nits
* Add postgres migrations
* Make sure tables are getting cleaned on postgres
* Get dlcOracleTest test cases passing with validation of the master xpub in the database on startup
* Fix test case
* Fix more tests
* Move things around so keymanager does not need to depend on dbCommons
* Get all walletTest passing
* Add unit test for wallet startup
* Fix rebase
* Get all sqlite tests passing
* Get postgres test cases passing locally
* Remove early call to walletAppConfig.start() in node project
* Make KeyManagerAppConfig.externalEntropy private
* Fix MasterXpubDAO.existsOneXpub()
* Fix bug in migrating database for oralce project
* Encapsulate initialization of DLCOracle.start() method
* Use internal WalletAppConfig.kmConf rather than passing in custom key manager parameters
* Add KeyManagerAppConfig.defaultAccountType
* Get all tests passing besides TrezorAddressTest
* Get TrezorAddressTest passing with provided entropy
* Add unit test to make sure we can always derive the seed
* Get docs compiling
* Fix dlcWalletTest test cases
* Add more test cases to keymanager
* Add the new configuration to the example configuration
* Add more test cases
* Remove coverage on 2.12 as it isn't accurate
* Rework DLCOracleAppConfig.start() to call kmConf.start() so the oracle can use entropy provided via bitcoin-s.conf
* Write unit test for SpendingInfoDAO.upsert(), match on outpoint rather than id
* Add more explicit error message for failing to clear utxos and addresses
* Get both bundle and app server logging working, oracleServer does not compile
* Get everythig compiling
* Fix bug where bundle wouldn't use command line param rpc port for ConsoleCli
* Add unit tests to make sure we are translating to config properly
* Fix bug where app config wasn't re-created after parsing bundle args
* Fix datadir resolution in BundleGUI
* Implement force-recalc-chainwork
* fix bug
* Try not using tilde on windows
* Try to print datadir on CI
* Try using stackoverflow answer
* Try escaping windows path
* Take ben's suggestion of using AppConfig.safePathToString
* Just check the paths are equal
* Fix nullpointerexceptions on startup
* Fix bug where bitcoin-s-bundle.conf was not being read
* Remove usage of --conf flag in bundle when starting backend server
* Fix compile
* Rename usedDir -> networkDir
* Fix passing in datadir
* Add mark as spent optimization to batch writes rather than write inside the method
* Scaladoc refactor
* Refactor received spendingInfoDbs to be cached outside of processTransactionImpl()
* Implement processBlockCachedUtxos() to improve performance
* Fix typo
* parallelize matching compact filters as this is a bottleneck during IBD
* Use FutureUtil.makeAsync() to actually make it async
* Small optimization, move asmVec outside of lambda so it doesn't need to be re-computed everytime
* Make TransactionProcessing.processTransactionImpl() a bit more parallel, fetch all relevant received and spent txos in parallel
* More refactors, make sure return types are Vector rather than Seq to make sure we don't have any pathlogical surprises with scala collections
* Fix type annoation to be Vector
* Fix remaining usage of Seq in TransactionProcessing
* Fix pattern match on Vector on 2.12.x
* Change input to Vector rather than Seq in processSpentUtxos()
* Removed ExecutionContext from ECKey
* Refactored ECPublicKey to remove compression state and introduced ECPublicKeyBytes to handle cases where serialization of input is important
* Fixed the rest of bitcoin-s so that it passes all tests
* Made all ECKeys into case classes
* Successfully added isFullyValid invariant to ECPublicKey!
* Fixed docs
* Added scaladocs and fixed a RpcPsbtResult bug
* Reject private keys of length < 32 and fix WIF parsing bug
Turn off logging again
Try to move things around even more to make sure zmq is started
Turn logging level down to ERROR to hopefully get some meaningful output
Adjust both valdiation & ChainHandler to be ERROR level logging
switch zmqpubrawblock to be the port we know is free
Reduce logging to WARN
Bump bitcoind max retries to 120
Fix rebase
Revert logging
Remove some noisy logs
Restore logs to trace level
Add explicit tag
* Fix bug introduced in PR 2597, we need to explicitly call WalletAppConfig.stop() now rather than transitively calling it via Wallet.stop()
* Fix calls to wallet.stop() -> wallet.walletAppConfig.stop() in BitcoindBlockPolling,BitcoindBackend. Also add some explicit type annotations
* Move wallet scheuler into WalletAppConfig, use scheduler.shutdownNow() so we actually shutdown the scheduler rather than wait for all queued tasks to finish executing before shutting down
* Fix typo
* Move rescan thread pool in to walletAppConfig, shut it down on wallet shutdown
* Fix compile
* Add invariant to spendingInfoDb to that requires if the spendinginfodb is in a TxoState.spentStates, the SpendingInfoDb.spendingTxIdOpt is defined
* Remove unused SpendingInfoDAO.updateTxoState()
* Fix bug that doesn't revert TxoState to TxoState.BroadcastSpent when overwriting the spendingTxId
* Remove unecessary transition from TxoState.Reserved -> TxoState.PendingConfirmationsReceived inside of processSpentUtxos()
* Update TransactionProcessing.markAsSpent() to treat TxoState.PendingConfirmationsSpent and TxoState.ConfirmedSpent the same way
* Remove unecessary comment
* Fix missing database shutdown on WalletAppConfig.stop()
* Cleanup BitcoindBlockPollingTest
* Cleanup ProcessBlockTest and all tests that use CachedBitcoind
* Cleanup BitcoindBackendTest
* Cache rescan thread pool rather than creating a new one everytime
* Add invariant to spendingInfoDb to that requires if the spendinginfodb is in a TxoState.spentStates, the SpendingInfoDb.spendingTxIdOpt is defined
* Remove unused SpendingInfoDAO.updateTxoState()
* Tighten up TxoState -> ReceivedState types we are using in the wallet. The ensures we are talking specific class of states (receiving a txo) rather than accounting for the case of spending and receiving since there is different information required for the spending states
* Add TxoState.ImmatureCoinbase to ReceivedStates