* 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
* Pull over scala3 compatible code for crypto/ project from https://github.com/bitcoin-s/bitcoin-s/pull/3497
* Pull over scala3 compatible code for core/ project from https://github.com/bitcoin-s/bitcoin-s/pull/3497
* Add -Xsource:3 to core/
* Get coreJVM/compile working
* restore files lost from master when checking out core/ from 2021-06-30
* Get entire codebase compiling
* Get bitcoindRpcTest/test:compile working
* Restore P2SHDescriptor constructor
* scalafmt
* Fix UInt8.toByte
* Get all merkle block tests working
* Fix GCS bug
* Add -Xsource:3 to cryptoTest/
* Upgrade clightning to 24.02.2
* Fix download hash
* Fix version
* Change CLightningInfo.fees_collected_msat from String -> Long
* Fix channels parsing, add support for p2tr address type and remove nested-segwit for clightning
* Revert version
* amount_msats -> amount_msat
* Fix more json parsing
* Try commenting out asserts for midChannelsA being completed in CLightningChannelOpenerTest
* scalafmt
* msatoshi -> amount_msat
* Change assertion to check assert the channel is not active in CLightningChannelOpenerTest
* Fix CLightningPayResult
* Ignore test case that uses sendtoaddress until we upgrade to psbt v2
* Fix open, audit commands for v0.10.0
* Get all unit tests passing
* Add logger.error() to try to debug channel state
* Try adding delay to see if dual funding process can complete before we generate blocks
* scalafmt
* Try bumping number of blocks generated
* Try disabling dual funding
* Cleanup
* Get build started for 26.1
* Start introducing v26 data structures
* Switch BitcoindVersion.newest = V26
* Fix GetTxOutSetInfoResult to use hash_serialized_3
* Fix WalletRpcTest
* Refactor PeerInfoResponse to add transport_protocol_type and session_id fields in v25
* Add ServiceIdentifier.NODE_P2P_V2, add support for v2transport to addnode, add default config setting for bitcoind to have v2transport=1 in test framework, add unit test to make sure we can establish a v2 connection
* Remove V20AssortedRpc
* Add loadtxoutset
* Implement getchainstates
* Add getprioritisedtransactions
* Add getaddrmaninfo
* Add importmempool
* Cleanup println
* Implement downloading of bitcoind 25.2
* Add aarch64 hash
* Update x86 macos hash, windows hash
* WIP: scanblocks RPC
* Get in progress scanblocks state working
* Get scanblocks start request working
* Fix BitcoindRpcTestUtil.signRawTransaction
* Implement scanblocks abort
* Remove println
* Switch newest version of bitcoind to v25
* Fix BitcoindV25RpcClient.version
* move decodescript test to WalletRpcTest, rework decodescript test to use descriptors, fix LoadWalletResult
* Empty commit to run CI
* sendrawtransaction maxburnamount param
* Modify testmempoolaccept RPC return type to have two new fields for fee information
* Add test for base too
* Update scalafmt-core to 3.8.1
* Update .scalafmt.conf settings to be factory default settings
* Fix typo
* scalafmt
* Empty commit to re-run CI
* Revert some scalafmt back to original scalafmt.conf
---------
Co-authored-by: Chris Stewart <stewart.chris1234@gmail.com>
* Remove support for v21 of bitcoind
* WIP: Remove deprecated rpcs wit legacy wallets
* WIP: Work up to importdescriptor
* Get low-r test case passing
* Simplify test case
* Remove BitcoindV21RpcClientTest and move test cases to BitcoindV24RpcClientTest
* Remove RpcTransactionRpcTest that only works on legacy wallet
* Fix MempoolRpcTest
* Delete MultisigRpcTest that depends on legacy wallet
* Get WalletRpcTest passing, ignore keypoolrefill test case for now until https://github.com/bitcoin/bitcoin/issues/29924 is resolved
* Integrate Descriptor class into 'getdescriptorinfo' RPC
* WIP: Invalid checksum that is valid according to bitcoin core
* Add descriptor.py in comments
* Get deriveaddresses RPC working with descriptors
* Parse descriptors in DescriptorsResult to Descriptor data type
* 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
* Add DescriptorType, OutputDescriptor
* Get unit test passing for a descriptor with a xpub and bip32 path
* WIP: Implement checksum algo
* WIP: Implement polyMod
* Get checksum unit test case passing
* Get basic serialization test case passing
* Revert Bech32.scala
* WIP: Implement KeyExpression
* WIP: KeyOriginExpression
* Get basic KeyExpression test case passing
* Get basic unit tests workign for parsing Private/Public key descriptor expressions
* Add examples
* Get all key expression unit tests passing
* Get negative test vectors passing
* WIP: Get P2WPKHDescriptor tests working
* Get all serizliation tests passing for non-derivation path BIP382 descrioptors
* Get BIP382 derivation test cases passing
* Implement BIP382 failure test cases
* Get BIP381 test vectors passing
* Split key expressions into SingleKeyExpression,MultisigKeyExpression
* WIP: Multisig descriptors
* Remove custom building of scripts now that we have #5502
* Get BIP383 test vectors passing
* Get BIP384 test vectors passing
* Fix bug in runFailTest()
* Add RawSPKScriptExpression, use it with P2WSHExpression to ensure underlying spk is a RawScriptPubKey
* Get all negative test vectors working after fixing bug in runFailTest()
* Implement BIP385 raw() test vectors, skip addr() descriptor
* Get everything working up to dealing with taproot pubkey types
* Begin working on type hierarchy for different pubkeys
* Get things to the point of needing a custom pubkey type
* Get things compiling w/ PubKeyTypeExpression
* Get tr(WIF) example working
* WIP: Key reworking type hierachy to be PublicKey type specific
* WIP: Taproot helpers
* Get taproot descriptor working with both keypath and single level scriptpath
* Get recursive tapscript tree test vector working
* Implement negative test vectors for BIP386
* Add BIP386 derivation test
* Get extkey tr() descriptor test working
* Rename InternalPublicKeyExpression -> RawPublicXOnlyPublicKeyExpression
* Fix keyOrigin for tr() descriptors
* Cleanup comments
* Add comments
* Move leafVersion TapscriptControlBlock -> TapLeaf
* Add taproot wallet test vectors
* Get parsing logic working
* Get first test case passing
* Add TapLeaf
* Get test cases working with two TapLeaf
* Add TapscriptTree as the top level type for a recursive data structure for TapscriptPath's
* Remove control block parsing for now until we actually test control blocks
* 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
* 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
* Add LargeTransactionTest
* Remove unused ByteArrayOutputStream
* Add block test case for 00000000ce4a4666cce2205d760d37b5579cdedf3ac9e4295557e8ac962cde55
* Cache txId to avoid re-computing txids which can take alot of resources
* Cache WitnessTransaction.toBaseTx, remove println
* remove BlockTest as it didn't capture the bug
* Remove lazy evaluation of bytes in {Transaction, TransactionInput, TransactionOutput}
* use ByteVector.concat in BytesUtil.writeCmpctSizeUInt()
* mv cmpct.bytes into ByteVector.concat()
* Remove uncessary lazy byteSize
* Add test case for 3a8dd04bc1f8179d0b85c8e1a1e89d058833ae64a9a8c3681da3ca329297beb1
* Fix bug where we were classifying things are MultSigScriptPubKey that did not have maxSigs' number of public keys in the Script
* Remove redundant comment
* Get test case setup for tx 1c1f50e
* Fix bug in OP_CHECKLOCKTIMEVERIFY.isValidAsm(), check that the ScriptNumber is lessthan or equal to 5 bytes in size
* Fix bug in OP_CHECKSEQUENCEVERIFY.isValidAsm(), check that the ScriptNumber is lessthan or equal to 5 bytes in size
* Fix bug to check <= rather than <
* Revert Constants.scala, ScriptNumberUtil.scala, remove superflous 'return'
* 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
* 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()
* 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
* 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
* WIP: Implement future chaining for recursive rescans
* Fix deadlock by segregating RescanStarted.doneF into two different methods, one tracking the single pass rescan and one tracking the entire rescan
* scalafmt, add comment
* Fix bug where we were completing Promise twice
* Fix unit test
* Cleanup logs
* Cleanup comment
* Bump timeout
* Empty commit to run CI
* Empty commit to re-run CI
* Empty commit to re-run CI
* Rename PeerMessageSender -> PeerConnection
* WIP: Move gossip methods into PeerManagerApi, keep single peer methods in PeerMessageSenderApi, but remove peer parameter
* PeerData.peerMessaageSender -> PeerData.peerConnection
* Remove DataMessageHandler.queue as it is redundant
* Get most test cases passing in nodeTest
* Fix ReConnectionTest
* Fix NeutrinoNodeWithUncachedBitcoindTest test case
* Rename PeerManager.{randomPeerMsgSender, getPeerMessageSender} -> PeerManager.{randomPeerConnection,getPeerConnection}
* Refactor PeerManager.getPeerMessageSender to return the new PeerMessageSender
* Rename param
* scalafmt
* Remove unused method
* Revert onInitialization