Commit Graph

359 Commits

Author SHA1 Message Date
woodser
0372af663a synchronize access to account age witness maps to fix missing hash 2023-02-09 08:48:45 -05:00
woodser
5feb487039 arbitrator deletes signed offer when key image confirmed spent 2023-02-07 14:31:14 -05:00
woodser
60dc4901e4 move trade wallet management functions from XmrWalletService to Trade
persist security deposits in TradePeer
set deposit tx and reserved key images when deposit tx created
listen to account service in trade manager
2023-02-07 14:31:03 -05:00
woodser
aafb47e2ce UI cleanup, can confirm payment sent and received after dispute opened
show buyer and seller trade fee in dispute summary window
remove "Error polling trade wallet warning" if disconnected
show notification when dispute opened or closed in legacy app
resolve disputes under Support > Arbitration, hide other views
show "support ticket opened" when dispute request is acked
rename all variations of TradingPeer to TradePeer
rename "payment started" to "payment sent" for consistency
2023-02-07 14:31:03 -05:00
woodser
15d2c24a82 reprocess payout messages on error to improve resilience
reprocess on curved schedule, restart, or connection change
invalid messages are nacked using IllegalArgumentException
disputes are considered open by ack on chat message
don't show trade completion screen until payout published
cannot confirm payment sent/received while disconnected from monerod
add operation manual w/ instructions to manually open dispute
close account before deletion
fix popup with error "still unconfirmed after X hours" for arbitrator
misc refactoring and cleanup
2023-02-02 15:23:48 -05:00
woodser
a0235c8ebd
add date and key images to SignedOffer
arbitrator retains failed trades after reserve tx received
legacy ui shows trade details including reserve tx, with or w/o contract
fix npe searching arbitrator tickets due to null payment accounts
synchronize offer book list items
fix npe before key image poller initialized
2023-01-26 08:26:22 -05:00
woodser
882f1c070a fetch deposit txs unless cached and confirmed 2023-01-24 14:02:41 -05:00
woodser
23393bb4b8 resend dispute closed message with payout tx on updated multisig info
advance dispute state if progress
SupportManager processes messages in order
re-arrange domain initialization to fix null pub key in DisputeManager
2023-01-24 14:02:41 -05:00
woodser
533639bd19 send dispute closed messages independently 2023-01-24 14:02:41 -05:00
woodser
e6baf0260a delete backup wallets if confirmed unfunded 2023-01-24 14:02:41 -05:00
woodser
9877ba87a4 delete and restore account restarts application automatically
added standard input to keepalive loop for issuing commands to daemon

