Commit Graph

372 Commits

Author SHA1 Message Date
Chris Stewart
d1618a2277
Add unit test for RescanState to test recursive rescans correctly (#5786) 2024-11-26 11:13:06 -06:00
Chris Stewart
d8ad023254
wallet: Implement taproot keypath handling in the wallet (#5772) 2024-11-20 11:16:27 -06:00
Chris Stewart
67bb3ceabd
2024 10 31 taproot signing (#5767)
* core: Implement TaprootKeyPath signing

* core: Rebase, remove isDummySignature

* Empty commit to run CI
2024-11-18 09:43:29 -06:00
Chris Stewart
80be2f5989
2024 11 15 partialsig typeparam (#5770)
* Add DigitalSignature type param to PartialSignature

* Remove isDummySignature
2024-11-18 09:15:33 -06:00
Chris Stewart
bb0e40f05b
2024 11 16 rm isdummysig (#5771)
* WIP: Remove isDummySignature

* Add ECDigitalSignature.LOW_R_SIZE, use it in ECDigitalSignature.dummyLowR

* Regenerated dlc_test.json and dlc_tx_test.json to add hash type to dummy ecdsa signatures in static test vectors

* Regenerated dlc_test.json and dlc_tx_test.json to add hash type to dummy ecdsa signatures in static test vectors

* Fix InputInfoTest maxWitnessLengths checks to be >=

* Fix docs
2024-11-17 07:45:24 -06:00
Chris Stewart
fc4802d4b0
core: Implement BIP86 (#5768)
* core: Implement BIP86

* Fix HDUtil.getXprivVersion()

* Fix WalletUnitTest
2024-11-14 11:16:25 -06:00
Chris Stewart
cccaa582bd
Add Sign.{schnorrSign(),schnorrSignWithNonce()} to Sign interface (#5754)
* Add Sign.{schnorrSign(),schnorrSignWithNonce} to Sign interface

* Add schnorrSignWithHashType()
2024-11-13 10:42:45 -06:00
Chris Stewart
17f965fd45
2024 11 09 schnorrsig hashtype (#5764)
* Add SchnorrDigitalSignature.hashTypeOpt, add DigitalSignature.{hashTypeOpt,appendHashType}

* Remove TaprootKeyPath.hashTypeOpt param
2024-11-09 12:52:45 -06:00
Chris Stewart
4e8d5ecc7f
Add Sign.{signWithHashType(),signLowRWithHashType} (#5757)
* Add Sign.{signWithHashType(),signLowRWithHashType}, integrate it throughout the codebase

* Remove deprecated SignerUtils.doSign()
2024-11-07 09:07:41 -06:00
Chris Stewart
e69e1e5ad1
2024 10 31 digitalsignature (#5752)
* Add DigitalSignature, extend it with ECDigitaSignature,SchnorrDigitalSignature

* WIP: Remove EmptyDigitalSignature case object in favor of val

* Fix byte representation of ECDigitalSignature.emptyDigitalSignature

* Simplify names to ECDigitalSignature.{empty, dummy, dummyLowR}

* Fix docs
2024-11-01 11:46:26 -05:00
Chris Stewart
5187eee42a
core: Terminate rescan early when RescanStarted.stop() is called rather than wait for the rescan to complete (#5749)
Add checks if recursiveRescanP is completed before attempting to fail the Future

Fix potential deadlock in RescanStarted.stop(), add RescanState test

Add unit test to make sure we propagate exceptions correctly

Move RescanStateTest to jvm only

Link completeRescanEarlyP and blocksMatchedF together in RescanStateTest

Revert DLCWalletLoaderApi.scala
2024-10-30 16:47:39 -05:00
Chris Stewart
29f10d046c
Turn on -Xlint (#5728)
Get entire codebase compiling

Fix DLCDAO

Revert .jvmopts

Finish rebase
2024-10-24 06:59:50 -05:00
Chris Stewart
e419b18d9c
2024 10 23 merkle vector (#5734)
* Rework MerkleBlock/PartialMerkleTree data structures to use Vector

* Fix base case for Merkle.build()
2024-10-23 16:14:33 -05:00
Chris Stewart
07f17cfedf
Rework Block and Transaction data structures to use Vector rather than Seq (#5733) 2024-10-23 14:27:07 -05:00
Chris Stewart
dca2146647
2024 10 19 rm generic btree (#5725)
* Remove BinaryTree.scala

* Enable -Xlint:type-parameter-shadow

* Remove implicit usage in BinaryTreeDoubleSha256Digest
2024-10-19 15:13:01 -05:00
Chris Stewart
ab6d3f5cb7
Pull over simple syntax changes for scala3 libraries (#5719)
* Pull over simple syntax changes for {cryptTest,coreTest,testkitCore,appCommons} from #5713

* Fix case analysis in Picklers.scala
2024-10-17 13:00:33 -05:00
Chris Stewart
41fab3dfd2
2024 08 07 createnewaccount rpc (#5638)
* 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
2024-08-13 10:32:03 -05:00
Chris Stewart
654d4086b9
2024 05 08 scala3 core (#5580)
* 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/
2024-05-10 11:10:45 -05:00
Chris Stewart
4f288a12c0
2024 05 02 intellij compile (#5562)
* Get things compiling again with default intellij build

* Cleanup compile of coreTestJVM so we don't have warnings that cause failures in intellij's build
2024-05-02 13:42:36 -05:00
Chris Stewart
7ef6086673
Implement bitcoind RPC 26.x (#5550)
* 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
2024-04-27 14:51:45 -05:00
Scala Steward
afddf73c48
Update scalafmt-core to 3.8.1 (#5501)
* 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>
2024-04-20 19:55:49 -05:00
Chris Stewart
e143792fb9
2024 04 16 bitcoindrpc descriptor (#5530)
* 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
2024-04-18 11:46:33 -05:00
Chris Stewart
a6d93622f8
2024 04 16 descriptor fidelity (#5529)
* 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
2024-04-17 18:35:33 -05:00
Chris Stewart
0fa3be37dd
2024 04 08 Descriptors (#5525)
* 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
2024-04-15 19:09:46 -05:00
Chris Stewart
2536fd3138
TapscriptTree, TapBranch, TapLeaf (#5520)
* 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
2024-04-12 11:16:14 -05:00
Chris Stewart
99c1292ddc
Add xor operator as NumberType.{^,xor()} (#5500)
* Add xor operator as NumberType.{^,xor()}

* Cleanup

* Consolidate number test suites

* Fix missing asserts
2024-03-28 15:21:59 -05:00
Chris Stewart
3ed78b5270
Upgrade to scala 2.13.13, fix compiler errors (#5428) 2024-02-27 10:21:39 -06:00
Chris Stewart
1dff918848
2023 02 21 pekko (#5413)
* Get dependencies resolving, get tor module compiling

* Get everything compiling with pekko

* Rework configs/logging to use pekko namespace

* Rename AkkaUtil -> PekkoUtil, BitcoinSAkkaAsyncTest -> BitcoinSPekkoAsyncTest
2024-02-22 10:26:21 -06:00
benthecarman
195cfbd273
Fix handling invoice with minimal encoding of feature bits (#5405) 2024-02-19 08:37:18 -06:00
Chris Stewart
d641c3da55
2024 01 25 Cache txid (#5374)
* 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
2024-01-27 10:57:33 -06:00
Chris Stewart
be1ec842c2
Fix bug in classifying things as MultiSigSPK that do not have enough public keys in the Script (#5371)
* 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
2024-01-24 15:32:08 -06:00
Chris Stewart
a66925dba0
Fix bug where IndexOutOfBoundsException was occuring when parsing a script with only OP_CMS (#5370) 2024-01-24 11:42:21 -06:00
Chris Stewart
fd09724f48
2024 01 23 Validate we have maxSigs number of public keys in MultiSignatureScriptPubKey (#5369)
* Add test case for tx for 109c38

* Check that we have maxSigs' public keys in OP_CMS.isValidAsm()

* Fix val names
2024-01-23 16:43:23 -06:00
Chris Stewart
0f95a1f7bb
Fix bounds checking for MultiSignatureScriptPubKey.maxSigsRequired (#5365) 2024-01-21 09:17:24 -06:00
Chris Stewart
73785706d8
2024 01 20 Fix bug in parsing OP_CLTV and OP_CSV (#5363)
* 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'
2024-01-20 17:44:08 -06:00
Chris Stewart
618e1ca2d2
Fix bug in script parsing logic where we weren't checking if a ScriptNumber was negative for a MultiSignatureScriptPubKey (#5362) 2024-01-20 15:07:38 -06:00
Chris Stewart
421970dcf5
2024 01 11 bip68 bip112 txversion bug (#5346)
* 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
2024-01-12 06:44:18 -06:00
Chris Stewart
ba8a0bf75a
2023 07 17 coretest script refactor (#5150)
* Refactor coreTest script test cases to consolidate

* Refactor blockchain tests in coreTest

* Refactor transaction tests in coreTest

* Refactor address tests in coreTest

* Fix missing asserts

* Fix missing asserts
2023-07-17 12:15:47 -05:00
Chris Stewart
aa8da307b7
Remove batchAndParallelExecute test case (#5122)
* Remove batchAndParallelExecute test case

* scalafmt
2023-06-29 08:24:38 -05:00
Chris Stewart
1d82ed04a7
2023 06 18 implement tcp connection using akka streams (#5111)
* WIP: Try to move byte streaming/parsing of p2p messages out of P2PClient

* WIP2: Work on killing the actor, replace it with a steram

* Get basic ability to send/receive version message working

* Transition PeerMessageReceiverState to Initializing inside of PeerMessagesender.connect()

* Refactor things out of PeerMessageSender.connect(), add some flow logs

* Get NeutrinoNodeTest be able to sync passing

* Fix some bugs, create ConnectionGraph helper class

* Use killswitch rather than Source.maybe to disconnect peer

* WIP: Debug

* Switch halfClose to false on Tcp.outgoingConnection() to not keep lingering connections

* Delete P2PClientActorTest

* Delete all P2PClient stuff

* Attempt implementing reconnection logic in PeerMessageSender

* remove supervisor

* Empty commit to re-run CI

* Small cleanups

* Implement sendResponseTimeout()

* Restore logback-test.xml

* Add callback to log error message on reconnect

* Increase queueSize/maxConcurrentOffers size
2023-06-24 07:53:44 -05:00
Chris Stewart
ebe98959ed
Upgrade to scalac 2.13.11 (#5097)
* Upgrade to scalac 2.13.11

* Fix compile issues with scalac 2.13.11
2023-06-08 10:27:39 -05:00
Chris Stewart
dc0e3645d0
2023 03 24 is tip stale (#5024)
* WIP

* Fix test

* Add more tests for stale header

* remove uncessary comments
2023-03-26 08:20:27 -05:00
benthecarman
5e6cb0d514
Fix MilliSatoshis.toSatoshis for large values (#5016) 2023-03-20 09:26:32 -05:00
benthecarman
cc8d327ea5
Support bip32 paths with 'h' instead of an apostrophe (#4881) 2022-11-12 12:49:38 -06:00
Chris Stewart
92613709aa
Add OrderedTLVPoints as this is an invariant in the codebase in DLCPayoutCurve (#4874) 2022-11-02 17:20:55 -05:00
Chris Stewart
e9b4c779fa
Upgrade scalajs to 1.10.1 (#4464)
* Upgrade scalajs to 1.10.1

* Upgrade to scalajs to 1.11.0

* Try to re-order order tests are run in to avoid scoverage bug with scalajs

* remove duplicate run of asyncUtilsTestJS/test
2022-11-01 18:15:44 -05:00
benthecarman
5111bccc5e
Add test for another tx that broke lnd/btcd (#4868) 2022-11-01 09:35:42 -05:00
benthecarman
8431b697a8
Add test for parsing super large transaction (#4849) 2022-10-17 16:08:14 -05:00
Chris Stewart
e8ebcf55cd
Fix bug where signatures were out of order from what was posted in the announcement (#4809) 2022-09-30 14:00:14 -05:00
Chris Stewart
9c506b639f
Add OrderedSchnorrSignatures, use it in OracleAttestment (#4803)
* Add OrderedSchnorrSignatures, use it in OracleAttestment, propagate it threw the codebase

* Small cleanups

* Add SortedVecFactory

* Fix test case with out of order nonces
2022-09-26 19:35:04 -05:00