Commit graph

343 commits

Author SHA1 Message Date
Chris Stewart
b638c6837e
Move english word list to be represented by a Vector in memory (#2287)
* Move english word list to be represented by a Vector in memory

* rename to EnglishWordsBip39
2020-11-23 10:27:22 -06:00
Chris Stewart
2de17bb4e4
2020 11 13 issue 2258 (#2260)
* Introduce ChainHandlerCached which behaves like the old ChainHandler. Now Chainhandler.getBestBlockHeader() will read headers from the database

* Remove ChainHandler.blockchains field, now it's only available in ChainHandlerCached

* De-futurify ChainHandler.fromDatabase()

* Adjust logging

* Patch test case

* Use BlockHeaderDAO.chainTips when getting best header rather thean BlockHeaderDAO.getBlockchains(). Implement a helper method ChainHandler.toChainHandlerCached()

* Fix chain.md,wallet.md

* Make ChainHandler.getBestBlockHeader() consider time of header if chainwork is the same. Make test cases less strict on what header is the best header when both chainwork and time are the same on the eader

* Only execute callbacks on headers that are going to be created in the database, not all headers passed into ChainHandler.processHeadersWithChains()

* Turn up log level again

* Small optimizations, check if we have seen a header before before processing it in ChainHandler.processHeadersWithChains(). Fix FilterSyncMarker.toString(). Use ChainHandlerCached in Node

* Remove ChainHandlerCached in appServer, re-add it in Node.scala
2020-11-17 06:19:07 -06:00
Chris Stewart
18dfbed8c9
Add helper OracleEventTLVV0.maturation method (#2267) 2020-11-17 06:18:32 -06:00
Ben Carman
15bb935769
Use same config option for key manager projects (#2252)
* Use same config option for key manager projects

* Use BIP39KeyManager.initialize
2020-11-11 12:18:02 -06:00
Ben Carman
cc42849864
Use New Oracle TLVs in DLCOracle (#2162)
* Update Oracle to use new TLVs

* Rename things to use new names, scaladoc, small clean ups

* Add descomposition tests, docs, sign numbers outside of range
2020-11-10 06:08:43 -06:00
Ben Carman
ce9fbb0807
Analyze PSBT function (#2240)
* Analyze PSBT function

* Add to tests

* Add docs

* Add more functions

* Fix compile issues

* Fix compile issue
2020-11-09 15:15:32 -06:00
Ben Carman
e4194220c1
Update Oracle TLVs (#2185)
* Update Oracle TLVs

* Change string size to be BigSizeUInt

* Move nonces to oracle event tlv

* Introduced EventDescriptor tests and NumericEventDescriptor methods to query possible outcome data

* Added contains function

* Added tests for containsToPrecision

* Remove EventDescriptor.outcomes and other related fields

* remove unused formatNum method

* Address code review from Ben

* Move oracle pub key to announcement

Co-authored-by: nkohen <nadavk25@gmail.com>
Co-authored-by: christewart <stewart.chris1234@gmail.com>
2020-11-07 16:26:21 -06:00
Ben Carman
641b2236d6
Let wallet sign PSBTs (#2236)
* Let wallet sign PSBTs

* Add example to docs

* Add logs and test case
2020-11-07 09:25:59 -06:00
Ben Carman
42e9cbb1f2
Make aesPassword option for wallet config (#2217)
* Make aesPassword option for wallet config

* Add to docs

* Make AesPassword optional

* Small touchups

* Fix for oracle server

* Fix docs

* Increase code coverage
2020-11-06 07:00:18 -06:00
Ben Carman
c08379b236
Decode PSBT function (#2237)
* Decode PSBT function

* Add test
2020-11-06 06:56:46 -06:00
Chris Stewart
8a148357d5
2020 11 02 cleanup (#2233)
* Cleanup a bunch of imports in test

* Use @nowarn annotation for testing things that are deprecated

* Fix base58 test

* Cleanup crypto-test

* Use scala collection compat dependency to get access to the @nowarn annotation on scala 2.12.x

* Rework more scala 2.13.x compile failures in chain-test and key-manager-test

* Optimize imports for entire project

* Fix nits
2020-11-03 11:07:04 -06:00
Nadav Kohen
7178cb7136
Fixed P2SH(Segwit) bug and brought down DLC-used PSBT functionality (#2140)
* Fixed P2SH(Segwit) bug and allowed redeem scripts when calling addFinalizedScriptWitnessToInput

* Add test

Co-authored-by: Ben Carman <benthecarman@live.com>
2020-10-24 18:06:46 -05:00
Ben Carman
ddf39057fe
Only Validate PSBT BIP143 vulnerability on signing (#2204) 2020-10-22 13:05:58 -05:00
Ben Carman
02c10fd89e
Pretty Fee Rate toStrings (#2210) 2020-10-22 07:38:24 -05:00
Ben Carman
c275a8c8aa
Make tx bytes functions lazy vals (#2180) 2020-10-14 14:18:24 -05:00
Ben Carman
c5be81d5e2
Add address descriptors (#2176) 2020-10-13 06:14:11 -05:00
Nadav Kohen
2e1b4d0491
P2SHTxSigComponent constructor now detects witness data (#2169) 2020-10-09 22:34:50 -05:00
Ben Carman
f55e83ae21
Oracle Announcement TLVs (#2149)
* Oracle Announcement TLV

* Add pubkey, event uri & descriptor

* TLVParentFactory, EnumEventDescriptorTLV

* Add trailing V0 to types

* Make names match spec pr

* Add range descriptor

* Add num outcomes to enum descriptor
2020-10-08 22:47:40 -05:00
Ben Carman
7bbc89fb33
Optimize GetHeadersMessage.fromBytes (#2131) 2020-10-06 06:35:29 -05:00
Chris Stewart
6ce7d3d701
Upgrade to scalac 2.13.3 (#2115) 2020-10-04 07:42:44 -05:00
Nadav Kohen
c7e5c634f3
Brought down ecdsa adaptor signatures implemented in scala from the dlc-crypto branch (#2034) 2020-10-02 10:43:59 -05:00
Ben Carman
4ac93660d2
Add BIP45 Multisig Purpose (#2103)
* Add BIP45 Multisig Purpose

* Fix multisig purpose, add tests
2020-10-02 10:43:25 -05:00
Ben Carman
f69678d74b
Allow any HDCoinType (#2097) 2020-10-02 10:42:59 -05:00
Ben Carman
ead4eaa147
Make bitcoind extend chain api (#2087) 2020-10-02 06:19:56 -05:00
Ben Carman
f7b97ba36e
Use SubtractFeeFromOutputsFinalizer when sending full utxos (#2072) 2020-10-01 17:32:24 -05:00
Ben Carman
d158f4fcb0
Calculate HRP from network param instead of the inverse (#2079)
* Calculate HRP from network param instead of the inverse

* make hrp lazy

* Fix imports
2020-09-29 17:00:46 -05:00
Ben Carman
c2315082d8
Create ExtPrivateKeyHardened (#2073) 2020-09-29 06:35:41 -05:00
Ben Carman
b59a17def0
Add ability to fully spend utxos (#2063)
* Let RawTxSigner dummy sign transactions

* Add ability to fully spend utxos

* Fix NeutrinoNodeWithWalletTest

* Fix test, simplify call
2020-09-27 08:16:26 -05:00
Ben Carman
856f88f0dd
Initial SigNet support (#2057) 2020-09-25 12:29:13 -05:00
Ben Carman
d5a1c8f39b
Put fee in funding error message (#2050) 2020-09-23 12:17:23 -05:00
Ben Carman
52ef7d6980
Change requesting filters log to use big endian hashes (#2048) 2020-09-23 12:02:34 -05:00
Nadav Kohen
cc3d5ea639
Fixed PSBT.verifyFinalizedInput (#2040)
* Fixed PSBT.verifyFinalizedInput to allow NonWitnessUTXO to be set with a WitnessUTXO

* Added unit test

* Fixed bug where verifyFinalizedInput was also broken for P2SH(Segwit)
2020-09-21 17:01:27 -05:00
Ben Carman
7c4822f67a
Have RawTxSigner use low R signing (#1722) 2020-09-21 11:30:15 -05:00
Ben Carman
36b45790cf
Merge pull request #2029
* Add more processing blocks tests

* Add immature coinbase txo state

* Test balance, add doc
2020-09-20 10:39:31 -05:00
Ben Carman
8361ff6e08
Merge pull request #2019
* Refactor logging to only use grizzled slf4j

* Fix docs

* test travis config change
2020-09-19 14:09:12 -05:00
Chris Stewart
98cb6f78c7
2020 09 18 btchrp stringfactory (#2031)
* Implement StringFactory on the companion object for BtcHumanReadablePart

* Make Bech32.checkHrpvalidity() take in a string rather than a Bech32HumanReadablePart as a parameter, now we check validity _just_ according to the bech32 standard, not specific applications light lightning / bitcoin

* Add missing override

* Overload Bech32.checkHrpValidity() to pass in a 'StringFactory' in cases where you know what HRP you expect

* Do nadav's suggestion on Bech32.splitToHrpAndData() -- allow a factory to be passed in parameterized with the type you expect
2020-09-18 13:45:32 -05:00
Chris Stewart
2f6ff1d955
Make ChainApi.getHeadersBetween() be inclusive on the 'from' parameter (#2009)
* Make ChainApi.getHeadersBetween() be inclusive on the 'from' parameter

* Use ben's suggestion of comparing hashes
2020-09-12 11:13:03 -05:00
Chris Stewart
449e205b8b
Introduce 'FilterSyncMarker' to ChainApi, make it clearier what exact… (#2003)
* Introduce 'FilterSyncMarker' to ChainApi, make it clearier what exactly the (Int,DoubleSha256Digest) tuple is returned from ChainApi.nextBlockHeaderRange()

* Fix doc

* Add scaladoc to FilterSyncMarker

* Rebase onto master, fix conflicts to use FilterSyncMarker
2020-09-11 13:48:40 -05:00
Chris Stewart
72cfd4bd4c
Make BlockHeader, BlockHeaderDb have better toStrings (#2007)
* Make BlockHeader, BlockHeaderDb have better toStrings

* Address ben's code review
2020-09-11 13:46:26 -05:00
Chris Stewart
7b4b4a290f
Resolve issues with reorgs and syncing filters (#1969)
* Pull over test cases, WIP

* Rework ChainHandler.nextBlockHeaderRange() to use hashes rather than heights to very integrity of header chain, add test case

* Modify test case to make sure we are generating the 'heaviest chain work' header as first in the tuple that is used in reorg test cases

* Refactor to helper method called 'findNextHeader()' to make things simpler

* Add scaladoc to ChainHandler.findNextHeader()

* WIP

* Fix bugs in ChainApi.nextBlockHeaderRange(), now return (startHeight,stopHash) rather than (stopHeight,stopHash)

* Get chain handler tests passing, remove genesis filter header/fitler from default chain project fixture, make it a specialized one to have genesis filter header/filter in the database. Use that specialized fixture in ChainHandlerTest for now

* FilterSync work without having the genesis filter and filter header inserted into the database

* fix bug in DataMessageHandler where we were using sendNextGetCompactFilterHeadersCommand rather than using peerMsgSender.sendGetCompactFilterHeadersMessage

* Refactor ChainHandler.findNextHeader() to centralize where chains are fetched

* Address ben's code review
2020-09-11 12:41:25 -05:00
Ben Carman
24dfa7200a
Create FeeUnitFactory and functions to calculate tx fee rates (#1990)
* Create FeeUnitFactory and functions to calculate tx fee rates

* Remove useless override, use factory

* doc

* Scaladocs + use vals

* Fix scaleFactor being set as default value
2020-09-10 06:45:25 -05:00
Chris Stewart
ff878c532b
Use randomized fee rates for wallet tests (#1977)
Co-authored-by: Ben Carman <benthecarman@live.com>
2020-09-09 16:46:33 -05:00
Ben Carman
a7c06a11cb
Add chainHash to ChainParams (#1972)
* Add chainHash to ChainParams

* Rename to genesisHash
2020-09-04 12:15:06 -05:00
Chris Stewart
893d036ab6
Rename ChainApi.nextHeaderBatchRange -> ChainApi.nextBlockHeaderBatchrnage (#1957) 2020-09-02 13:19:20 -05:00
Ben Carman
45c11f25ec
Fix max by for getBlockCount (#1951)
* Fix max by for getBlockCount

* Add helper func to package
2020-09-01 19:38:15 -05:00
Chris Stewart
5909a57f09
Make sure both filter ehaders and filters are empty before sending fi… (#1936)
* Make sure both filter ehaders and filters are empty before sending first filterheader sync message

* Address nit
2020-08-31 06:32:01 -05:00
Ben Carman
4104e0c973
Fix rescans that are larger than the batch size (#1916)
* Fix rescans that are larger than the batch size

* Add test
2020-08-27 14:09:25 -05:00
Chris Stewart
be891596b6
Improve logging in DataMessageHandler (#1922)
* Improve logging in DataMessageHandler

* Make hashes in logs big endian

* One more big endian conversion i forgot
2020-08-27 12:39:45 -05:00
Chris Stewart
a9ad927a9c
Apply string factory to a bunch of easy things (#1891)
* Apply string factory to a bunch of easy things

* Refactor HDPath, ExtKey, and LnTagPrefix to use StringFactory

* Implemen StringFactory on LnHumanReadablePart, ScriptType, ServiceIdentifier

* Implement StringFactory on AesCrypt, NodeUri, AddressTag, PSBT, TxoState

* Fix failing tests, fix website compile

* Apply StringFactory to all ScriptOperations, ChannelState, Script Parsing
2020-08-25 10:48:37 -05:00
Ben Carman
ef9bd4165d
Add new hash preimage PSBTInput types (#1893) 2020-08-25 10:23:21 -05:00