Co-authored-by: duriancrepe <duriancrepe@protonmail.com>
2023-01-24 08:25:59 -05:00
woodser
350d2d5398 fix error changing wallet password from default password
HavenoUtils.executeTasks() throws exception from any tasks
2023-01-21 07:32:36 -05:00
woodser
f1b9829b09 remove sender node address and pub key ring from non-mailbox messages 2023-01-21 07:32:36 -05:00
woodser
932854d7b2 fix persistence of isDepositsConfirmedMessagesDelivered in ProcessModel 2023-01-19 19:14:34 -05:00
woodser
422819efb4 support actual buyer & seller security deposit in TradeInfo 2023-01-19 19:14:34 -05:00
woodser
b745eaccd4 improve tx verification
verify sufficient security deposit which may absorb tx fee
payout binary search applies tolerance to security deposit
verify payouts sum to wallet balance
verify custom winner amount <= wallet balance
2023-01-19 19:14:34 -05:00
woodser
7f26119515 check peer date while initializing trade instead of deposits confirmed 2023-01-16 16:27:15 -05:00
woodser
a49611a234 verify payout & dispute payout tx fees are within range of recreated tx 2023-01-16 16:27:15 -05:00
woodser
9260cf53ee verify arbitrator signature when dispute closed 2023-01-16 11:35:09 -05:00
woodser
435fc164b2 resend deposits confirmed messages until delivered 2023-01-15 10:58:45 -05:00
woodser
cd7f176e2b fix 'trade not found' bug caused by open offer being spent
do not remove open offer with spent funds if reserved for trade
fix concurrent modification exception
2023-01-15 10:58:45 -05:00
woodser
266d129462 don't delete wallet backup if possibly funded
support new trade state: PUBLISH_DEPOSIT_TX_REQUEST_FAILED
2023-01-15 10:58:45 -05:00
woodser
a8114e147d change log warning to info on error fetching from price provider 2023-01-14 07:37:53 -05:00
woodser
5db80eac17 resend payment sent/received messages on startup if not arrived 2023-01-14 07:37:53 -05:00
woodser
21fcdc7e00 use unique deterministic ids for mailbox messages 2023-01-14 07:37:53 -05:00
woodser
308f6e8077 handle errors initializing trade after deposits requested
offer remains valid until trade initialized
delete maker and taker trades on error after deposits requested
schedule trade deletion if unfunded after timeout or startup
DepositResponse supports error message to confirm failure
show deposit tx ids in trade details window
2023-01-13 07:26:01 -05:00
woodser
646380bc7a minimum support for account witness verification & storage based on bisq
verify peer witness data and share with arbitrator for signing
arbitrator can sign witness hash, owner pub key (see developer-guide.md)
taker signs offer id nonce in SendOfferAvailabilityRequest
maker signs deposit tx hash in SendSignContractRequest
buyer verifies witness with payload on deposit confirmation
seller verifies witness with payload on payment sent message
add synchronization to User paymentAccountsAsObservable and elsewhere
2023-01-11 08:54:37 -05:00
woodser
963d92478d overwrite dispute agent with same address 2023-01-11 08:54:37 -05:00
woodser
be88f57e09 don't warn if trade wallet is null on poll 2023-01-11 08:54:37 -05:00
woodser
39f86817e0 fetch prices on same thread if 0 delay 2023-01-10 08:32:44 -05:00
woodser
3e0473719b currency util uses uppercase currency code 2023-01-10 08:32:44 -05:00
woodser
9d3855ad2e synchronize open offers to fix concurrent modification exception 2023-01-02 17:05:09 +00:00
woodser
2c3dabfbf7 recover from error closing dispute, show payout confirmation w/ tx fee 2022-12-30 18:49:07 +00:00
woodser
48baa1e602 use actual security deposits in dispute resolution 2022-12-30 18:49:07 +00:00
woodser
c5f6aeb4cc sync and save wallet when closing ticket, fix NPE 2022-12-27 12:56:36 +00:00
woodser
f2892d5157 close open disputes on trade completion 2022-12-27 12:56:36 +00:00
woodser
2d7654b8d7 verify maker and taker fees 2022-12-27 12:56:36 +00:00
woodser
eae3060c63 start seednode with monerod address to resolve warning
initialize connection immediately if monerod address given
2022-12-23 16:21:24 +00:00
woodser
1c6d4cec83 cache incoming txs to improve performance of funds tab 2022-12-23 16:21:24 +00:00
woodser
a21628ad0d grpc offer info returns atomic units 2022-12-23 16:21:24 +00:00
woodser
fb1b8f8bd8 PriceFeedService.requestAllPrices() cycles providers and updates cache 2022-12-23 16:21:24 +00:00
woodser
ad17228b38 separate withdraw tx fee and amount in ui 2022-12-23 08:53:26 +00:00
woodser
11c3a786c9 update price server links 2022-12-22 09:35:27 +00:00
woodser
06c2ce432b take offer funded from available balance 2022-12-21 23:40:28 +00:00
woodser
2b7beff84e remove "Returning balance for subaddress" printout 2022-12-21 15:29:12 +00:00
woodser
e8242612b2 update haveno support links to monero.social, update unconfirmed warning 2022-12-21 15:29:12 +00:00
woodser
67a8ac1236 dispute can be opened after 1d (mainnet), 30m (stagenet), or 1m (local) 2022-12-21 15:29:12 +00:00
woodser
a3f0543e4f remove redundant MAX_FIAT_STAGENET_XMR 2022-12-21 15:29:12 +00:00
woodser
e5cf2f8429 fix potential double spend by locking wallet when thawing outputs 2022-12-21 15:29:12 +00:00
woodser
e4046bd84e fix dispute and trader chat button and states
ui can open dispute after payment sent
ui indicates if dispute opened by self or peer
2022-12-21 08:33:59 +00:00
woodser
f13e1ec610 cannot open dispute until both deposits confirmed and available 2022-12-20 10:14:46 +00:00
woodser
e85682e635 fix resolved dispute chat message 2022-12-20 10:14:46 +00:00
woodser
38864d71ff implement batch key image polling for offer book in background 2022-12-19 11:26:09 +00:00
napoly
1adf7bd73f
avoid redundant wallet backups, max 10 backups (#505)
Co-authored-by: woodser <woodser@protonmail.com>
2022-12-18 15:15:55 +00:00
napoly
217e7e03a2 dockerize deamons with docker compose 2022-12-16 15:01:58 +00:00
woodser
f11c816cda enforce trade limit over grpc 2022-12-16 09:24:53 +00:00
woodser
31dfdd7710 remove btc fee service 2022-12-16 09:16:11 +00:00
woodser
3314eac881 stability improvements
synchronize timeout timer
fix concurrent modification exceptions
use wallet lock when saving multisig wallets
2022-12-16 09:16:11 +00:00
woodser
9fda20f88b update to new xmr price server api
remove timestamp data structure
2022-12-16 09:16:11 +00:00
napoly
13b5d123bb increase fiat trade limit to 2 XMR 2022-12-15 21:41:27 +00:00
napoly
3ba106d466 fix wallet rpc initialization 2022-12-04 17:20:40 +00:00
woodser
dd0a307a84 support funding make or take offer directly
QR code encodes payment URI
security deposit absorbs miner fee up to 5%
use binary search to maximize security deposit and minimize dust
show itemized funding popup on create offer
2022-12-04 14:38:22 +00:00
napoly
bd70b935e4 P2P status indicator with update prompt
Co-authored-by: jmacxx <47253594+jmacxx@users.noreply.github.com>
Co-authored-by: Christoph Atteneder <christoph.atteneder@gmail.com>
2022-12-01 10:14:07 +00:00
woodser
a2929035bc only update balances if not terminated 2022-11-28 15:28:40 +00:00
woodser
a408b0e7ae trade initialization defers opening and syncing wallet if idling 2022-11-28 15:28:40 +00:00
woodser
7ca3b8cee1 re-send payment sent/received messages on startup if not arrived 2022-11-28 15:28:40 +00:00
woodser
e20e23dbc5 stop initializing trades on shutdown 2022-11-28 15:28:40 +00:00
woodser
7062fa9e79 message handlers return synchronously 2022-11-28 15:28:40 +00:00
woodser
a266fab6ec process mailbox messages in order 2022-11-28 15:28:40 +00:00
woodser
456ef912ed delete trade wallet on error if deposit not requested 2022-11-26 22:28:30 +00:00
woodser
79db2bc0af arbitrator submits deposit txs and checks result before relaying 2022-11-26 22:28:30 +00:00
woodser
9aa6bbeff6 must provide fixed price unless using market price 2022-11-26 22:28:30 +00:00
woodser
9c5fdb5d4a finish processing PaymentReceivedMessage 2022-11-24 14:25:55 +00:00
woodser
4c7075b0bd set payout tx hash on payment received unless unlocked 2022-11-24 12:33:00 +00:00
napoly
d3949614c6 reject creating crypto payment account with invalid currency code or address 2022-11-24 11:34:22 +00:00
napoly
27fdf87e84 fix dispute deposit transaction IDs in legacy UI 2022-11-23 09:55:35 +00:00
woodser
0d981a2df6 get trade account payloads over grpc, support crypto account forms 2022-11-23 09:42:43 +00:00
napoly
1f61e82946 fix transaction IDs in legacy UI trade info views 2022-11-13 07:45:25 -05:00
woodser
d9f2ce425f improve performance by pre-fetching txs for subaddress queries 2022-11-07 08:26:30 -05:00
woodser
4fb62d8669 fix confirmation progress in ui
fix my role label to show during trade initialization
support arbitrator role label
2022-11-07 08:26:30 -05:00
woodser
247087ef46 refactor arbitration protocol
add dispute states and open/close messages routed through arbitrator
both traders publish dispute payout tx, winner is default
verify signatures of payment sent and received messages
seller sends deposit confirmed message to arbitrator
buyer sends payment sent message to arbitrator
arbitrator slows trade wallet sync rate after deposits confirmed
various refactoring, fixes, and cleanup
2022-11-07 08:26:30 -05:00
woodser
363f783f30 accurate tx fee estimation based on weight 2022-10-28 08:55:58 -04:00
woodser
416d21a8aa update to monero-java v0.7.8 2022-10-28 08:55:58 -04:00
woodser
f36dde2857 refactor payout protocol
send payment key & multisig hex on deposit confirm for resilience
support payout published, confirmed, unlocked states
keep trade wallets open throughout trade
close and delete trade wallets when payout unlocks
arbitrator idles trade wallets after deposits confirm (1/hour)
2022-10-27 08:06:18 -04:00
woodser
e79450f65e fix trade is in an invalid state warning
Co-authored-by: duriancrepe <duriancrepe@protonmail.com>
2022-10-17 11:22:01 -04:00
duriancrepe
2eb275281e fix packageInstallers for all platforms 2022-10-12 10:42:34 -04:00
woodser
79021dc9c6 revert getters for peer and arbitrator node addresses to avoid NPEs 2022-10-04 15:35:01 -04:00
woodser
767f4cf8c0 reset address entries of taker's offer model when done
fixes the "outdated addressEntry" warning
2022-10-04 15:35:01 -04:00
woodser
139896bced seller resets address entries on payout published 2022-10-02 14:41:24 -04:00
woodser
58aad5e6ae expect deposits to be confirmed or unlocked when payment sent 2022-10-02 14:41:24 -04:00
woodser
5bd05af890 synchronize price requests 2022-10-02 14:41:24 -04:00
woodser
dc9c04759f listen for published payout tx
fix "Swapping pending OFFER_FUNDING" warning
move payout tx from TradingPeer to Trade
2022-10-02 14:41:24 -04:00
woodser
5fbc41946e
refactor node addresses and pub key rings to TradingPeer (#460) 2022-10-01 13:29:38 -04:00
woodser
c153afff67
arbitrator does not share payment account key until after first confirmation (#457)
use payout address from contract instead of PaymentSentMessage
2022-10-01 07:47:18 -04:00
woodser
93472b9759
fixes based on refactored tests (#454)
log trade id with error
open dispute chat on user thread
fix null arbitrator signature by copying offer payload before modifying
2022-09-29 09:46:21 -04:00
woodser
5d45c08744 provide error message if price is unavailable for offer 2022-09-24 08:36:16 -04:00
woodser
c5f5a5af42 process messages on user thread and protocol tasks off user thread 2022-09-24 08:36:07 -04:00
woodser
d698555c9a trade completion fixes with payment key and multisig hex on confirmation
preserve peer multisig hex when arbitrator provides payment key
process payment received using persistent, non-transient data
payout_tx_published_msg represents payment_received_msg after payout
update arbitrator's peer address on payout published
schedule payment account key request after deposit request
2022-09-21 09:00:41 -04:00
woodser
c21ebe6a9d normalize names of protocol tasks 2022-09-21 09:00:41 -04:00
woodser
0388f283a7 remove open offer from books after deposit request 2022-09-21 09:00:41 -04:00
woodser
1f32fc2cbe seller decrypts buyer payment info on payment sent 2022-09-21 09:00:41 -04:00
woodser
64925d0137 close arbitrator trade by sending PayoutTxPublishedMessage 2022-09-21 09:00:41 -04:00
duriancrepe
9975d7398b
upgrade to Gradle 7.3.3 (#439)
* upgrade to Gradle 7.3.3

* add verification hashes for mac and windows

* add verification hash for windows
2022-09-19 08:59:57 -04:00
woodser
3f5fe671cd decrypt payment info after confirmation for double spend protection
retrieve decryption key from arbitrator if peer fails to send
2022-09-17 07:28:04 -04:00
woodser
355a6146b6 add confirmed trade state 2022-09-17 07:28:04 -04:00
erciccione
3b788d1fea fix typo in trade completed screen 2022-09-17 07:27:19 -04:00
woodser
a51aeeb484 offer book view checks for invalid signer or signature
merge OfferFilter into OfferFilterService
2022-09-17 07:26:12 -04:00
woodser
b95c689190 process payment confirmation messages off main thread 2022-09-02 14:28:00 -04:00
woodser
dbc7ff265a show wallet transaction dates 2022-09-02 14:28:00 -04:00
woodser
3da228750f fix jfx error on offer book added 2022-09-02 14:28:00 -04:00
woodser
b291fdae73 fix pub key validation error 2022-08-29 09:29:19 -04:00
woodser
857a1d0be8 fix npe validating pub key 2022-08-18 08:10:42 -04:00
woodser
f869aec688 change terminology from altcoins to cryptocurrencies 2022-08-18 08:10:42 -04:00
woodser
69899c8750 remove zec from main currency list 2022-08-17 14:49:49 -04:00
woodser
f464110fb5 update locked -> pending balance 2022-08-17 14:49:49 -04:00
woodser
cb10a65a83 fix npe in arbitrator when dispute is opened 2022-08-17 14:49:49 -04:00
erciccione
56412b749d improve some wording across the app 2022-08-17 09:08:21 -04:00
erciccione
2a50350cff prioritise conneting to our remote node RPC (if no local node)
and add credentials
2022-08-15 13:17:02 -04:00
woodser
f9d700074a cache txs fetched from daemon 2022-08-15 12:03:07 -04:00
woodser
54eee73c04 add mining fee padding to maker and taker reserve txs 2022-08-15 12:03:07 -04:00
woodser
2f1f1a788b fix issues going offline while completing trades 2022-08-15 12:03:07 -04:00
erciccione
12e3e3507e add 1 monero stagenet node and 2 haveno seednodes 2022-08-15 12:02:59 -04:00
woodser
3727d12ef6
select online, registered, and least used arbitrator (#400)
support registering and unregistering arbitrators over grpc
maker always sends InitTradeRequest to arbitrator
share original contract for comparision
remove backup arbitator from model
cleanup trade states
2022-08-13 09:47:33 -04:00
erciccione
757c7cf19c seednodes: update address 2022-08-12 09:09:29 -04:00
woodser
4901808844 fix possible concurrent modification exception 2022-08-09 14:21:38 -04:00
woodser
cebdef31c0 only remove trade if not in funded state
track sent vs seen deposit request state
cleanup trade phases
2022-08-09 14:21:38 -04:00
erciccione
fed7b22c90 pricenode: woodser's patch 2022-08-08 13:46:42 -04:00
woodser
f8f10a4d6b remove timeout processing payment sent message 2022-08-08 13:46:16 -04:00
woodser
3753a42023 update to monero-project v0.18.0.0, monero-java v0.7.2 2022-08-08 13:45:46 -04:00
woodser
333b7421f5 cleanup trade states, consolidate protocol tasks, remove old tasks 2022-07-31 14:51:27 -04:00
woodser
3d43ae1f20 confirm payment sent and received off main thread 2022-07-31 14:51:27 -04:00
woodser
50126874a0 add multisig wallet state and wait for multisig to complete
refactor trade protocol
2022-07-31 14:51:27 -04:00
woodser
f61fd09127 add grpc error handling for confirming payment sent and received 2022-07-31 14:51:27 -04:00
woodser
608c19a1d0 sync wallet on open 2022-07-29 18:04:47 -04:00
woodser
a5f457d8e9 fetch prices repeatedly when run as daemon 2022-07-29 18:04:35 -04:00
woodser
a3a5b96c06 stagenet deployment fixes
execute protocol tasks off main thread
fix confirmation progress indicators
fix expected unlock height
process sign contract request after contract signature requested
deposit listener only advances trade state
2022-07-28 14:35:40 -04:00
woodser
3dcaf67edd refactor trade protocol latch and timeouts 2022-07-25 22:57:06 -04:00
woodser
3f25a756ea fix legacy app freeze if insufficient funds to schedule offer 2022-07-25 22:57:06 -04:00
woodser
b6783dc732 thaw outputs not reserved for trade or offer on startup 2022-07-18 12:36:24 -04:00
woodser
a80a7eec5f check state before deleting trade wallet 2022-07-18 12:36:24 -04:00
woodser
477246f8f0 disconnect error handler when trade initialized 2022-07-18 12:36:24 -04:00
woodser
b4fe0f0ee6 handle timeout in trade initialization with protocol latch 2022-07-18 12:36:24 -04:00
woodser
83b8616f6f handle timeout during place offer protocol 2022-07-18 12:36:24 -04:00
erciccione
e726071841
replace stagenet seednode (#372) 2022-07-17 09:58:22 +02:00
woodser
6ca775da1b reserve correct offer amount based on buy or sell direction 2022-07-16 18:23:02 -04:00
woodser
c97ca852f5 remove btc fee rate from footer 2022-07-16 18:23:02 -04:00
woodser
588270678c remove seed from terminal 2022-07-16 18:23:02 -04:00
woodser
031f091f69 update trade completion message 2022-07-16 18:23:02 -04:00
woodser
14ada60c25 do not start local node when credentialed local node running
rename isMoneroNodeRunning() to isMoneroNodeOnline()
2022-07-16 18:23:02 -04:00
woodser
968a01abe1 handle error during sign offer protocol 2022-07-15 09:35:08 -04:00