[bisq-network/bisq] Add cancel trade feature (#4514)

chimp1984 notifications at github.com
Thu Sep 10 23:16:26 UTC 2020


Implements https://github.com/bisq-network/proposals/issues/251

This PR adds the feature to cancel a trade for teh BTC buyer at trade step 2 (payment started screen).
If he requests for cancellation he will get refunded the min sec. deposit which would be use in a mediation case in case he loses (0.003 BTC). The rest of his sec. deposit goes to the seller. The seller will receive the message and can accept, reject or decide later. If accepted the trade get closed with the payout distribution that the seller receives his trade amount, his deposit + the deposit of the buyer minus the 0.003 BTC. If he rejects the trade continues as normal. The buyer could still click the payment started button at any time and that would trigger the next step in the protocol and the cancelation request is ignored. 
If a dispute gets opened the cancellation is disabled.

The feature needs good testing with the different scenarios.

It comes also with a few refactorings in the trade process code base. Most are not functional changes but some are. So we should get the whole trade process a good test.
You can view, comment on, or merge this pull request online at:

  https://github.com/bisq-network/bisq/pull/4514

-- Commit Summary --

  * Refactor: Rename method
  * Refactor: Move initialize before activate, add separator lines
  * Refactor: Move methods
  * Refactor: Make initialize public
  * Functional change: Do not call initialize in constructor
  * Refactor: Do check for trade.getPayoutTx() == null at beginning and return.
  * Refactor: Move check for trade.getPayoutTx() == null to sub classes
  * Refactor: Rename class for more generic use cases.
  * Functional change: Avoid possibility to add duplicated tradable to list
  * Add cancel trade domain
  * Refactor: Rename id to tradeId
  * Remove unused field
  * Refactor: Rename CanceledTradeState to HandleCancelTradeRequestState
  * Add RequestCancelTradeState
  * Separate states completed
  * Remove cancel support at step 3. Once buyer has send payment we do
  * Rename RequestCancelTradePresentation and HandleCancelTradeRequestPresentation
  * Refactor: Move classes
  * Refactor: Rename enums
  * Refactor: Move enums to seller and buyer trade
  * Refactor: Rename enums
  * Split buyer seller protocol classes.
  * Refactor: Move method, improve comments
  * Refactor: Move message classes to new package
  * Refactor: Move dispute message classes to new dispute package
  * Refactor: Rename package
  * Only log error at DelayedPayoutTx check if deposit tx is not null
  * Merge branch 'master_upstream' into add-cancel-trade-feature
  * Improve text, dont use action style for button
  * Refactor: Rename classes
  * Getting the feature polished... Many small changes...
  * Mark refreshInterval transient. Move static MAX_REFRESH_INTERVAL to top
  * Use more convenient TimeUnit.HOURS.toMillis API
  * Add comments about wrong usage of trade protocol
  * Move cancelTrade states to sub classes
  * Update comments, remove todo

-- File Changes --

    M core/src/main/java/bisq/core/btc/wallet/TradeWalletService.java (62)
    M core/src/main/java/bisq/core/proto/network/CoreNetworkProtoResolver.java (14)
    M core/src/main/java/bisq/core/trade/BuyerAsMakerTrade.java (8)
    M core/src/main/java/bisq/core/trade/BuyerAsTakerTrade.java (8)
    M core/src/main/java/bisq/core/trade/BuyerTrade.java (86)
    M core/src/main/java/bisq/core/trade/DelayedPayoutTxValidation.java (5)
    M core/src/main/java/bisq/core/trade/SellerAsMakerTrade.java (8)
    M core/src/main/java/bisq/core/trade/SellerAsTakerTrade.java (8)
    M core/src/main/java/bisq/core/trade/SellerTrade.java (94)
    M core/src/main/java/bisq/core/trade/TradableList.java (9)
    M core/src/main/java/bisq/core/trade/Trade.java (91)
    A core/src/main/java/bisq/core/trade/TradeCancellationManager.java (147)
    M core/src/main/java/bisq/core/trade/TradeManager.java (12)
    A core/src/main/java/bisq/core/trade/messages/cancel/CancelTradeRequestAcceptedMessage.java (93)
    A core/src/main/java/bisq/core/trade/messages/cancel/CancelTradeRequestRejectedMessage.java (82)
    A core/src/main/java/bisq/core/trade/messages/cancel/RequestCancelTradeMessage.java (101)
    R core/src/main/java/bisq/core/trade/messages/mediation/MediatedPayoutTxPublishedMessage.java (4)
    R core/src/main/java/bisq/core/trade/messages/mediation/MediatedPayoutTxSignatureMessage.java (4)
    M core/src/main/java/bisq/core/trade/protocol/BuyerAsMakerProtocol.java (23)
    M core/src/main/java/bisq/core/trade/protocol/BuyerAsTakerProtocol.java (22)
    A core/src/main/java/bisq/core/trade/protocol/BuyersCancelTradeProtocol.java (141)
    A core/src/main/java/bisq/core/trade/protocol/CancelTradeProtocol.java (57)
    M core/src/main/java/bisq/core/trade/protocol/ProcessModel.java (17)
    M core/src/main/java/bisq/core/trade/protocol/SellerAsMakerProtocol.java (5)
    M core/src/main/java/bisq/core/trade/protocol/SellerAsTakerProtocol.java (5)
    A core/src/main/java/bisq/core/trade/protocol/SellersCancelTradeProtocol.java (150)
    M core/src/main/java/bisq/core/trade/protocol/TradeProtocol.java (26)
    M core/src/main/java/bisq/core/trade/protocol/TradingPeer.java (5)
    A core/src/main/java/bisq/core/trade/protocol/tasks/SendMailboxMessageTask.java (94)
    D core/src/main/java/bisq/core/trade/protocol/tasks/SendPayoutTxPublishedMessage.java (98)
    A core/src/main/java/bisq/core/trade/protocol/tasks/buyer/cancel/ProcessCancelTradeRequestAcceptedMessage.java (83)
    A core/src/main/java/bisq/core/trade/protocol/tasks/buyer/cancel/ProcessCancelTradeRequestRejectedMessage.java (61)
    A core/src/main/java/bisq/core/trade/protocol/tasks/buyer/cancel/SendRequestCancelTradeMessage.java (100)
    A core/src/main/java/bisq/core/trade/protocol/tasks/buyer/cancel/SetupCanceledTradePayoutTxListener.java (64)
    A core/src/main/java/bisq/core/trade/protocol/tasks/cancel/SignCanceledTradePayoutTx.java (107)
    M core/src/main/java/bisq/core/trade/protocol/tasks/mediation/ProcessMediatedPayoutSignatureMessage.java (2)
    M core/src/main/java/bisq/core/trade/protocol/tasks/mediation/ProcessMediatedPayoutTxPublishedMessage.java (2)
    M core/src/main/java/bisq/core/trade/protocol/tasks/mediation/SendMediatedPayoutSignatureMessage.java (2)
    M core/src/main/java/bisq/core/trade/protocol/tasks/mediation/SendMediatedPayoutTxPublishedMessage.java (12)
    M core/src/main/java/bisq/core/trade/protocol/tasks/seller/SellerSendPayoutTxPublishedMessage.java (10)
    A core/src/main/java/bisq/core/trade/protocol/tasks/seller/cancel/BroadcastCanceledTradePayoutTx.java (54)
    A core/src/main/java/bisq/core/trade/protocol/tasks/seller/cancel/FinalizeCanceledTradePayoutTx.java (119)
    A core/src/main/java/bisq/core/trade/protocol/tasks/seller/cancel/ProcessRequestCancelTradeMessage.java (65)
    A core/src/main/java/bisq/core/trade/protocol/tasks/seller/cancel/SendCancelTradeRequestAcceptedMessage.java (106)
    A core/src/main/java/bisq/core/trade/protocol/tasks/seller/cancel/SendCancelTradeRequestRejectedMessage.java (88)
    M core/src/main/resources/i18n/displayStrings.properties (40)
    M desktop/src/main/java/bisq/desktop/main/offer/MutableOfferViewModel.java (2)
    M desktop/src/main/java/bisq/desktop/main/portfolio/closedtrades/ClosedTradesViewModel.java (6)
    M desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/PendingTradesDataModel.java (6)
    M desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/PendingTradesViewModel.java (1)
    M desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/TradeSubView.java (1)
    M desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/TradeStepView.java (90)
    M desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/buyer/BuyerStep1View.java (6)
    M desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/buyer/BuyerStep2View.java (220)
    M desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/buyer/BuyerStep3View.java (11)
    M desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/buyer/BuyerStep4View.java (37)
    A desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/buyer/BuyersCancelTradePresentation.java (203)
    M desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/seller/SellerStep1View.java (3)
    M desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/seller/SellerStep2View.java (79)
    M desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/seller/SellerStep3View.java (190)
    M desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/seller/SellerStep4View.java (2)
    A desktop/src/main/java/bisq/desktop/main/portfolio/pendingtrades/steps/seller/SellersCancelTradePresentation.java (233)
    M proto/src/main/proto/pb.proto (28)

-- Patch Links --

https://github.com/bisq-network/bisq/pull/4514.patch
https://github.com/bisq-network/bisq/pull/4514.diff

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/bisq-network/bisq/pull/4514
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bisq.network/pipermail/bisq-github/attachments/20200910/f9ef57e4/attachment-0001.html>


More information about the bisq-github mailing list