Commit Graph

51 Commits

Author SHA1 Message Date
Chris Stewart
201e52f32d Integrate big endian hashes, integrate them into the bitcoind-rpc project (#364) 2019-02-28 13:27:06 -06:00
Torkel Rogstad
db5a7254b9 BIP39 support (#353)
* Adds SHA256 hashing of BitVector

* Add BIP39 support
2019-02-28 06:13:37 -06:00
Torkel Rogstad
25fa009b95 Rework Bech32 (#360)
Refactor commonalities between LN and BTC
Add support for RegTest
2019-02-27 15:55:41 -06:00
Nadav Kohen
a0c1ab91b4 testkit refactor (rename and repackage) (#355)
* Refactored testkit to have a package called testkit and renamed AsyncUtil and TestUtil, ran scalafmt

* Updated internal file names list
2019-02-21 10:04:31 -06:00
Chris Stewart
7633bf6179 Add more tests to bump test coverage (#345) 2019-02-19 10:34:23 -06:00
Chris Stewart
2879d9c25c 2019 02 14 fix digital signature bug ln invoice (#337)
* Fix bug of sign issue when serializing r,s ln invoice signatures, we weren't using the proper sign in some rare cases. We always want the BigInteger to be non-negative for r,s

* Fixing initialization problem with EmptyDigitalSignature

* revert default Deps.scala bitcoinsV to published version

* Address code review nits

* remove negative ln currency unit test case
2019-02-16 16:04:31 -06:00
Torkel Rogstad
696e9f4c45 Add BasicArithmetic trait (#329)
* Add BasicArithmetic to MilliSatoshis

* Add BasicArithmetic

* Add LnCurrencyUnit, CurrencyUnit, Number to BasicArithmetic

* Add tests for BasicArithmetic

* Make logger in unit test class protected and annotated

* Use BitcoinSUnitTest class

* Address code review
2019-02-16 15:19:00 -06:00
Chris Stewart
614efece23 Fix initialization problem with LnInvoice and the separator char (#334) 2019-02-14 07:16:15 -06:00
Chris Stewart
50aa66404c Change Factory to an abstract class (#330) 2019-02-07 19:58:39 -06:00
Torkel Rogstad
8a203e881f Fixes conversion bug when sending with Eclair RPC (#318)
* Improved toString for LnCurrencyUnit

* Test for amount equality in RPC send methods

* Fix conversion bug in Eclair RPC client

* Version bump
2019-02-01 09:13:25 -06:00
Torkel Rogstad
9257a53fde Adds feebaseMsat and proportional fees for ChannelResult (#312)
* Adds feebaseMsat and proportional fees for ChannelResult

* Fixes updaterelayfee
2019-01-28 18:11:00 -06:00
Torkel Rogstad
e068382701 findroute RPC call tests/types (#301)
* Improved toString methdos

* Eclair RPC for findroute

* ConfigUtil for getStringOrElse

* Scaladoc

* Version bump

* Typed ChannelDesc a and b fields
2019-01-23 08:45:46 -06:00
Torkel Rogstad
dec5bf0c14 Scaladoc (#296)
* Scaladoc formatting

* Adds sbt-api-mappings plugin
2019-01-21 06:36:39 -06:00
Torkel Rogstad
2b7212905a Tunes scoverage (#303) 2019-01-20 14:57:16 -06:00
Torkel Rogstad
22f8b35700 Scaladoc formatting (#295) 2019-01-10 08:54:57 -06:00
sken
4c7a3731f1 fix uncaught exception in ScriptNumber (#293) 2019-01-09 13:29:59 -06:00
Chris Stewart
268e235b4d Add secp256k1jni readme, start working main project readme, move old readme to core/README.md (#276)
Add documentation for TxBuilder

Try to fix links on core/README.md

add readme badges for bintray

Nits and formatting of README (#23)

ran scalafmt, fixed format in secp readme
2019-01-08 09:29:06 -06:00
Torkel Rogstad
aa65b783cc Scaladoc formatting (#287) 2019-01-08 05:55:33 -06:00
Torkel Rogstad
abcd7c5d6d Fixes some Scaladocs (#286)
* Fixes some Scaladocs

* ran scalafmt

* ran test:scalafmt
2019-01-07 09:23:29 -06:00
Chris Stewart
a50c6c15b3 Add test case (#285)
WIP2

Fix bug where we weren't padding byte boundary on signature data

fix nits, run scalafmt

Address torkel's code review
2019-01-07 07:53:52 -06:00
Chris Stewart
f46e3b1de0 Add 'Script' abstract class, make ScriptSignature and ScriptPubKey extend it. Make underlying data represensation cache asm in ScriptPubKey and ScriptSignature (#246)
Revert bitcoinsV
2019-01-05 18:25:33 -06:00
Chris Stewart
a8e513fd0c Rework TransactionWitness, add more tests for resizing (#267)
Turn down logging again
2018-12-10 10:53:45 -05:00
Chris Stewart
cc2067c88c Remove all old EscrowTimeoutScriptSig/ScriptPubKey and channels stuff, this is obsolete now with the Lightning Network (#265)
run scalafmt
2018-12-09 15:47:57 -05:00
Nadav Kohen
4b8cebf3a4 Added scalafmt and ran it (#264) 2018-12-09 14:43:31 -05:00
Chris Stewart
18986b620d Lightning Network (#256)
* Implementation of LnCurrencyUnit

Fix unary and unneeded comments.

Refactor and change arithmetic to use PicoBitcoins.

Add property based testing for LnCurrencyUnits

Refactor LnCurrencyUnits after code review

Fix case and change LnPolicy to val

Remove division and add Unit tests

* Add additional unit tests and deserialization

* WIP: Implement LnHumanReadablePart (#190)

* Initial Implementation of LnHumanReadablePart

* Add unit tests and improve deserialization from string

* Refactor LnParams and LnHrp. Add requirements for instantiating LnHrp.

* Clean up and re-organize things

Re-working LnHumanReadablePart.fromString

Fix unnecessary pattern match

Removing test case

* Created eclairRpc project (#193)

Added getinfo functionality

Added connect functionality

Added most of the rpcs

Added send and checkpayment functionality

Added updaterelayfee functionality

Fixed compile errors

Ran scalafmt

Added DaemonInstance and start/stop methods

Added TestUtil

Added open test

Fixed typo in allUpdates

Fixed ChannelResult

Add eclair prefix to rpc stuff

open channel unit test passing

Adding instructions to grab default eclair in build

Add zmq config to bitcoin.conf

rename test log files, bump timeouts on connections

Add eclair-rpc README, rework some RpcUtil/TestUtil stuff for async

fixing bug in precious block, addressing code review

Address more code review comments

* Add NodeId, NodeUri, ChannelId (#196)

refactor json serializing methods to SerializerUtil, add more types

* Adding LnCurrencyUnit types to rpc api, fixing bug where eclair tests were not binding to a random port for zmq (#198)

Remove start stuff

* Adding more rpc tests, testing open, payment over channel, and closing of the channel (#199)

Add checkpayment tests

Address code review, create EclairTestUtil.createNodPair

* Two way eclair transactions sanity test (#200)

* Added a test for sending payments in both directions

* Updated travis bitcoin core version

* Initial LnInvoice Implementation (#194)

Start typing some ln invoice stuff

Add support for Fallback Address encoding

Part 1: Breaking out Bech32 specific functions into a util class, don't embed in Bech32Address

re-naming fromBase8ToBase5 -> from8BitTo5bit

Part 1: Breaking out Bech32 specific functions into a util class, don't embed in Bech32Address

rework ln invoices tags

fix more method names in Bech32

Rename ScriptPubKeyTag -> NodeIdTag

All invoice tags tests passing except weird serialization order one

Address code review, add some more comments

rename 'LnInvoiceTags' -> 'LnInvoiceTaggedFields'

create a UInt5 type to represent all of the bech32 data structures

Passing all serialization in the BOLT11 examples

First cut at deserialization

* Adding bitcoin-s types to the eclair-rpc, fixing bug with decoding numbers, refactoring more things (#204)

* Switch bech32 p2wpkh hash from RipdeMd160 -> Sha256Hash160Digest (#206)

* Add testkit project / dependency (#209)

fix core-gen build.sbt name

* add correct dependencies to testkit (#210)

* Get dep name right (#211)

* Add serialization symmetry property for LnInvoice, fixing various bugs in LnInvoice data structures, adding generators for various LnInvoice data structures (#217)

* Reworking AuthCredentials and Instances so that we can read from config files (#218)

add core files that were missing

* Reworking a lot of testkit data structures to be more helpful for testing (#219)

Add missing EclairApi file

remove noisy log

* Rebase onto master, fix testkit compile issues

* Simplify LnCurrencyUnit, add MilliSatoshis, refactor EclairRpc to use… (#226)

* Simplify LnCurrencyUnit, add MilliSatoshis, refactor EclairRpc to use MilliSatoshis

* Add some helper functions around millisatoshis for comparing them to other things

* more tests / helper methods, at generator for millisatoshis

* Fix typo

* Fix comparison operators for millisatoshis, add Writes for MilliSatos… (#227)

* Fix comparison operators for millisatoshis, add Writes for MilliSatoshis in JsonWriters

* re-add comparison operators to LnCurrencyUnit for convinience

* Add millisatoshi reads (#228)

* Updating version of eclair to https://github.com/ACINQ/eclair/releases/download/v0.2-beta8/eclair-node-0.2-beta8-52821b8.jar (#229)

* Derive nodeId from ln invoice signature, move nodeid case class into … (#230)

* Derive nodeId from ln invoice signature, move nodeid case class into the core project

* Add missing assert

* Fix null pointer exception that could occurred during requiring the invoice's signature to valid. This could occurr if a user tried to construct an invoice with an invalid signature (#233)

* Turn down logging / remove logging (#235)

* Cleaned up eclair conf (#237)

* Cleaned up eclair conf

* Added test for bad auth and Reads for LnInvoice

* WIP: rebase onto master with new compiler opts

fix more compiler warnings with testkit

* fix new compiler warnings for scalac 2.12.x on ln (#253)

* fix new compiler warnings for scalac 2.12.x on ln

* fix missing p2wpkhoutput in rawoutput testkit/CreditingTxGen.scala

* First cut at code review for the ln branch (#258)

Fix bug in parsing the LnTagPrefix.CltvExpiry, add properties that check if the NodeIdTag is given explicitly to the invoice

remove dumb invariants

revert version

* 2018 12 4 ln code review rd2 (#259)

* Amend EclairRpc test case for confirming that channel is closed

* Add final check to test case to make sure the bitcoind wallet received funds when closing channel

* Address Torkel's code review

* Addresses some review on #256 (#260)

* Docstring cleanup, small nits

* Refactors some redudant data, nested if => switch

* Fixes SO error by reversing remowal of `new`

* Fixes a couple of bugs

* map.get instead of list.find

* StringBuilder in HRP

* Rework NetworkParam to LnParam

* Cleanup

* Renames file to match trait/object name

* Docstring cleanup, pure formatting

* Simplifies a few expressions, doesn't change semantics

* Adds overloaded findRoute method instead of Either[NodeId, LnInvoice]

* Eclair cleanup

* Address concerns from Chris

* Type annotation to match case

* Address nadav's code review
2018-12-08 11:03:24 -05:00
Chris Stewart
fd810b8ab6 2018 11 24 scala 2.12 warnings (#251)
* fixing compiler warnings for core module

* fix rpc project compiler warnings for scalac 2.12

* revert default scala version to 2.11.12
2018-11-25 14:51:36 -05:00
Chris Stewart
953142c013 2018 11 21 performance improvements (#249)
* Change ScriptConstant members from def to val

change all stuff in org.bitcoins.script.constant._ to actually be constant , this seems to improve performance from rudimentary bench marks by 2x

* rework RawSerializerHelper.writeCmpctSizeUInt to remove extra loop

* Fix bug where P2WPKHWitnessV0/P2WSHWitnessV0 didn't extend ScritpWitnessV0, add a few optimizations in ScriptWitness
2018-11-23 20:56:19 -05:00
Chris Stewart
91b838f2ac Remove annoying logs 2018-11-18 18:37:26 -05:00
Chris Stewart
88e9b0b1df Add compiler options for the Compile scope 2018-11-18 18:37:26 -05:00
Chris Stewart
5722e2bbd5 Optimize RawBitcoinSerializer.parseCmpctSizeUIntSeq to use a builder rather than just manually appending time. Seems to speed up performance on the two test vectors in BlockTests by ~1s 2018-11-18 11:18:36 -05:00
Chris Stewart
84c99dbdb6 implement p2sh(p2wpkh) inside of the interpreter and TxBuilder (#207)
fix bug in P2SHScriptSignature.redeemScript

uncommenting the fuzz tests

Add p2sh(p2wsh) test vectors from BIP143

Fix possible index out of bounds exception w/ updating an EmptyWitness
2018-10-01 10:00:44 -04:00
Chris Stewart
42b0600051 bump sbt to 1.1.6, bump scalac version to 2.11.12
Adding compilerOpts, adding commonSettings across projects
2018-08-26 12:44:25 -05:00
Chris Stewart
84e92d4dfa removing scoded.bits prefix from application code
Finishing scodec.bits refactor
2018-08-10 14:01:14 -05:00
Daniel James
5b5852bf72 scodec
Migration to scodec

Src is compiling

tests compiling

All unit tests passing now

fix compiler issue in ScriptParser

bump timeout to run on travis ci

Fixing two unit tests that had types failing

Turn down excessive logging

Uncomment rpc tests

fixing nits
2018-08-09 21:32:17 -05:00
Chris Stewart
0c29c8cfda Add invariant that doesn't allow segwit scripts to be created with uncompressed public keys
reset scalafmt for rpc/

Removing unit test that used uncompressed public key for P2WSH, removing extra debug
2018-07-22 14:10:01 -05:00
nkohen
5389d9187f cleanup of ScriptSignature in tests 2018-06-25 09:56:37 -05:00
nkohen
0a8c52562e Made BitcoinFeeUnit extend FeeUnit and SatoshisPerByte, SatoshisPerVirutalByte extend BitcoinFeeUnit 2018-06-06 13:45:26 -05:00
Chris Stewart
2cd44c0f07 refactor hash type to derive the byte from the underlying int32, refactor some other things to make hash type nicer 2018-06-01 13:04:41 -05:00
Nadav Kohen
6368642d09 Added sequence parameter to coinbase and removed fruitless type test 2018-05-31 10:57:36 -05:00
Chris Stewart
7e951e8ca9 Merge pull request #167 from TannerR1776/master
Move maxPublicKeysPerMultiSig to Consensus
2018-05-31 11:44:46 -04:00
Tanner Rogers
bfd4cb72f5 Move maxPublicKeysPerMultiSig to Consensus 2018-05-31 06:22:30 -05:00
Chris Stewart
876bb69e6a overflow bug fix didn't quite account for every overflow possibility 2018-05-29 11:47:34 -05:00
Chris Stewart
9cc2bb1695 Fix overflow bug with parsing script with OP_PUSHDATA4 2018-05-28 19:47:56 -05:00
Nadav Kohen
f6cdd3b312 Made HashDigest extend NetworkElement 2018-05-25 10:03:15 -05:00
Chris Stewart
8716378cc1 Refactoring TransactionSignatureSerializer to only take TxSigCompnents
Cleaning up nits
2018-05-22 06:00:53 -05:00
Chris Stewart
32f64e0dd9 Changing TxSigComponent to take a TransactionOutput instead of a ScriptPubKey, refactoring ScriptProgram into 3 companion objects PreExecutionScriptProgram, ExecutionInProgressScriptProgram, ExecutedScriptProgram 2018-05-19 09:25:32 -05:00
Chris Stewart
40d53bb7b3 Changing Transaction, BlockHeader version type from UInt32 -> Int32 to reflect what the bitcoin protocol actually is 2018-05-16 09:13:31 -04:00
Chris Stewart
6775817478 Adding AddressFactory.fromStringExn to throw the exception instead of returning a Try 2018-05-11 09:00:51 -05:00
Chris Stewart
9d834a69d0 :# This is a combination of 2 commits.
Create AddressFactory interface for creating addresses, adding toString method to print address string

Adding isValid to AddressFactory
2018-05-10 10:27:56 -05:00
Chris Stewart
dffa92c801 Exposing the TxBuilder.unsignedTx field -- this gives developers access to building a tx with a TxBuilder, but allows them to sign the tx out of band 2018-05-03 19:10:50 -05:00