Commit graph

10151 commits

Author SHA1 Message Date
Julian Knutsen
3503fe3b10
[DEADCODE] Remove protectedDataStoreListener
There were no users.
2019-11-25 17:54:52 -08:00
Julian Knutsen
f3faf4bb63
Persist changes to ProtectedStorageEntrys
With the addition of ProtectedStorageEntrys, there are now persistable
maps that have different payloads and the same keys. In the
ProtectedDataStoreService case, the value is the ProtectedStorageEntry
which has a createdTimeStamp, sequenceNumber, and signature that can
all change, but still contain an identical payload.

Previously, the service was only updating the on-disk representation on
the first object and never again. So, when it was recreated from disk it
would not have any of the updated metadata. This was just copied from the
append-only implementation where the value was the Payload
which was immutable.

This hasn't caused any issues to this point, but it causes strange behavior
such as always receiving seqNr==1 items from seednodes on startup. It
is good practice to keep the in-memory objects and on-disk objects in
sync and removes an unexpected failure in future dev work that expects
the same behavior as the append-only on-disk objects.
2019-11-25 17:54:52 -08:00
Julian Knutsen
66f71e59f8
[TESTS] Introduce MapStoreServiceFake
Now that we want to make changes to the MapStoreService,
it isn't sufficient to have a Fake of the ProtectedDataStoreService.

Tests now use a REAL ProtectedDataStoreService and a FAKE MapStoreService
to exercise more of the production code and allow future testing of
changes to MapStoreService.
2019-11-25 17:54:44 -08:00
Julian Knutsen
685824b0d9
[REFACTOR] Inline saveNowInternal
Only one caller after deadcode removal.
2019-11-25 14:10:42 -08:00
Julian Knutsen
d4d2f262d6
[BUGFIX] Shorter delay values not taking precedence
Fix a bug in the FileManager where a saveLater called with a low delay
won't execute until the delay specified by a previous saveLater call.

The trade off here is the execution of a task that returns early vs.
losing the requested delay.
2019-11-25 14:09:23 -08:00
Julian Knutsen
1895802681
[DEADCODE] Clean up FileManager.java 2019-11-25 14:00:27 -08:00
Julian Knutsen
22080037ba
Clean up AtomicBoolean usage in FileManager
Although the code was correct, it was hard to understand the relationship
between the to-be-written object and the savePending flag.

Trade two dependent atomics for one and comment the code to make it more
clear for the next reader.
2019-11-25 13:56:40 -08:00
Julian Knutsen
3d571c4ca3
[BUGFIX] Fix duplicate sequence number use case (startup)
Fix a bug introduced in d484617385 that
did not properly handle a valid use case for duplicate sequence numbers.

For in-memory-only ProtectedStoragePayloads, the client nodes need a way
to reconstruct the Payloads after startup from peer and seed nodes. This
involves sending a ProtectedStorageEntry with a sequence number that
is equal to the last one the client had already seen.

This patch adds tests to confirm the bug and fix as well as the changes
necessary to allow adding of Payloads that were previously seen, but
removed during a restart.
2019-11-25 08:13:49 -08:00
Florian Reimair
4c9d915031
Merge pull request #3674 from bodymindarts/fix-bsq-monetary-format
Use correct monetary format in BsqFormatter
2019-11-25 12:37:54 +01:00
Devin Bileck
70296a94af
Update strings to reflect bisq is exchange network
Motivated by changes done to the website, as described in
https://github.com/bisq-network/bisq-website/pull/280
2019-11-25 00:28:50 -08:00
Steven Barclay
64a548abba
Fix #3662: Malformed trade chat & dispute speech bubbles
Prevent the 'arrow' of a message bubble from being sporadically anchored
to the wrong side - appearing on the left instead of the right hand side
of the bubble. This is due to the same ListCell object being reused by
JavaFX for different bubbles as the user scrolls up and down the chat
pane, which requires that the anchors of each arrow be properly cleared
between ListCell.updateItem(..) calls.

To this end, move the block of AnchorPane.clearConstraints(..) calls to
the beginning of the updateItem(..) method, as the apparent assumption
that 'updateItem(item, empty = true)' will always be called to clear the
given ListCell before reusing it as a new bubble turns out to be wrong.
2019-11-25 03:02:10 +00:00
chimp1984
ff10f7cf3f
Only show accepted bonded roles in bond view.
Fixes #3271

Replaces https://github.com/bisq-network/bisq/pull/3320
2019-11-24 13:10:10 -05:00
Justin Carter
fe00f4aac9
Use correct monetary format in BsqFormatter
Also remove logic regarding base currency. Only BTC is currently
supported so there is no need to keep the logic around.
2019-11-24 07:59:02 +01:00
Steven Barclay
fc7d31ef83
Prevent taking of offers with unequal bank account types
Use stricter criteria when deciding which of the taker's accounts (if
any) are valid for a given offer. Specifically, prevent National Bank
accounts from being used to take Same / Specific Bank(s) offers, so the
three payment method types can never being mixed.

