Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conditionally block API's send payment sent/rcvd msgs #6247

Conversation

ghubstan
Copy link
Contributor

Fixes API bug incorrectly permitting payment sent / received msgs before trade deposit tx is confirmed. Also blocks payment rcvd confirmation msgs from being sent if payment sent msgs have not been sent (yet). API cannot depend on silent, UI purposed task runner errors if confirmpaymentstarted or confirmpaymentreceived msgs are sent outside the proper context. Throw a FailedPreconditionException instead, to be translated into the proper gPRC StatusRuntimeException before being sent to client.

The important change is in bisq.core.api.CoreTradesService:

  • For BTC buyers and sellers, block the messaging attempt if the taker deposit tx has not been confirmed.
  • For BTC sellers, block an attempt to send a confirmpaymentreceived message until after receiving a confirmpaymentstarted message has been sent from the buyer.

Also apitest send payment sent/rcvd precondition checks:

  • verifyPaymentSentMsgIsFromBtcBuyerPrecondition
  • verifyPaymentReceivedMsgIsFromBtcSellerPrecondition
  • verifyPaymentSentMsgDepositTxConfirmedPrecondition
  • verifyPaymentReceivedMsgDepositTxConfirmedPrecondition
  • verifyPaymentReceivedMsgAfterPaymentSentMsgPrecondition

Based on 'master'.

ghubstan added 9 commits June 13, 2022 21:16
Don't depend on silent, UI purposed task runner errors if confirmpaymentstarted
or confirmpaymentreceived msgs are sent outside the proper context.
Throw a FailedPreconditionException instead, and it will be translated
into the proper gPRC StatusRuntimeException before being sent to client.

For BTC buyers and sellers, block the messaging attempt if the taker
deposit tx has not been confirmed.

For BTC sellers, block an attempt to send a confirmpaymentreceived message
until after receiving a confirmpaymentstarted message has been sent from
the buyer.
Replaced by BSQ Swaps, and will be deprecated.
- verifyPaymentSentMsgIsFromBtcBuyerPrecondition
- verifyPaymentReceivedMsgIsFromBtcSellerPrecondition
- verifyPaymentSentMsgDepositTxConfirmedPrecondition
- verifyPaymentReceivedMsgDepositTxConfirmedPrecondition
- verifyPaymentReceivedMsgAfterPaymentSentMsgPrecondition

Changed a couple of related method names.
- verifyPaymentSentMsgIsFromBtcBuyerPrecondition
- verifyPaymentReceivedMsgIsFromBtcSellerPrecondition
- verifyPaymentSentMsgDepositTxConfirmedPrecondition
- verifyPaymentReceivedMsgDepositTxConfirmedPrecondition
- verifyPaymentReceivedMsgAfterPaymentSentMsgPrecondition
Copy link
Contributor

@ripcurlx ripcurlx left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

utACK

@ripcurlx ripcurlx added this to the v1.9.2 milestone Jun 20, 2022
@ripcurlx ripcurlx merged commit d5e0c53 into bisq-network:master Jun 20, 2022
@ghubstan ghubstan deleted the check-precondition-for-confirm-payment-sent-or-rcvd branch June 20, 2022 18:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants