Commit Graph

18442 Commits

Author SHA1 Message Date
Steven Barclay
408f902d9c
Use LowRSigningKey elsewhere ECKeys are used for signing
To slightly save storage & bandwidth, create low-R signatures in places
besides tx ScriptSigs & witnesses, such as merit lists, proofs of burn,
filter, alert & accounting authentication data.

(Also, to make setup of mock keys a little easier, bypass wrapping of
keys that are already instances of 'LowRSigningKey' in the factory
method, 'LowRSigningKey.from(ECKey)'.)
2024-09-04 23:46:22 +08:00
Steven Barclay
61b06e716d
Use LowRSigningKey for all BTC & BSQ tx signing
Provide a 'BisqWallet' subclass of 'o.b.w.Wallet', in order to override
the 'signTransaction' method used internally by the bitcoinj SendRequest
API, so that it always produces txs with low-R signatures.

Also modify 'WalletService.signTransactionInput' to likewise wrap wallet
keys, so that the provided tx input is given a low-R signature.

Finally, modify the manual signing logic in TradeWalletService to wrap
multisig & deposit input keys, which should cover all tx signing in the
Bisq application.
2024-09-04 16:39:20 +08:00
Steven Barclay
18a0c32708
Add subclass of ECKey which grinds for low-R signatures
Implement low-R nonce grinding with the class 'LowRSigningKey', which
always produces low-R signatures, consistent with the behaviour of
Bitcoin Core/Knots (post-2018), Sparrow, Coldcard and possibly other
wallets with recent updates, for hopefully improved privacy and slightly
lower and more predictable tx fees. Canonical DER-encoded signatures are
usually either 71 or 70 bytes (starting with hex 3045 or 3044 resp.),
with roughly 50-50 odds, depending on whether they are high-R or low-R.
(Less than 1% of the time, they will be shorter than 70 bytes, because
of the variable length bigint R & S encodings.) So trying different
nonces for low-R saves half-a-byte on average, at the cost of doubling
the average signing time.

To this end, provide the class 'CountingHMacDSAKCalculator' to supply a
custom nonce to 'o.b.c.s.ECDSASigner'. The first invocation of the
k-calculator instance matches the output of the RFC 6979 compliant
Bouncy Castle version, but subsequent invocations increment an internal
counter supplied as additional data/entropy to the HMAC, as mentioned in
section 3.6 of the RFC, until a low-R signature results. In this way, a
deterministic signing algorithm exactly matching that of (post-2018
versions of) Bitcoin Core results.

