* 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
* Add invariant to spendingInfoDb to that requires if the spendinginfodb is in a TxoState.spentStates, the SpendingInfoDb.spendingTxIdOpt is defined
* Remove unused SpendingInfoDAO.updateTxoState()
* Remove comment
* Make TxoState and explicit parameter for test methods. Most test methods depend on a sample utxo state, so make the caller of the method specify what state they want the txo to be in
* Fix github actions config
* Fix RoutesSpec test
* Wallet Rebroadcast Logic
* Use wallet scheduler for address queue rather than it's own thread
Co-authored-by: Chris Stewart <stewart.chris1234@gmail.com>
* Bump default
Co-authored-by: Chris Stewart <stewart.chris1234@gmail.com>
* Move blockhash to tx table from spending info table
* Add test, fix spending tx id col name
* Scaladocs, add test
* Add more unit test
* Make id not comparable in process tx test
* Fix tests
* attempt to fix
* Add mempool comment to scaladoc
* Deparallelize process inputs & outputs
* Reduce usage of .findAll() (doesn't scale for large dbs). Now pass in the specific things we are searching for
* Add timestamps for checking how long it takes to processBlock()