Commit graph

15933 commits

Author SHA1 Message Date
Christoph Atteneder
10433e3a71
Update data stores for v1.8.0 (again) 2021-11-24 13:51:10 +01:00
Christoph Atteneder
dd6af18350
Update data stores for v1.8.0 2021-11-24 11:47:53 +01:00
Christoph Atteneder
2fea64cb3a
Update bitcoinj checkpoints for v1.8.0 2021-11-24 11:31:12 +01:00
Christoph Atteneder
95577501a2
Merge pull request #5860 from ghubstan/gradle-java-src-n-target-compat
Set gradle java src & target compat =  VERSION_11
2021-11-24 09:51:28 +01:00
chimp1984
1106d99829
Remove code which is already in superclass 2021-11-24 09:48:12 +01:00
chimp1984
f93cd7de48
Enforce inclusion of TradeLimits for headless apps
PaymentMethod use an instance of TradeLimits and expect that it
has been injected, which is the case for desktop but not for
headless apps, so we enforce injection in the app base classes
used for headless apps.

The validation of trade statistics use a method in PaymentMethod
where that dependency is required.

Tha hack how the PaymentMethod use TradeLimits is not nice, but
would require more effort for refactoring.
2021-11-24 09:48:00 +01:00
Christoph Atteneder
3570750d0f
Merge pull request #5857 from chimp1984/add-missing-dependency
Enforce inclusion of TradeLimits for headless apps
2021-11-24 09:47:14 +01:00
chimp1984
0620c866fa
Add date for applying filter
We had historically higher trade limits and assets which are not in the
currency list anymore, so we apply the filter only for data after
Nov 1st 2021.
2021-11-24 09:46:04 +01:00
Christoph Atteneder
5358ae8b50
Merge pull request #5859 from chimp1984/fix-tradestat-filter
Add date for applying filter
2021-11-24 09:44:16 +01:00
chimp1984
becb64de5a
Remove code which is already in superclass 2021-11-23 23:22:28 +01:00
chimp1984
4ec14d3694
Add date for applying filter
We had historically higher trade limits and assets which are not in the
currency list anymore, so we apply the filter only for data after
Nov 1st 2021.
2021-11-23 23:09:42 +01:00
ghubstan
37a6b42f74
Set gradle java src & target compat = VERSION_11
This change sets java source and class generation version targets to 11.
The Bisq distribution is built with JDK 11, but source target has remained at 1.10.
Upgrading allows devs to use some Java syntax features available @since 11, and it
might help anyone building the src avoid confusion over which JDK they should use
(minimum is JDK 11).

See https://docs.gradle.org/current/userguide/java_plugin.html#sec:java-extension
2021-11-23 17:43:12 -03:00
chimp1984
9c18899d66
Enforce inclusion of TradeLimits for headless apps
PaymentMethod use an instance of TradeLimits and expect that it
has been injected, which is the case for desktop but not for
headless apps, so we enforce injection in the app base classes
used for headless apps.

The validation of trade statistics use a method in PaymentMethod
where that dependency is required.

Tha hack how the PaymentMethod use TradeLimits is not nice, but
would require more effort for refactoring.
2021-11-23 21:34:43 +01:00
ghubstan
b65cc9c1f4
Merge branch 'master' into 1-basic-api-bsqswap-support 2021-11-23 17:02:49 -03:00
Christoph Atteneder
4f1f6898b8
Merge pull request #5853 from chimp1984/fix-paymentmethod-lookup
Improve TradeStatistics validation
2021-11-23 09:56:36 +01:00
chimp1984
3877d5c363
Fix missing update of time line in dao charts 2021-11-23 09:55:28 +01:00
Christoph Atteneder
7280b66553
Merge pull request #5855 from chimp1984/fix-dao-charts
Fix missing update of time line in dao charts
2021-11-23 09:55:17 +01:00
Steven Barclay
52f4981f15
Further Equihash optimisation: partial parallelisation
Run the initial XorTable fillup in 'Equihash::computeAllHashes' in
parallel, using a parallel stream, to get an easy speed up. (The solver
spends about half its time computing BLAKE2b hashes before iteratively
building tables of partial collisions using 'Equihash::findCollisions'.)

