Commit graph

15810 commits

Author SHA1 Message Date
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
Christoph Atteneder
b5c351143a
Update translations for v1.8.0 2021-11-19 18:38:31 +01:00
Christoph Atteneder
aacc1105e3
Bump version number for v1.8.0 2021-11-19 18:35:56 +01:00
jmacxx
cd4d98b753
Fix exception in Portfolio History screen 2021-11-18 17:38:26 -06:00
chimp1984
08eb54efbd
Add I2P as enum entry 2021-11-18 18:34:37 +01:00
Christoph Atteneder
b5a43c7f95
Merge pull request #5840 from chimp1984/add-i2p-to-btc-core-networktypes
Add I2P as enum entry
2021-11-18 18:34:17 +01:00
chimp1984
e442283db4
Add I2P as enum entry 2021-11-18 18:00:06 +01:00
Christoph Atteneder
ef7ce109ac
Merge pull request #5834 from jmacxx/dispute_ui_add_penalty
Add penalty calculation to dispute agent UI
2021-11-18 17:57:54 +01:00
Bisq GitHub Admin
e52a821f34
Merge pull request #5838 from ripcurlx/fix-broken-test
Fix broken test for new build
2021-11-18 17:55:51 +01:00
Christoph Atteneder
c64e6f3298
Fix broken test for new build 2021-11-18 17:11:17 +01:00
jmacxx
5c00e1974e
Add penalty calc to dispute UI 2021-11-18 08:43:06 -06:00
Christoph Atteneder
4b6b1cdf11
Merge pull request #5839 from cbeams/add-jackson-pom-checksum
Add missing metadata for jackson-base pom 2.12.1
2021-11-18 15:03:47 +01:00
Chris Beams
ea629de1a1
Add missing metadata for jackson-base pom 2.12.1
Problem: When merging #5824, the absence of this entry caused a build
failure at dependency verification time against JDK11 and JDK15 on
Ubuntu-latest [1]. It may also cause failures on other JDK/OS
combinations, but the GitHub workflow was aborted before those failures
couldhave occurred. In any case, this omission did not create build
failures on any of the local development machines that tested the
aforementioned PR. Reasons for this discrepancy are unknown.

Solution: manually fetch the pom from [2], run `sha256sum` on it locally
and commit the result to the verification metadata file.

[1]: https://github.com/bisq-network/bisq/runs/4249640611?check_suite_focus=true#step:6:33
[2]: https://repo1.maven.org/maven2/com/fasterxml/jackson/jackson-base/2.11.1/jackson-base-2.11.1.pom
2021-11-18 12:38:01 +01:00
Christoph Atteneder
c05e7a09c0
Merge pull request #5824 from cbeams/gradle-7.3
Upgrade to Gradle 7.3
2021-11-18 09:32:04 +01:00
Christoph Atteneder
a27ac4313b
Merge pull request #5826 from chimp1984/improve-fee-handling
Improve fee handling
2021-11-18 09:23:15 +01:00
Christoph Atteneder
90ea4fc14a
Merge pull request #5813 from jmacxx/fix_locked_funds_display
Fix calculation & display of Locked Funds
2021-11-16 09:35:06 +01:00
Christoph Atteneder
7faaa9d5ba
Merge pull request #5831 from jmacxx/fix_display_failed_trade_tab
Fix display of missing Failed Trade tab
2021-11-16 09:31:10 +01:00
jmacxx
daee63490e
Fix display of missing failed trade tab 2021-11-15 11:10:16 -06:00
Chris Beams
cb7b0e8da4
Set pricenode mainClassName explicitly
Problem: after the upgrade from 6.6.1 to 7.3, the usual invocation of,
e.g. `./bisq-pricenode 2 2` started failing as reported by @emzy at [1].

    bisq@ubuntu-4gb-fsn1-1:~$ /bisq/bisq/bisq-pricenode 2
    Error: Could not find or load main class 2
    Caused by: java.lang.ClassNotFoundException: 2

Solution: for unknown reasons, the bisq-pricenode script worked as
expected under 6.6.1, i.e. contained the fq main class name in its
scripted invocation of `java -jar ...`, but under 7.3, this main class
name was missing. Through trial and error, it turns out that setting
`mainClassName` explicitly in the :pricenode subproject configuration
solves this problem and makes the start script work as expected.
Presumably, this problem arose in conjunction with the major version
upgrade of the spring boot Gradle plugin that was necessary when
upgrading to Gradle 7.3, but this has not been verified.

[1]: https://github.com/bisq-network/bisq/pull/5824#issuecomment-968276686
2021-11-15 13:44:44 +01:00
Christoph Atteneder
0ea056c6d2
Add Windows artifact hashes 2021-11-15 13:26:05 +01:00
chimp1984
f17c2e1234
Rename method 2021-11-15 13:05:40 +01:00
Chris Beams
280c2aaa8e
Adapt Gradle startScript customization logic
Problem: ClassNotFoundError was getting thrown when attempting to run,
e.g. the `./bisq-desktop` or `./bisq-pricenode` start scripts.

Solution: Gradle's posix start scripts were changed significantly
between 6.6.1 and 7.3, including a change to the way the current
directory is determined. This change updates the way we customize start
script generation to allow running them from the root of the repo. This
change only affects the unix / posix variants. The Windows .bat files do
not need to be adapted similarly.
2021-11-15 13:03:49 +01:00
Christoph Atteneder
83c9355931
Merge pull request #5825 from chimp1984/improve-offer-validation
Improve offer validation
2021-11-15 12:03:29 +01:00
ghubstan
d8f1e446ea
Try to hide from pesky codacy 2021-11-14 14:30:41 -03:00