Commit graph

15810 commits

Author SHA1 Message Date
ghubstan
3077be54f0
Remove API createoffer's paymentAcctId request param (BSQ swap) 2021-11-25 16:12:05 -03:00
ghubstan
00a5e2b650
Merge branch 'master' into 2-refactor-api-bsqswap-support 2021-11-25 14:33:48 -03:00
Steven Barclay
0c94e232f8
Add+enable service to mint/verify Equihash proofs of work
Add an abstract base class, 'ProofOfWorkService', for the existing PoW
implementation 'HashCashService' and a new 'EquihashProofOfWorkService'
PoW implementation based on Equihash-90-5 (which has 72 byte solutions &
5-10 MB peak memory usage). Since the current 'ProofOfWork' protobuf
object only provides a 64-bit counter field to hold the puzzle solution
(as that is all Hashcash requires), repurpose the 'payload' field to
hold the Equihash puzzle solution bytes, with the 'challenge' field
equal to the puzzle seed: the SHA256 hash of the offerId & makerAddress.

Use a difficulty scale factor of 3e-5 (derived from benchmarking) to try
to make the average Hashcash & Equihash puzzle solution times roughly
equal for any given log-difficulty/numLeadingZeros integer chosen in the
filter.

NOTE: An empty enabled-version-list in the filter defaults to Hashcash
(= version 0) only. The new Equihash-90-5 PoW scheme is version 1.
2021-11-25 17:17:45 +00:00
Steven Barclay
647fc862d4
Fix method name typo: redoProofOfWorkAndRepublish 2021-11-25 11:45:23 +00:00
Steven Barclay
cb7481d21f
Add difficulty adjustment & benchmarking to Equihash(Test)
Provide a utility method, 'Equihash::adjustDifficulty', to linearise and
normalise the expected time taken to solve a puzzle, as a function of
the provided difficulty, by taking into account the fact that there
could be 0, 1, 2 or more puzzle solutions for any given nonce. (Wagner's
algorithm is supposed to give 2 solutions on average, but the observed
number is fewer, possibly due to duplicate removal.) For tractability,
assume that the solution count has a Poisson distribution, which seems
to have good agreement with the tests.

Also add some (disabled) benchmarks to EquihashTest. These reveal an
Equihash-90-5 solution time of ~146ms per puzzle per unit difficulty on
a Core i3 laptop, with a verification time of ~50 microseconds.
2021-11-25 11:10:02 +00:00
Christoph Atteneder
4893be23cd
Improve release build documentation 2021-11-25 11:06:29 +01:00
cd2357
1261f84885
Update package.gradle: rely on local JDK 15
Enforce the use of JDK 15 when packaging. This removes the need to download and unpack JDK 15 just for the use of jpackager.
2021-11-25 11:06:28 +01:00
Christoph Atteneder
9617da39ab
Print dependency report if failure 2021-11-25 11:06:28 +01:00
Christoph Atteneder
57a88be559
Remove gradle cache 2021-11-25 11:06:28 +01:00
Christoph Atteneder
6165fb6042
Add official Java 15 support 2021-11-25 11:06:27 +01:00
Christoph Atteneder
8fb8374721
Merge pull request #5864 from cd2357/add-java-15-as-supported-jdk
Update package.gradle: rely on local JDK 15
2021-11-25 11:05:26 +01:00
Christoph Atteneder
04c88223ad
Improve release build documentation 2021-11-25 10:50:05 +01:00
cd2357
3723dd32ef
Update package.gradle: rely on local JDK 15
Enforce the use of JDK 15 when packaging. This removes the need to download and unpack JDK 15 just for the use of jpackager.
2021-11-25 10:50:05 +01:00
Christoph Atteneder
55fc413ee0
Print dependency report if failure 2021-11-25 10:50:04 +01:00
Christoph Atteneder
9836c0fac2
Remove gradle cache 2021-11-25 10:50:04 +01:00
Christoph Atteneder
7727776453
Add official Java 15 support 2021-11-25 10:50:03 +01:00
jmacxx
dfc7361b04
Add new block listener to update locked balance display 2021-11-25 09:55:04 +01:00
jmacxx
f0efe7175c
Fix exception in Portfolio History screen 2021-11-25 09:54:54 +01:00
Christoph Atteneder
ba6d5e2c73
Merge pull request #5842 from jmacxx/fix_exception_portfolio_history
Bug fixes: Locked Balance display; Portfolio History screen
2021-11-25 09:54:31 +01:00
ghubstan
c177b3b834
Merge branch 'master' into 2-api-bsq-swap-scratch 2021-11-24 13:14:13 -03:00
ghubstan
6403fc1f81
Adjust apitest cases to rpc BSQ wwap related changes 2021-11-24 13:12:48 -03:00
ghubstan
0c5c343fe0
Adjust CLI to support getting/taking BSQ swaps
Also refactored some of the opt parsers.
2021-11-24 13:10:34 -03:00
ghubstan
3aae052813
Refactor core.api trade service implemenentations for BSQ swaps
A minor refactoring to support serving TradeModel instances to CLI.
For example, the CLI 'gettrade' command must return a v1 Trade or
BSQ swap trade.
2021-11-24 13:05:09 -03:00
ghubstan
f88c1513ec
Refactor GrpcTradesService: use GetTrade & TakeOffer services for BSQ swaps
The rpc GetBsqSwapTrade and TakeBsqSwapOffer services were a quick hack
to help test BSQ swap feature development more quickly, using apitest
cases.  Their gRPC service method implementations are removed here and
the GetTrade & TakeOffer service methods are refactored to support BSQ
swaps.
2021-11-24 13:00:30 -03:00
ghubstan
17277c4c67
Remove Get/Take BSQSwap Offer/Trade rpc service defs
The old GetTrade and TakeOffer rpc service defs will be used
for getting BSQ swap trades, and taking BSQ swap offers.
2021-11-24 12:52:58 -03:00
Steven Barclay
d8d8ec3f97
Add PoW version(-list) fields to ProofOfWork & Filter
Add a numeric version field to the 'ProofOfWork' protobuf object, along
with a list of allowed version numbers, 'enabled_pow_versions', to the
filter. The versions are taken to be in order of preference from most to
least preferred when creating a PoW, with an empty list signifying use
of the default algorithm only (that is, version 0: Hashcash).

An explicit list is used instead of an upper & lower version bound, in
case a new PoW algorithm (or changed algorithm params) turns out to
provide worse resistance than an earlier version.

(The fields are unused for now, to be enabled in a later commit.)
2021-11-24 15:07:42 +00:00
Christoph Atteneder
19eb7eb50b
Merge pull request #5856 from ripcurlx/update-data-stores-for-v1.8.0
Update data stores for v1.8.0
2021-11-24 14:00:10 +01:00
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