As part of this, replace the use of 'java.nio.ByteBuffer' array wrapping
in 'Utilities::(bytesToIntsBE|intsToBytesBE)' with manual for-loops, as
profiling reveals an unexpected bottleneck in the former when used in a
multithreaded setting. (Lock contention somewhere in unsafe code?)
2021-11-23 08:54:55 +00:00
Christoph Atteneder
19e072795f
Simplify warn logging 2021-11-23 09:54:23 +01:00
chimp1984
236cb2c6f3
Rename getPaymentMethodById to getPaymentMethod 2021-11-23 09:54:05 +01:00
chimp1984
a495072694
Rename getPaymentMethod to getPaymentMethodId 2021-11-23 09:53:56 +01:00
chimp1984
94857a6261
Rename getActivePaymentMethodById to getActivePaymentMethod
Rename variables
2021-11-23 09:53:45 +01:00
chimp1984
c3ea38ec7a
Add warn log 2021-11-23 09:53:37 +01:00
chimp1984
f5ca63f59a
Only apply maxTradeLimit from PaymentMethod if the PaymentMethod is
found in the active list. Otherwise the 2 BTC default is used.
We get TradeStatistics3 objects from old retired PaymentMethods
which are not found in the active list.
2021-11-23 09:53:27 +01:00
Christoph Atteneder
0e1030845a
Simplify warn logging 2021-11-23 09:48:10 +01:00
chimp1984
dc2a12858b
Only try to remove invalid filter from network if it's our own.
This avoids unnecessary/confusing warning logs in data storage.
2021-11-23 09:37:30 +01:00
Christoph Atteneder
c7e0efc336
Merge pull request #5854 from chimp1984/improve-filtermanager
Improve FilterManager
2021-11-23 09:37:12 +01:00
Steven Barclay
6bb0f27807
Further Equihash optimisation: avoid lambda+stream in tight loop
Manually iterate over colliding table rows using a while- loop and a
custom 'PrimitiveIterator.OfInt' implementation, instead of a foreach
lambda called on an IntStream, in 'Equihash::findCollisions'. Profiling
shows that this results in a slight speedup.
2021-11-23 07:57:07 +00:00
Steven Barclay
a5f5a55775
Add Equihash.IntListMultimap (private) class for speedup
Provide a (vastly cut down) drop-in replacement for the Guava multimap
instance 'indexMultimap', of type 'ListMultimap<Integer, Integer>', used
to map table row indices to block values, to detect collisions at a
given block position (that is, in a given table column).

