* Moved dlc data structures from commons to core
* Renamed DLC payout curve classes
* Split OutcomeValuePoint up into an ADT
* Added utility for computing Schnorr multiple-signature points
* Replaced tuples in RoundingIntervals with types
* Replaced tuples in DLCPayoutCurve with Indexed
* Fixed a compile bug
* Pulled down work from adaptor-dlc onto master
* Reverted some accidental deletions
* Removed unused import
* Added scaladocs
* Responded to Ben's review
* Added some scaladocs and invariants
* Responded to chris' review
* Responded to more review
* Added some comments
* Add Wallet State Descriptors
* Sync blocks while offline w/ bitcoind backend
* Add to WalletDbManagement
* Update db management test
* Respond to review
* Rename function
* 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
* Added signing with entropy to the JNI and implemented low R signing
* Added check for determinism of low R signing
* Cleaned up test
* Implemented signing with entropy in Bouncy Castle
* Added docs for signing with entropy
* Fixed things after rebase
* De-parallelized signLowR and added scaladoc warnings to signWithEntropy
* Update scalafmt-core to 2.6.0
* Upgrade scalafmt, fix all formatting errors
* Scalafmt on 2.12
* fix test
* More fixes
Co-authored-by: Ben Carman <benthecarman@live.com>
* Pulled down crypto things from dlc branch including: Schnorr data structures, Schnorr Bouncy Castle implementation, FieldElement, and tests for these things
* Call fromValidHex in CryptoUtil
* Add more optimizations, MultSignatureScriptPubKey.isMultiSignatureScriptPubKey() fails fast if it's not a valid multisig spk, also use more caching inside of Number's (UInt64, UInt32, etc)
* Fix shortChannelidTest
* Cache popular UInt64 numbers that are used in ScriptPubKey's. This reduces allocations which reduces memory usage
* Attempt to optimize block tests more to avoid timeouts
* Fix asm.tail bug
* Make parseRedeemScript just return a ScriptPubKey rather than a Try[ScriptPubKey]
* Make encoding a UInt64 to hex more efficient
* Cache Transaction.bytesSize so we don't need to serialize everything again to estimate the byteSize
* Refactor CryptoBytesUtil.addPadding() and it's usage in UInt64
* Use StringBuilder.append() rather than StringBuilder.addAll() which is not supported in scala 2.11 & 2.12
* Address nadav's code review
* Implemented parseDERLax signature parsing and bumped bouncy castle version to most recent
* implemented using iterators
* Factored out common functionality and added comments, it is readable now! Deleted C-like version in place of this one after property based tests showed them to be equivalent
* Made compatible with scala 2.12
* Make compatible with scala 2.11
* Added tests for lax DER signatures
* Refactored Transaction
Created RawTxBuilder
Created RawTxFinalizer as layer on top of RawTxBuilder
Introduced RawTxSigner and replaced TxBuilder!
Deleted TxBuilder!
* fixed things after rebase
* Made RawTxBuilder compatible with older versions of scala
* Began responding to review
* Made Finalizer take a Builder rather than the other way around
* Added composition for finalizers
* Ran scalafmt
* Updated txbuilder example documentation
* Moved tests from old TxBuilderTest files to relevant new test files
* Added scaladocs
* Make ScriptOperationFactory subclasses use a val to cache operaetions rather than operations
* Make ScriptOperation's use a Vector rather than Seq. Seq is a trait that can sometimes be backed by a List which can have some O(n) behavior
* Remove BlockTest benchamarking test case
* Put popular opcodes at beginning of ScriptOperations.operations for an optimization
* Remove Try() allocation on ECPublicKey.isFullyValid()
* Fix how CompactSizeUInt was serialized to be more efficient, move isMultiSig() and isLocktimeSPK() to be inline so we don't evaluate it unless we absolutely need to
* Use Map inside of ScriptOperation.fromByte()
* Update map to look up script operation rather than iterating
* Added crypto project and decoupled BitcoinSLogger from NetworkElement
Decoupled BitcoinSLogger from Factory
Moved NetworkElement into crypto project
Moved Factory and BitcoinSUtil (renamed to BytesUtil) to crypto project
Moved MaskedToString to crypto project
Added BytesUtil to imports and cleaned up CryptoUtil.recoverPoint
Moved the rest of crypto stuff to the crypto project
Moved crypto tests to crypto-test project
* Added documentation for crypto project