Commit graph

671 commits

Author SHA1 Message Date
Nadav Kohen
c67b2978bf 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
aedc03bdfe Remove Sign trait from ECPublicKey, move signing functionality into ECPrivateKey (#962) 2019-12-17 15:15:20 -06:00
Chris Stewart
713d76ae67 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
rorp
2c53a39fd1 Compute confirmations dynamically (#938)
* Compute confirmations dynamically
2019-12-14 12:06:22 -08:00
Ben Carman
e3884b2224 Implement CurrencyUnit as Numeric (#932)
* Implement CurrencyUnit as Numberic

* Simplify expressions

* Implict ordering

* Move implicit to package

* Fix compiler issue for older version

* scalafmt
2019-12-11 15:34:34 -06:00
rorp
4acd1fbba9 Add a reference to ChainQueryApi to the wallet (#936)
* Add reference to ChainQueryApi to wallet
2019-12-10 14:22:33 -08:00
Ben Carman
a61e1e5068 Add little endian functionality to Network Element and Factory (#931) 2019-12-10 08:46:39 -06:00
Ben Carman
ea15938087 BIP32Path Factory and new tests (#928) 2019-12-10 07:34:00 -06:00
rorp
af70acb03b ChainQueryApi (#926)
* ChainQueryApi

* cleanup
2019-12-09 09:39:35 -06:00
rorp
cbd038b514 Neutrino Wallet: OnCompactFilter handler (#905)
* Neutrino Wallet: OnCompactFilter handler
2019-12-06 13:10:33 -08:00
Ben Carman
5206353a4a Bitcoind v19 RPC (#910)
* bitcoind v19 new RPC calls and tests (#863)

* bitcoind v19 new RPC calls and tests

* Code review changes

* Review part 2

* Rename variable to be more descriptive

* Explanitory comment

* Ignore broken test cases

* Add missing signing functions

* Add test to check avoid_reuse flag is on (#870)

* Add test to check avoid_reuse flag is on

* Add test to make sure flags weren't set

* bitcoind v19 Update mempool RPCs and tests (#868)

* Update mempool RPC calls to bitcoind v19 compatibility

* Typo fix

* Add parameter name to calls

* Fix remaining rpc calls

* Formatting

* scaladoc for param

* Change param to correct type

* Clarify on scaladoc

* Add missing fees parmater to mempool rpcs (#875)

* Add weight field to mempool entries after v19 (#876)

* Move DescriptorRpc to be able to be used by future versions of bitcoind (#878)

* Add window_final_block_height to GetChainTxStatsResult (#880)

* Add passphrase argument to createwallet for later versions (#883)

* Add passphrase argument to createwallet for later versions

* Scaladoc + empty passphrase requirement

* Error message

* Add new services names parameter to P2P rpcs (#874)

* Add new services names parameter to P2P rpcs

* Add ServiceIdentifier Reads

* Add fallback case

* Address review

* Change to Try

* Move PsbtRpc to be able to be used by future versions of bitcoind (#877)

* Move PsbtRpc to be able to be used by future versions of bitcoind

* Add test

* Address comment

* Enable bloom filters for v19

* Enable bip 61 for tests

* Change to official binaries

* Force v18 for Spv Tests

* Remove unused config line
2019-12-04 07:44:44 -06:00
Ben Carman
6a300ff7f3 Add descriptors as toString for script pubkeys (#902) 2019-12-02 09:05:41 -06:00
Nadav Kohen
29e0c9cd6a 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
1578e2642f Nicer Satoshis.apply (#899)
* Replaced Satoshis(Int64(_)) with Satoshis(_)

* Fixed SignerTest
2019-11-26 14:43:14 -06:00
rorp
d6f1e5c0ba 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
14d3878d01 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
40d2efd4aa 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
911541cf52 Made ScriptPubKey and ScriptSignature toStrings nicer (#859) 2019-11-18 11:12:38 -06:00
Nadav Kohen
fb2188b7d8 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
ab00fffffc Conditional Signing Tests (#865)
* Added ConditionalScriptPubKeys to CreditingTxGen so that we are actually testing Conditional signing now

* Responded to code review

* Renamed scriptPubKeyTooBig => redeemScriptTooBig
2019-11-15 14:26:21 -06:00
Nadav Kohen
fad72c66d5 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
b80a46ca9a Nested OP_IF ScriptPubKey and signing (#857)
* Enabled nested conditional parsing

* Added nested conditionals to tests

* Responded to code review
2019-11-13 15:44:35 -06:00
Nadav Kohen
609f7e6ad6 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
f2081dfa46 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
4a3677c009 RawScriptPubKey (#843)
* Introduced RawScriptPubKey type

* Responded to code review
2019-10-31 18:34:48 -05:00
Nadav Kohen
40ebc8e53e 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
c1d90c2305 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
cwaldron97
96476e56b3 (WIP)Changes to client start() (#748)
* changes to client

fixed daemon flag

yielding bitcoindRPCclient

versioned

more implementation

update

fixed yield error and some documentation

docs + compiler error fix

updated

responding to code review

missing bracket

fixed compiler warnings

fixed compiler warning

* scalafmt
2019-10-30 14:59:35 -05:00
Nadav Kohen
1b51ad689f Signer UTXOSpendingInfo refactor (#830)
* Refactored Signer interface to use TxSigComponent and UTXOSpendingInfo

Fixed all the broken things

Replaced TxSigComponent with unsigned Transaction in Signer interface to remove illegal states

* Added p2sh throw case in Signer
2019-10-25 15:40:33 -05:00
Nadav Kohen
e924650ca1 Created LockTimeSigner and delegated LockTimeScriptSignature signing from other places to it (#798)
Remove redundant work on P2WPKH signing

Added scaladoc

Added to OverridesForNestedSigning for LockTime scripts nested in SHs
2019-10-25 06:15:55 -05:00
Nadav Kohen
3960fbd0d1 P2WSH Signer! (#797)
* Created P2WSHSigner and removed P2WSHWitnessSPKV0 case from P2PK and P2PKH signers

* Moved P2WSH MultiSig from MultiSigSigner to P2WSHSigner

* Cleaned up P2WSH case of BitcoinTxBuilder.signAndAddInput to exclusively use P2WSHSigner

* Replaced Option[(TxSigComponent, ScriptPubKey)] with an ADT

* Added signing with overrides to super Signer class to simplify delegation code

* Added Scaladocs for OverridesForNestedSigning ADT

* Made naming better for OverridesForNestedSigning ADT and added scaladocs
2019-10-23 15:29:52 -05:00
Nadav Kohen
ec7bd7f51d Removed the ScriptProgram companion object (#811) 2019-10-23 10:12:41 -05:00
Chris Stewart
62bb36928e 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
Ben Carman
9d16d723ae 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
f475808dbd Script Program apply method refactor part 7 (#760) (#804) 2019-10-13 09:17:28 -05:00
Ben Carman
e7ce9cd157 Script Program apply method refactor part 6 (#760) (#802) 2019-10-13 09:09:56 -05:00
Ben Carman
3e0c624d2f Script Program apply method refactor part 4 (#760) (#800) 2019-10-12 11:14:56 -05:00
Ben Carman
7641c2b73f 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
Ben Carman
76f5810078 Script Program apply method refactor part 2 (#760) (#794)
* Script Program apply method refactor part 2 (#760)

* Remove method
2019-10-12 08:18:36 -05:00
Ben Carman
c1011cd8a7 Script Program apply method refactor part 1 (#760) (#793)
* Script Program apply method refactor part 1 (#760)

* Simplification of line

* Typo fix
2019-10-12 08:14:34 -05:00
rorp
82e6c36493 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
8e40c0e9d0 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
Nadav Kohen
0b2728f338 2019 10 01 script interpreter cleanup (#772)
* Removed all IntelliJ warnings and did some very minor and contained cleanup

* Refactored ScriptInterpreter.run into nicer pieces

* Replaced all calls to isInstanceOf with matches
2019-10-08 10:14:00 -05:00
Chris Stewart
780ac75bf0 Run scalafmt, i forgot to run on #783 (#788) 2019-10-07 08:16:28 -05:00
Chris Stewart
00eafd9970 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
Nadav Kohen
0611f27c25 Removed the sealed trait and private case class Impl pattern from ScriptPrograms (#759) 2019-09-26 07:31:54 -05:00
rorp
74a44d1c4d 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
67ead0bc7e 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
f6ed565c14 Refactor sbt and make Eclair tests download bitcoind (#727) 2019-08-30 15:11:52 -05:00
Torkel Rogstad
5e9b26bbab Remove untyped CryptoUtil methods (#722)
Types are our friends:-)
2019-08-27 06:32:50 -05:00