The replacement stores (multi-)mappings from ints to ints in a flat int-
array, only spilling over to a ListMultimap if there are more than 4
values added for a given key. This vastly reduces the amount of boxing
and memory usage when running 'Equihash::findCollisions' to build up the
next table as part of Wagner's algorithm.
2021-11-23 07:34:52 +00:00
Steven Barclay
c2b3a078ff
Add Equihash implementation for use in ASIC-resistant PoW
Implement the Equihash (https://eprint.iacr.org/2015/946.pdf) algorithm
for solving/verifying memory-hard client-puzzles/proof-of-work problems
for ASIC-resistant DoS attack protection. The scheme is asymmetric, so
that even though solving a puzzle is slow and memory-intensive, needing
100's of kB to MB's of memory, the solution verification is instant.

Instead of a single 64-bit counter/nonce, as in the case of Hashcash,
Equihash solutions are larger objects ranging from 10's of bytes to a
few kB, depending on the puzzle parameters used. These need to be
stored in entirety, in the proof-of-work field of each offer payload.

Include logic for fine-grained difficulty control in Equihash with a
double-precision floating point number. This is based on lexicographic
comparison with a target hash, like in Bitcoin, instead of just
counting the number of leading zeros of a hash.

The code is unused at present. Also add some simple unit tests.
2021-11-23 06:27:33 +00:00
chimp1984
cb474c57da
Rename getPaymentMethodById to getPaymentMethod 2021-11-23 00:40:59 +01:00
chimp1984
091f82477b
Rename getPaymentMethod to getPaymentMethodId 2021-11-23 00:39:38 +01:00
chimp1984
9569e5a600
Rename getActivePaymentMethodById to getActivePaymentMethod
Rename variables
2021-11-23 00:39:18 +01:00
chimp1984
9d52ddbf96
Add warn log 2021-11-23 00:34:12 +01:00
chimp1984
069b3a9d8e
Fix missing update of time line in dao charts 2021-11-23 00:29:35 +01:00
chimp1984
22c7b2d876
Only try to remove invalid filter from network if it's our own.
This avoids unnecessary/confusing warning logs in data storage.
2021-11-22 22:43:31 +01:00
chimp1984
b6b2d939a1
Only apply maxTradeLimit from PaymentMethod if the PaymentMethod is
found in the active list. Otherwise the 2 BTC default is used.
We get TradeStatistics3 objects from old retired PaymentMethods
which are not found in the active list.
2021-11-22 22:41:32 +01:00
jmacxx
e59596d1a1
Add new block listener to update locked balance display 2021-11-22 09:46:41 -06:00
ghubstan
c3d5fdd9a2
Uncomment API's create swift acct test 2021-11-22 12:09:10 -03:00
ghubstan
f129867266
Uncomment support for complex swift-acct creation via API
Swift specific comments are included in the create payment acct json form.
2021-11-22 12:08:08 -03:00
ghubstan
1fcb751d8c
Populate SwiftAccount tradeCurrencies field inside constructor
The API uses reflection to figure out how to build a payment acct json
form, and the tradeCurrencies field needs to be set after reflection
API's onstructor.newInstance() is called.
2021-11-22 12:02:17 -03:00
ghubstan
a113b3ddfb
Overload getAllSortedFiatCurrencies() with Comparator param
The default method sorts by currency name, in come cases we need to
sort by currency code, e.g., swift accounts.  This method allows
sorting by either.
2021-11-22 11:54:12 -03:00
Steven Barclay
5da8df266a
Code cleanup: replace (Bi)Function<..,Boolean> with (Bi)Predicate<..>
Replace 'BiFunction<T, U, Boolean>' with the primitive specialisation
'BiPredicate<T, U>' in HashCashService & FilterManager.

As part of this, replace similar predicate constructs found elsewhere.
NOTE: This touches the DAO packages (trivially @ VoteResultService).
2021-11-21 17:46:15 +00:00
Steven Barclay
53220499e7
Code cleanup: remove unused PoW class & test
Remove (possible draft) 'ProofOfWorkService(Test)', which is a near
duplicate of the class 'HashCashService' but is currently unused.
2021-11-21 17:10:40 +00:00
chimp1984
d81875eb98
Add check for trade statistic for max amount and if currency exists in CurrencyUtil 2021-11-21 17:39:46 +01:00
Christoph Atteneder
e50cd42478
Merge pull request #5849 from chimp1984/add-limit-to-tradestats
Add checks for trade statistics
2021-11-21 17:39:30 +01:00
Chris Beams
3884e0c471
Fix guava dependency issue
Problem: a

    NoSuchMethodError: 'java.util.stream.Collector
    com.google.common.collect.ImmutableMultiset.toImmutableMultiset()'

exception was being thrown when testing the previously-merged upgrade to
Gradle 7.3, as described at keybase://chat/bisq#testing/2466.

Solution: This problem is similar to the issue reported at
jeremylong/DependencyCheck#3221. The source of the problem was multiple
conflicting guava jars on the runtime classpath. This commit upgrades to
guava 30.1.1-jre which ensures a single jar on the classpath.
2021-11-21 17:37:25 +01:00
Christoph Atteneder
bc124b3064
Merge pull request #5851 from cbeams/fix-guava
Fix guava dependency issue
2021-11-21 17:37:09 +01:00
Chris Beams
42b00b3a3e
Fix guava dependency issue
Problem: a

    NoSuchMethodError: 'java.util.stream.Collector
    com.google.common.collect.ImmutableMultiset.toImmutableMultiset()'

exception was being thrown when testing the previously-merged upgrade to
Gradle 7.3, as described at keybase://chat/bisq#testing/2466.

Solution: This problem is similar to the issue reported at
jeremylong/DependencyCheck#3221. The source of the problem was multiple
conflicting guava jars on the runtime classpath. This commit upgrades to
guava 30.1.1-jre which ensures a single jar on the classpath.
2021-11-21 17:06:10 +01:00
chimp1984
71e40ce1b7
Add check for trade statistic for max amount and if currency exists in CurrencyUtil 2021-11-20 23:04:25 +01:00