This prevents an error on the trading peer when the trade starts, due to
enforcement of equal maker & taker payment method IDs (except for SEPA)
in the Contract payload constructor.

This partially addresses #3602, where the erroneous peer response causes
the taker to be presented with a confusing timeout.
2019-11-24 05:08:42 +00:00
Steven Barclay
e5afb17269
Use strict stubbing for ReceiptValidatorTest to avoid confusion
Remove redundant stubs from the MoneyGram and Western Union tests and
ensure that all such stubs result in failure. In particular, the 'offer'
mock is never accessed directly by ReceiptValidator.
2019-11-24 02:22:11 +00:00
Justin Carter
8982612ddc
Additional cleanup of redundant DI annotations 2019-11-22 20:09:10 +01:00
Julian Knutsen
6e2ea6e3ed
[TESTS] Clean up remove verification helpers
Now that there are cases where the SequenceNumberMap and Broadcast
are called, but no other internal state is updated, the existing helper
functions conflate too many decisions. Remove them in favor of explicitly
defining each state change expected.
2019-11-22 08:42:58 -08:00
Julian Knutsen
0472ffc794
Broadcast remove-before-add messages to P2P network
In order to aid in propagation of remove() messages, broadcast them
in the event the remove is seen before the add.
2019-11-22 08:35:57 -08:00
Julian Knutsen
931c1f47b4
[TESTS] Allow remove() verification to be more flexible
Now that we have introduced remove-before-add, we need a way
to validate that the SequenceNumberMap was written, but nothing
else. Add this feature to the validation path.
2019-11-22 08:16:02 -08:00
Justin Carter
d4e7f86ff6
Use generic javax imports for DI 2019-11-22 14:50:21 +01:00
Justin Carter
035dc4bb2a
Remove @FxmlView from abstract view classes 2019-11-22 14:38:41 +01:00
lukasz
fbfda8e151
Split EmptyWalletWindow into BsqEmptyWalletWindow and BtcEmptyWalletWindow 2019-11-22 14:21:48 +01:00
Christoph Atteneder
d12a4049ad
Merge pull request #3659 from rex4539/typos
Fix some even more typos
2019-11-22 14:12:29 +01:00
Christoph Atteneder
c0108b83af
Merge pull request #3655 from lusarz/refactor-offer-view
Refactor OfferView constructor
2019-11-22 14:11:49 +01:00
Christoph Atteneder
cb2093a54c
Merge pull request #3654 from lusarz/refactor-use-inject
Use dependency injection in FilterWindow and SendAlertMessageWindow
2019-11-22 14:10:35 +01:00
Christoph Atteneder
8ffc4b0a24
Merge pull request #3653 from lusarz/refactor-send-private-notification
Remove redundant interfaces from SendPrivateNotificationWindow
2019-11-22 14:08:39 +01:00
Dimitris Apostolou
a718c885fc
Fix typos 2019-11-22 14:05:50 +02:00
Christoph Atteneder
0ac6bf1307
Only allow seller side to sign accounts
This prevents a scammer to use publicly known account details
(without being in control of the account) as a seller to get
signed by a buyer. The money received in the seller account might
not be detected by the legitimate owner and/or the money not sent back.
30 days later the scammer could use this signed account as seed to peer sign other stolen accounts.
2019-11-22 11:32:43 +01:00
Christoph Atteneder
46ce873b01
Add additional trade amount limit for trades that qualify for account signing
Should make it easier to detect by a stolen bank account owner as buyer that an outgoing transactions is taking place.
2019-11-22 11:26:46 +01:00
Christoph Atteneder
90bf1388da
Merge pull request #3658 from bodymindarts/missing-annotations
Add missing @Named annotations for CoinFormatter injection
2019-11-22 11:11:12 +01:00
Justin Carter
88d031fdd3
Add missing @Named annotations for CoinFormatter injection 2019-11-22 11:02:40 +01:00
Christoph Atteneder
f48f9244e0
Merge pull request #3647 from rex4539/more-typos
Fix some more typos and cleanup
2019-11-21 15:16:57 +01:00
lukasz
8917df94ee
Refactor OfferView constructor 2019-11-21 15:16:38 +01:00
lukasz
f3622c280b
Use dependency injection in FilterWindow and SendAlertMessageWindow 2019-11-21 11:48:29 +01:00
lukasz
e23ad9eb71
Remove redundant interfaces from SendPrivateNotificationWindow 2019-11-21 11:28:22 +01:00
Dimitris Apostolou
594fc08035
Fix typos and cleanup 2019-11-21 11:17:48 +02:00
Christoph Atteneder
02d521aeb1
Merge pull request #3651 from stejbac/ungenerify-popup-class
Un-generify Popup class
2019-11-21 10:04:38 +01:00
Christoph Atteneder
871051f8fb
Merge pull request #3643 from rex4539/fix-typos
Fix typos and cleanup
2019-11-21 09:53:26 +01:00
Christoph Atteneder
42dfc6a158
Get monitor up to speed again (#3633)
* Updated price node list for monitor

* Price monitor is more resilient against timeouts

Recenty, a price node got removed. Unfortunately, this node
has been the first in the list of configured price nodes in
the monitor configuration.

A misplaced catch block caused the loop to stop instead of
trying the next configured price node in the list.

* Monitor selects a price node randomly

Up until now, the monitor always chose the price nodes
in their configured order. This resulted in querying
always the same node and thus, create a bigger system
load for this very node. Only in case of a failure,
the monitor moved on to another node.

Shuffling the list of nodes prior to querying provides
at least some load balancing for the price nodes.

* Fixed monitor market API query

The format of the market API response changed. Formerly,
there has been one line, now it is pretty print json.

* Add RefundAgent messages to monitor

Add the relatively new RefundAgent message to the monitor.

* Adjust monitor timeout

Observed, that a timeout of one minute works better than
the original 90 seconds.
2019-11-21 09:42:40 +01:00
Christoph Atteneder
a77c09bcc1
Remove redundant interfaces from FilterWindow and SendAlertMessageWindow (#3617)
* Refactor FilterWindow - remove redundant interfaces

* Refactor SendAlertMessageWindow - remove redundant interfaces
2019-11-21 09:32:57 +01:00
Julian Knutsen
372c26de74
Implement remove-before-add message sequence behavior
It is possible to receive a RemoveData or RemoveMailboxData message
before the relevant AddData, but the current code does not handle
it.

This results in internal state updates and signal handler's being called
when an Add is received with a lower sequence number than a previously
seen Remove.

Minor test validation changes to allow tests to specify that only the
SequenceNumberMap should be written during an operation.
2019-11-20 16:31:56 -08:00
Julian Knutsen
526aee5ed4
[TESTS] Allow tests to validate SequenceNumberMap write separately
In order to implement remove-before-add behavior, we need a way to
verify that the SequenceNumberMap was the only item updated.
2019-11-20 16:31:56 -08:00
Devin Bileck
e99d450725
Update based on review feedback
Mock the SeedNodeRepository superclass, thus eliminating the dependency
to core.
2019-11-20 16:29:06 -08:00
Julian Knutsen
793e84d888
[DEAD CODE] Remove getProtectedDataStoreMap
The only user has been migrated to getMap(). Delete it so future
development doesn't have the same 20-byte vs 32-byte key issue.
2019-11-20 16:23:41 -08:00
Julian Knutsen
455f7d2689
[BUGFIX] Use 32-byte key in requestData path
Addresses the second half of #3629 by using the HashMap, not the
protectedDataStore to generate the known keys in the requestData path.

This won't have any bandwidth reduction until all seednodes have the
update and only have the 32-byte key in their HashMap.

fixes #3629
2019-11-20 16:20:38 -08:00
Julian Knutsen
e212240b88
[BUGFIX] Reconstruct HashMap using 32-byte key
Addresses the first half of #3629 by ensuring that the reconstructed
HashMap always has the 32-byte key for each payload.

It turns out, the TempProposalStore persists the ProtectedStorageEntrys
on-disk as a List and doesn't persist the key at all. Then, on
reconstruction, it creates the 20-byte key for its internal map.

The fix is to update the TempProposalStore to use the 32-byte key instead.
This means that all writes, reads, and reconstrution of the TempProposalStore
uses the 32-byte key which matches perfectly with the in-memory map
of the P2PDataStorage that expects 32-byte keys.

Important to note that until all seednodes receive this update, nodes
will continue to have both the 20-byte and 32-byte keys in their HashMap.
2019-11-20 16:15:52 -08:00
Steven Barclay
a26366ee0d
Un-generify Popup class
Remove the type parameter from Popup<T>, as it appears to have never
been used or set anywhere in the code. (This mainly involves replacing a
lot of "new Popup<>" occurrences.)
2019-11-20 21:27:11 +00:00
Dimitris Apostolou
587b55d37b
Fix typos and cleanup 2019-11-20 22:56:19 +02:00
Florian Reimair
ab214d3fe7
Merge pull request #3637 from rex4539/fix-typos
Fix typos and cleanup in documentation
2019-11-20 10:44:44 +01:00
Christoph Atteneder
928b35c7d3
Merge pull request #3635 from cbeams/upgrade-shadow-plugin
Upgrade Gradle Shadow plugin from 4.0.2 => 5.2.0
2019-11-20 10:43:45 +01:00