* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* Split wallet functionality into multiple traits
In this commit we refactor LockedWallet into multiple traits
that provide functionality related to a subset of total wallet
functionality. This has the benefit of making it clear which
methods are helper methods that are only intended to be used
in a very specific setting, and which methods are part of the
internal wallet API that other parts of the wallet can use.
* Rework TransactionOutput and TransactionOutPoint to case classes
* Add extension methods for flattening lists of assertions
* Segregate confirmed and unconfirmed balance methods
* Add test for FutureUtil.sequentially
* Add trace logging of balance fetching
* Process outgoing TXOs
Move TX processing into separate trait, add internal API method
Unify DB representation of TXOs
Prior to this commit we stored TXO information
across diferent tables, with joins and tuples
needed a bunch of places to keep track of
everything we needed. In this commit we unify
the tables, leaving us with only one table for
TXOs.
In this commit we update our AesCrypt
functionality to work with AES keys rather
than passphrases that are extended to keys.
This makes it easier to integrate with other
languages, as the key stretching introduces
a bunch of additional parameters to the
actual AES encryption.
We also include tests that verify that we're
able to encrypt/decrypt using Bitcoin-S,
Crypto-JS (JavaScript), pycrypto (Python)
and OpenSSL CLI.
* Log messages more granularely in node
* Add pong message
* Rework P2P service identifier
The old implementation didn't catch the notion
that service identifiers was a bit field where
multiple services could be set at the same time.
* Make Peer take InetSocketAddress
Previously it took NetworkIpAddress.
This doesn't make any sense, as we
need to know the services bitfield
to construct a NetworkIpAddress.
* Clean up logs and toString methods
* Clean up node README and main method
* Make all networks final case objects
* Skip publishing of wallet, node and chain
* Clean up logging of node and chain modules
* Add logging of max height in SpvNodeMain
* Clean up Scaladoc and toStrings
* Add logging configuration as symlinks in node
We'll have to figure out a more stable solution to
configure logging for the SPV node, but for the time
being this is an acceptable solution.
* Fix 2.11 compiler error
* Implemented GCS (WIP)
Added some of Chris' tests for golombEncode and golombDecode
Fixed GCS.golombDecodeSet
Separated GCS object from GolombFilter class
Added hanging test for set encoding
Fixed property test for encoding and decoding arbitrary sets
Added test for GCS.buildGCS and hashing function consistency
Added method to construct a Block Filter from a Block
Added scaladocs in GCS.scala
Added TempUtxoProvider to make BlockFilter testable
Wrote a test for GolombFilter.matchesHash
Added test for arbitrary data matching in bip 158 filter
Added optional right-padding on GCS BitVector, BlockFilter.fromHex, and got started on BlockFilterTest
Cleaned up Bip158TestCase.fromJsArray
Fixed parsing of test vectors for bip 158
Wrote test for BlockFilter (doesn't pass)
Responded to some code review
Included CompactSizeUInt in filter
Created BitcoinScriptUtil.getDataTokens for output serialization
Wrote test for BitcoinScriptUtil.getDataTokens
Added test for BitcoinScriptUtil on the genesis block
Fixed name
:(
* Fixed SipHash and block serialization!
* Fixed bugs relating to empty scripts, all tests passgit push --force-with-lease nadav 2019-05-28-bip158 !
* Cleaned up BitcoinScriptUtil.getDataTokens and its test
* Responded to code review
* Factored out common code from BlockFilter apply methods
* Some cleanup
* Add findAll() to CRUD
* Add getAddressInfo to Wallet API
* Insert pubkey into bloomfilter also inserts hash
In this commit we also simplify parts of
BloomFilterTest, and move what used to be in
BloomFilterSpec into BloomFilterTest.
* Add bloom filter generation to wallet
* Add bloom false positive rate to wallet config
* Add logging to SQL errors
* Fix a bug where HDPath.next returned the wrong path
* Add FutureUtil.sequentially
* Make bloom filter size calculation more explicit
* Return Vector of pubkeys instead of Seq
* Verbose handling of address fetching in test
* Rename P2P tests and move generators into correct package
* Add more tests for P2P messages
* Add note on coverage to contributing guide
* Replace network in P2P header with typed network
* Add more P2P tests
* Add more tests for ECPriv and ECPub
* Reshuffle package location of P2P messages
Previously the companion objects for P2P messages
and the actual messages were in different pacakges.
This made them more awkward to use than necessary.
We also clean up some Scaladocs in this commit.
* Move all P2P messages to core