Also add unit tests, with test vectors taken from the RFC (which only
covers the NIST curves, unfortunately, not secp256k1), and test vectors
generated from signed txs created by the 'bitcoin-tx' command.
2024-09-04 14:14:23 +08:00
HenrikJannsen
5d8641031a
Merge pull request #7221 from stejbac/optimise-restapi-stream-filtering
Optimise/simplify some stream filtering for the REST API
2024-08-29 22:00:01 +07:00
RunBTC
4bdc185d46
Add 2 new BTC nodes 2024-08-10 05:09:56 +00:00
dependabot[bot]
a206e2268b
build(deps): bump actions/setup-java from 4.2.1 to 4.2.2
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 4.2.1 to 4.2.2.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v4.2.1...v4.2.2)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-08-05 14:43:07 +00:00
HenrikJannsen
2749e7d41a
Extract code for removing retired nodes to a methods so its easier to spot
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-29 10:51:00 +07:00
HenrikJannsen
e2cc3c8627
Add bisq.mempool.emzy.de to filter of persisted preferences as that node is retired (not reflected in that code base but pending PR is submitted)
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-29 10:37:51 +07:00
Steven Barclay
66d6530652
Optimise/simplify some stream filtering for the REST API
Replace the streaming of Map entry sets to pick out a single entry by
key equality, and instead do a lookup into the map. Also, optimise the
date range filtering in 'TradeStatisticsManager::getTradeStatisticsList'
by using 'RangeUtils::subSet' to avoid scanning the entire collection.
(This method is applicable, as the trade statistics set is navigable and
naturally sorted by date.)
2024-07-28 22:05:29 +02:00
HenrikJannsen
f1796e55e6
Refactor: Rename ProvidersRepository to PriceFeedNodeAddressProvider
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-26 19:22:35 +07:00
HenrikJannsen
11ac408d86
Remove emzy bsq explorer from BSQ_MAIN_NET_EXPLORERS.
Remove that entyr if it was used as persisted explorer.

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-26 19:22:33 +07:00
HenrikJannsen
c851111f62
Remove emzy bsq explorer from BSQ_MAIN_NET_EXPLORERS.
Remove that entyr if it was used as persisted explorer.

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-26 19:21:18 +07:00
Alejandro García
bbd53f1895
Merge pull request #7211 from bisq-network/dependabot/github_actions/gradle/gradle-build-action-3.5.0
build(deps): bump gradle/gradle-build-action from 3.4.2 to 3.5.0
2024-07-25 19:11:34 +00:00
Alejandro García
4fca7e2d63
Merge pull request #7207 from HenrikJannsen/add-rest-api-endpoints-for-BSQ-explorer
Add rest api endpoints for bsq explorer
2024-07-25 19:07:55 +00:00
Alejandro García
c9447d0366
Merge pull request #7206 from HenrikJannsen/reset-AutoConfirmSettings-if-it-cointains-retired-address
Reset AutoConfirmSettings if it contains a retired address
2024-07-25 19:06:15 +00:00
Alejandro García
15ef1846e7
Merge pull request #7137 from devinbileck/remove-nodes
Remove nodes
2024-07-25 19:05:09 +00:00
dependabot[bot]
35cb9995c4
build(deps): bump gradle/gradle-build-action from 3.4.2 to 3.5.0
Bumps [gradle/gradle-build-action](https://github.com/gradle/gradle-build-action) from 3.4.2 to 3.5.0.
- [Release notes](https://github.com/gradle/gradle-build-action/releases)
- [Commits](https://github.com/gradle/gradle-build-action/compare/v3.4.2...v3.5.0)

---
updated-dependencies:
- dependency-name: gradle/gradle-build-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-22 14:41:36 +00:00
HenrikJannsen
29ee016854
Add check if address is not empty
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-21 21:07:51 +07:00
HenrikJannsen
0b40276a4c
Add check if dao is ready. Improve getBisqTxForAddr and fix nullpointer
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-21 19:55:23 +07:00
HenrikJannsen
20e7a38c7d
Remove DaoExplorerService and move method to DaoStateService
Add BlockDataToJsonConverter for blockdata to json conversion

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-21 18:31:17 +07:00
HenrikJannsen
bd9136fc97
Add explorer endpoints and dtos
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-21 17:39:00 +07:00
HenrikJannsen
9e0845e7f7
Add dependency to bitcoinj
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-21 15:16:26 +07:00
HenrikJannsen
87e291c1da
Add methods for supporting explorer endpoints in RestApi
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-21 15:15:53 +07:00
HenrikJannsen
2e25342530
If AutoConfirmSettings contain a retired address we reset to the default values
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-21 13:55:12 +07:00
Devin Bileck
c782c9816a
Remove empty file 2024-07-19 22:43:39 -07:00
Devin Bileck
edced54641
Remove nodes 2024-07-19 22:39:39 -07:00
Alejandro García
b8e3296a5e
Merge pull request #7203 from stejbac/check-receiver-address-validity
Check burning man receiver address validity
2024-07-19 00:19:06 +00:00
Alejandro García
bc31f206c2
Merge pull request #7196 from HenrikJannsen/Avoid-color-artefacts-at-antialias
Set -fx-font-smoothing-type to grey.
2024-07-19 00:17:42 +00:00
Alejandro García
73fc00026a
Merge pull request #7194 from HenrikJannsen/improve-btc-monitor
Improve btc monitor
2024-07-19 00:16:49 +00:00
Alejandro García
9b8ddb1c4f
Merge pull request #7193 from HenrikJannsen/Remove-mrosseel-btc-node
Remove mrosseel btc node
2024-07-19 00:15:56 +00:00
Alejandro García
6bef6cc4a7
Merge pull request #7189 from HenrikJannsen/set-useFullModeDaoMonitor-to-true-in-all-headless-apps
Set useFullModeDaoMonitor to true in all headless apps
2024-07-19 00:15:28 +00:00
Alejandro García
7013e95e6e
Merge pull request #7188 from HenrikJannsen/remove-emzy-seed-nodes-from-inventory-monitor
Remove emzy seednodes from inventory monitor
2024-07-19 00:14:59 +00:00
Alejandro García
0620ab6d69
Merge pull request #7187 from HenrikJannsen/add-txId-to-ProofOfBurn-and-Bond-DTOs
Add tx id to proof of burn and bond dtos [2]
2024-07-19 00:14:17 +00:00
Alejandro García
7542b98a2d
Merge pull request #7186 from HenrikJannsen/fix-bug-with-using-wrong-bondedReputation-collection
Fix bug with using wrong collection which held only one bond per hash [1]
2024-07-19 00:13:14 +00:00
Alejandro García
4ce102e372
Merge pull request #7185 from HenrikJannsen/fix-missing-snapshot-creation
Add missing snapshot creation in full DAO mode
2024-07-19 00:12:28 +00:00
Alejandro García
102becb752
Merge pull request #7170 from bisq-network/dependabot/github_actions/gradle/gradle-build-action-3.4.2
build(deps): bump gradle/gradle-build-action from 3.3.2 to 3.4.2
2024-07-19 00:11:53 +00:00
Alejandro García
34509c9eff
Merge pull request #7102 from runbtc/update-seednode-files
Update seednode files
2024-07-19 00:08:01 +00:00
Steven Barclay
b10ccd2868
Reject witness >v0 addresses incorrectly encoded as Bech32
Reject any custom receiver address which wasn't encoded as Bech32m if
the witness program version is greater than zero. These are currently
accepted by bitcoinj but are now invalid and would fail to parse if our
fork was updated to understand Bech32m, to support sending to P2TR
addresses, which the upstream version appears to. (Thus, the presence of
such malformed receivers would not be an issue at present, but might
cause complications in the future.)
2024-07-18 00:14:18 +02:00
Steven Barclay
99165e7bd9
Check receiver address validity when calculating burn shares
Set the burn cap of a candidate to zero if he has an invalid receiver
address, that is, one that bitcoinj cannot parse. This prevents trade
failure when creating the DPT, by making such BM inactive and
distributing their share to the other BM. (Setting the burn cap to zero
is a little more robust than simply filtering out such candidates, as
'BurningManService' handles subsequent share redistribution better than
'(DelayedPayoutTx|BtcFee)ReceiverService'.)

While this case should normally never occur, due to UI validation of the
custom receiver address, there are at least two ways a BM could
invalidate his own receiver address if so inclined:

 1) He could simply bypass the UI validation;
 2) He could manually create a compensation issuance tx with a change
    address type unrecognised by bitcoinj, such as P2TR, as the address
    field is pulled straight from the RPC JSON by each full DAO node.

Thus, it is necessary to check both change and custom addresses.
2024-07-14 18:45:09 +02:00
Steven Barclay
c52fe0e605
Remove date checks for Bugfix 6699 & Proposal 412 activation
These are both redundant now and will always return true. Also add a
missing past check for Proposal 412 activation to 'RefundManager',
instead of just defaulting to the current date, in case of any very old
disputes involving DPTs created prior to the activation.
2024-07-14 17:29:06 +02:00
Steven Barclay
508ab1f8e2
Make receiver address deterministic if >1 comp. requests in cycle
Handle the exceptional case of a receiver address chosen from a cycle
where the candidate somehow got more than one compensation proposal
accepted. Either the last custom address or first issuance change
address is supposed to be chosen for the receiver address, but in case
of a tie at that vote result height, take the address that comes
first in lexicographic order.
2024-07-13 19:03:37 +02:00
Steven Barclay
aa7aedd0b1
Make getActiveBurningManCandidates return a list instead of a set
This avoids needless hashing & equality comparisons of instances of
'BurningManCandidate', which are quite large mutable objects (so should
probably use reference equality anyway, and not be used as keys).

Also rearrange a couple of (package) private methods.
2024-07-13 16:55:07 +02:00
Steven Barclay
267becf612
Fix minor quadratic time bug in getBurningManCandidatesByName
Avoid streaming over the entire proposals list to find a matching txId,
for every 'Issuance' & 'CompensationProposal' pair used to construct and
add a compensation model to the burn output model of each candidate.
Instead, stream over the proposals list once, doing lookups by txId of
each matching issuance, which uses the TreeMap 'DaoState.issuanceMap',
thereby taking O(n*log(n)) time.
2024-07-13 16:29:48 +02:00
HenrikJannsen
633f823581
Set -fx-font-smoothing-type to grey.
Remove system property at linux set to false (issue happens on all OS as far I am aware).

Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-06 22:39:28 +07:00
HenrikJannsen
d99e251615
Improve btc monitor
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-05 16:11:25 +07:00
HenrikJannsen
52d0e151df
Return result at shutdownAndAwaitTermination
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-05 16:11:14 +07:00
HenrikJannsen
f96511f0fa
Dont log bridges if empty
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-05 16:11:14 +07:00
HenrikJannsen
53609ec9c3
Remove mrosseel btc node
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-05 16:01:47 +07:00
HenrikJannsen
d39dd2ae25
Set useFullModeDaoMonitor to true in all headless apps
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-01 10:32:26 +07:00
HenrikJannsen
1a9c0dd1c8
Remove emzy seednodes from inventory monitor
Signed-off-by: HenrikJannsen <boilingfrog@gmx.com>
2024-07-01 10:20:14 +07:00