robosats icon indicating copy to clipboard operation
robosats copied to clipboard

Improve chat to facilitate dispute solving

Open Reckless-Satoshi opened this issue 3 years ago • 3 comments
trafficstars

The current chat works . That's about it. It is a simple websocket that replies to everyone in the chatroom.

Issues:

  • There is no message logging (if the user refreshes, messages are gone).
  • There are no restrictions to enter the room for users not participating in the order.
  • It is not end-to-end encrypted.

The first issue makes it very difficult for staff to resolve disputes. The second issue is obviously bad for privacy as chats can be spied by an attacker.

Fixing the third issue will, once again, also make it difficult for staff to solve disputes. Therefore, when e2e encryption is added, there should be a way to submit a view key to the staff when opening a dispute. I do not know whether this is technically possible, and indeed I do not personally have the knowledge/skill to pull off this feature.

To do:

  • [x] Limit the rooms to only order participants.
  • [ ] End-to-End chat encryption. (see below for more context)

Edit ideas that probably won't happen:

  • [ ] ~~Save messages to database and serve them again if the client re-enters the chatroom.~~ (edit: Won't do)
  • [ ] ~~Send view key to staff when opening a dispute. (if this is technically possible, otherwise the preferred solution must be privacy first: chat must be blind for staff always)~~ (Edit: won't do)

In order to leapfrog and improve greatly the chat experience with little workload, a Django chat app such as https://github.com/Bearle/django_private_chat2 could be used. However, messages will still not be end-to-end encrypted.

I can also think of using django-encrypted-model-fields as a preliminary/easier step to ensure only the 2 users and the staff can read the chat https://gitlab.com/lansharkconsulting/django/django-encrypted-model-fields/

Reckless-Satoshi avatar Jan 15 '22 13:01 Reckless-Satoshi

I am marking this issue as key to be solved by release v0.2.0. This will be the first release deployed to mainnet. In the meantime, having a weak chat with little functionality is okay for testing the lightning pipeline in testnet.

Reckless-Satoshi avatar Jan 15 '22 13:01 Reckless-Satoshi

As suggested by @SpicyHotWings we could implement matrix protocol for the chat ( https://matrix.org/ ) It is unclear whether this could be seamlessly implemented (i.e, without requiring users to create a new authentication for the chat but at the same time without Robosats having access to their credentials).

Reckless-Satoshi avatar Mar 05 '22 10:03 Reckless-Satoshi

If possible, all chat and notifications should go through Matrix, because it connecting so many networks. Even dinosaurs like Bisq have already moved their support to Matrix.

initCCG avatar Apr 24 '22 03:04 initCCG

This issue is long solved.

Reckless-Satoshi avatar May 22 '23 09:05 Reckless-Satoshi