Commit graph

130 commits

Author SHA1 Message Date
Chris Stewart
82ef36e2a6
Create MaskedToString, implement it in ECPrivateKey, ExtPrivateKey, M… (#1011)
* Create MaskedToString, implement it in ECPrivateKey, ExtPrivateKey, MnemonicCode

* Add MaskedToString to AesPassword, AesKey, and BIP39Seed

* Add final to MaskedToString.toString() so it can't be overriden
2020-01-07 12:31:13 -06:00
rorp
c738bb3b6d
Support for payment secret and features LN invoice tags (#1012) 2020-01-07 10:27:45 -08:00
Chris Stewart
1ad402ea56
Add more expressive txo states for the wallet (#1001)
* Add more expressive txo states for the wallet

* Rename 'PendingReceived/PendingSpent' -> 'UnconfirmedReceived/UnconfirmedSent'

* Address code review

* Fix posInt implementation to work with older scala versions

* Rename to PendingConfirmationReceived/PendingConfirmationSpent
2020-01-05 18:42:20 -06:00
Ben Carman
34a3efdcf9 Change ScriptPubKey to RawScriptPubKey in ScriptWitness (#975) 2019-12-24 07:45:55 -06:00
Chris Stewart
f280103e47
2019 12 17 sign ext key (#959)
* Create ExtSign, use it on ExtPrivateKey

* Add documentation on how to Sign things with ExtSign

* Add ExtSign.sign for a bip32 path

* Make sign(bytes,path) not return a Future, add documentation

* Address nadav's code review

* Fix mdoc sign.md
2019-12-20 12:47:10 -06:00
Nadav Kohen
74f7f73797 P2PKWithTimeoutSPK (#967)
* Introduced P2PKWithTimeoutSPK

* Responded to review

* Added some testing for cltv and p2pkWithTimeout SPKs

* Responded to more review
2019-12-19 09:48:00 -06:00
Chris Stewart
caf9b7d22c
Add invariant to WitnessTransaction that says inputs.length == witnes… (#954)
* Add invariant to WitnessTransaction that says inputs.length == witnesses.length

* Remove println

* Address code review
2019-12-17 13:42:58 -06:00
Chris Stewart
ade8bea831
2019 12 10 scalatest 3.1.0 (#933)
* Update scalatest to 3.1.0

* Modify code to support scalatest 3.1.0
2019-12-10 09:12:47 -06:00
Ben Carman
971de61004 BIP32Path Factory and new tests (#928) 2019-12-10 07:34:00 -06:00
rorp
a752c5301f
Neutrino Wallet: OnCompactFilter handler (#905)
* Neutrino Wallet: OnCompactFilter handler
2019-12-06 13:10:33 -08:00
Nadav Kohen
d2bdf273fc Timelock bug fix (#920)
* Fix CLTV bug where timestamps using seconds are not allowed in TxBuilder

* Added test for CLTV second timestamp and ran scalafmt

* Fixed another bug

* Fixed bug where calcLockTime was not looking past first CLTV tx
2019-12-06 10:57:56 -06:00
Nadav Kohen
3183f17ce2 BitcoinTxBuilderTest Hang (#901)
* Fix hanging bug in BitcoinTxBuilderTest

* Added forAllAsync to BitcoinSAsyncTest
2019-12-02 13:04:58 -06:00
Nadav Kohen
b89d20e9a8 Moved BitcoinTxBuilder property tests into ScalaTest context, fixed bug where opPushData was marking valid short P2SH scripts as invalid (#900) 2019-11-27 13:51:49 -06:00
Nadav Kohen
15ec7b89b6 Nicer Satoshis.apply (#899)
* Replaced Satoshis(Int64(_)) with Satoshis(_)

* Fixed SignerTest
2019-11-26 14:43:14 -06:00
rorp
804f18f47f Refactor compact filter matching (#838)
* Refactor compact filter matching

* cleanup

* some more changes

* addressed the PR comments

* cleanup

* cleanup
2019-11-26 13:40:19 -06:00
rorp
43ec85af39 Rescan RPC (#854)
* Rescan RPC

* cleanup

* fix optional args

* cleanup

* unit tests

* fix build error

* fix unit tests

* scalaMock

* cleanup

* more unit tests

* some more validation checks
2019-11-21 08:03:32 -06:00
Nadav Kohen
306699ba8a MultiSignatureWithTimeoutScriptPubKey (#867)
* Added MultiSignatureWithTimeoutScriptPubKey

* Renamed If and NotIf to NonStandardIf and NonStandardNotIf and removed multiple representations

* Added MultiSignatureScriptPubKey to CreditingTxGenerators

* Responded to code review

* Fixed UTXOSpendingInfoTest
2019-11-18 15:08:50 -06:00
Nadav Kohen
7fe6604b26 Made ScriptPubKey and ScriptSignature toStrings nicer (#859) 2019-11-18 11:12:38 -06:00
Nadav Kohen
254828e94e OP_NOTIF ScriptPubKey and Signing (#858)
* Implemented OP_NOTIF

* Responded to code review

* Fixed test bug for sampling
2019-11-18 10:45:33 -06:00
Nadav Kohen
dd61f1dd8a Increase some Test Coverage (#866)
* Added ScriptTypeTest

* Added ScriptSignature coverage

* Added Signer test coverage

* Added test coverage for UTXOSpendingInfo

* Responded to code review
2019-11-15 12:21:52 -06:00
Nadav Kohen
d86acfffed ScriptInterpreter Conditional Refactor (#855)
* Redid conditional interpreting without binary trees

* Fixed ControlOperationsInterpreterTest

* Implemented O(1) conditional handling as proposed here https://github.com/bitcoin/bitcoin/pull/16902 because Ben Carman pointed it out

* Added some docs

* Responded to code review
2019-11-08 13:19:53 -06:00
Nadav Kohen
38db570e8f OP_IF Signing (#827)
* Introduced ConditionalScriptPubKey

Some more progress

Added Conditional signing infrastracture, tests do not pass and there are no Conditional tests

Fixed tests!

* Redid calcLockTime and calcSequenceForInputs in TxBuilder (added Conditional support)

* Added ScriptGenerators for Conditional scripts, only one test to go!

* Fixed CLTV(Empty) tests

* Responded to code review

* responded to code review

* ScriptSignature only types Policy-compliant script signatures

* Fixed md doc
2019-11-05 18:48:50 -06:00
Nadav Kohen
3ed4c4aa84 RawScriptPubKey (#843)
* Introduced RawScriptPubKey type

* Responded to code review
2019-10-31 18:34:48 -05:00
Nadav Kohen
20c42795b8 Replace scriptPubKeyToSatisfy with spendingInfoToSatisfy in Signer (#842)
* Replace scriptPubKeyToSatisfy with spendingInfoToSatisfy and made UTXOSpendingInfo ADT nicer

Tightened up types on Signer with a type parameter

Factored out common functionality in Signer

Responded to code review

* More review
2019-10-31 12:17:30 -05:00
Nadav Kohen
ec38acbeb8 GCSTest fix (#845)
* Raised the min p value in GCSTest to avoid large x/2^p values which cause long unary to happen

* Lowered upper bound to 50
2019-10-31 06:21:23 -05:00
Nadav Kohen
310ccbb838 Spending Info ADT use (#840)
* Replaced TxBuilder signAndAddInput match with UTXOSpendingInfo match, tests don't pass

* Fixed tests!
2019-10-30 15:00:41 -05:00
Nadav Kohen
8dc005a586 UTXOSpendingInfo ADT (#834)
* Create an ADT to represent the various types of utxos we can have. Now we have RawScriptUTXOSpendingInfo, SegwitV0NativeUTXOSpendingInfo, P2SHSpendingInfo, P2SHNestedSegwitV0UTXOSpendingInfo. This hopefully can be used in combination with the P2WSHSigner and LockTimeSigner work to make TxBuilder and the Signers more comprehensible

* Added P2SH nested witness invariants and made BitcoinUTXOSpendingInfo backwards compatible, BitcoinTxBuilderSpec has one failing test

* Fixed testing around UTXOSpendingInfo

* Responded to code review
2019-10-25 13:58:36 -05:00
Nadav Kohen
eb78d61c58 Removed the ScriptProgram companion object (#811) 2019-10-23 10:12:41 -05:00
Ben Carman
089bb2bd72 Refactor old test cases to use BitcoinSUnitTest (#814) 2019-10-20 02:35:03 -05:00
Chris Stewart
8184f4ace1
Update script_tests.json, fix bugs that were unveiled with that updat… (#799)
* Update script_tests.json, fix bugs that were unveiled with that update. Specifically around handling negative zero in Script, and cleanstack behavior for segwit scripts. We were not checking for equality at the byte level for negative zero. With cleanstack, we were failing the script, but not failing with the correct error. If you look at interpreter.cpp in bitcoin core, cleanstack check is done before checking if the stacktop is true or false

* Address code review
2019-10-15 09:57:47 -05:00
rorp
140702ad42 Increase test coverage (#810)
* Increase test coverage

* more coverage
2019-10-14 19:54:34 -05:00
Ben Carman
e9c4b10f1c Script Program apply method refactor part 5 (#760) (#801)
* Script Program apply method refactor part 5 (#760)

* Formatting
2019-10-13 13:20:03 -05:00
Ben Carman
cd76bf5455 Script Program apply method refactor part 7 (#760) (#804) 2019-10-13 09:17:28 -05:00
Ben Carman
6d1b3049b5 Script Program apply method refactor part 6 (#760) (#802) 2019-10-13 09:09:56 -05:00
Ben Carman
672446b7a5 Script Program apply method refactor part 3 (#760) (#795)
* Script Program apply method refactor part 3 (#760)

* Remove unsused method

* Documentation

* Fix test case
2019-10-12 11:09:37 -05:00
rorp
3f734a95db Make ChainApi to scan the block filters in order to find matches (#786)
* Make ChainApi to scan the block filters in order to find matches

* performance improvements, unit test

* some parallelization

* addressed comments

* parallelism level

* fix parallelism computation

* Scala 2.11 compatibility

* increased test coverage

* cleanup

* more checks and cleanup

* change ChainApi.getMatchingBlocks signature

* some more changes
2019-10-11 14:19:42 -05:00
Nadav Kohen
7b3e9f747a 2019 10 01 script program cleanup (#791)
* Tightened up types, only allowing ExecutionInProgressScriptPrograms to be executed in Script OPs and having output type that cannot be PreExecutionScriptProgram

* Fixed all tests!

* Replaced all calls to loop and loopOrComplete with a single one at the bottom to retain the tailrec property

* Added a couple docs
2019-10-08 12:28:58 -05:00
Chris Stewart
09ea1fb3cd
Use the fact that network headers specify the number of bytes in the … (#783)
* Use the fact that network headers specify the number of bytes in the payload rather than just parsing from bytes.size, this should allow us to be more precise when parsing NetworkPayloads rather than _hoping_ that bytes.size does not land on pseudo-valid NetworkPayload. This hopefully resolves #782

* Add safety check around HeadersMessage.toString()

* Add invariant to NetworkMessage saying payloadSize in header must be the actual payload size
2019-10-06 09:48:53 -05:00
Chris Stewart
cee1e82d0c
Reduce GCSTest by more, remove unused warnings when using scala console from sbt (#779) 2019-10-03 09:46:43 -05:00
Chris Stewart
029b106cd2
2019 09 28 common test trait (#767)
* Create base traits for async tests called BaseAsyncTest, and then create two subtypes, BitcoinSAsyncTest and BitcoinSAsyncFixtureTest to make it easier to manage resources related to test cases. Now it is easier to shutdown things like an actor system in a structured manner

* Remove two bitcoind tests that don't make sense, 'duration' in the parameter is _really_ an interval (bad naming by usTesting an interval does not make sense inside of TestRpcUtilTest

* Turn log off for ChainAppConfigTest we expect to fail

* Bump timeout for BitcoinSUnitTest, use builtint sbt scalafmtCheck

* Remove hardcoded scalafmt binary

* reduce generator size to attempt to fix #768
2019-09-30 14:55:25 -05:00
rorp
933f0fcfd0 Initial BIP157 support (#695)
* WIP: Initial BIP157 support

* store block hash and hetgh along with its compact filter header

* download and parse block filters

* getcfilters/cfilter

* cfilter table

* rescan full filter chain

* improved rescan performance

* optimize compact headers download

* addressed the PR comments

* split SVP and Neutrino node implementations

* configurable filter batch sizes

* initial filter sync

* addressed comments

* chage filter table's primary key

* fix Golomb filter deserialization

* batch database inserts

* neutrino node test

* fixed node test

* addressed the PR comments

* serializers tests

* cleanup

* fix compilation errors

* fix unit tests

* increase test coverage

* enable NeutrinoNodeTest

* make scalafmt happy

* don't cache experimental binaries

* inclease test coverage

* fix unit tests

* more granular CI tests

* disable NeutrinoNodeTest

* refactor tests

* addressed comments

* test coveage

* fix formatting

* responded to the comments

* some more changes

* fix the build

* test coverage

* revert testnet3 config parameter

* minor changes

* cleanup
2019-09-25 13:18:51 -05:00
Chris Stewart
46681e08d7
2019 09 05 scalafmt update (#735)
* Update scalafmt to 2.0.1

* Scalafmt

In this commit we
1) Reconfigure the .scalafmt.conf file
2) Add a scalafmt binary (same version as specified in conf file)
3) Use said binary on CI to check that everything is formatted correctly

* Ran scalafmt

* Update scalafmt ignore

* Add scalafmt plugin to project/plugins.sbt, run it

* run scalafmt
2019-09-05 20:02:58 -05:00
Torkel Rogstad
68f8132070 Remove untyped CryptoUtil methods (#722)
Types are our friends:-)
2019-08-27 06:32:50 -05:00
Torkel Rogstad
a303818c1e Bump Scala versions (#697)
* Bump Scala versions

Support Scala 2.12.9
and 2.13.0.

To make this easier, we delete the `scripts` project. Everything
that was in here was covered by content on the website. We also
delete the `doc` folder, as that was a remnant from when `scripts`
was called `doc`.

* Crib uPickle akka-http support while we wait for publish

* Fix compiler warnings

* Add note on test logging to contribution guide

* Reduce duplication in Blockchain implementation

* Use Scala 2.12 for website

* Introduce compat package object for collections converters

* Fix Either compiler warnings

* Add sync-chain and create-wallet docs from deleted scripts

* Fix rebase goofup
2019-08-23 13:53:00 -05:00
Torkel Rogstad
227b5239e5
Bump test coverage (#713)
* Bump test coverage

* Lower test coverage requirement for chain
2019-08-23 18:32:55 +02:00
Torkel Rogstad
31642aff44 Add configurable logging to data directory (#640)
* Add logging to data directory

In this commit we add the ability for the node, chain
and wallet projects (+ the server) to log to the users
data directory instead of whatever directory the
binaries was launched from. This is inherently a bit
more complicated than our previous setup, because
we need to read the user directory before we can create
loggers. As a result of this, some files/methods were
moved around, so the relevant app config could be
found in scope.

We also  introduce several logging categories that can be
tuned individually through user configuration. These logggers
are exposed both as traits that give a field `logger`, or
as methods that return the required logger.

* Add datadir configuration to AppConfig

In this commit we add support for AppConfig to pick up
the data directory configuration file. We also add
a section to the contributing guide on how to tune
logging levels.

* Pass data directories explicitly for configuration
2019-08-01 06:01:56 -05:00
cwaldron97
1b3a964027 Killing Joda Dependency (#643)
Remove Joda dependency
2019-07-29 12:22:25 +02:00
Torkel Rogstad
72018bf831 Fix merkle block parsing error 2019-07-19 10:49:34 +02:00
Torkel Rogstad
3be3353aec
Merge pull request #637 from cwaldron97/2019-07-16-remove-bitcoinj-dep
Remove BitcoinJ from dependencies
2019-07-18 11:01:19 +02:00
cwaldron97
20a257aede removed bitcoinj conversions 2019-07-17 15:13:33 -05:00