Skip to content

Coordinator ratings over Nostr #1097

@KoalaSat

Description

@KoalaSat

Is your feature request related to a problem? Please describe.
Currently, Robosats offers a 5-star rating at the end of the order process. However, this information is static data that resides and remains within the coordinator system. A more reliable solution would be to enable users to independently send their ratings directly to the federation. To ensure the legitimacy of ratings, the federation can also use the dev-fund payments as a method to prevent users or coordinators from creating ratings for free and avoid rating improvement through brute force.

Describe the solution you'd like
The idea is to utilize the Nostr as an independent network where none of the three parties have control. The proposed flow is:

  1. An order is closed successfully
  2. The Coordinator will send a Zap Request Event (https://github.com/nostr-protocol/nips/blob/master/57.md#appendix-a-zap-request-event) to the dev-fund server, this request event will point out to the p2p order event (NIP-69) originally posted on the global order book, and will follow the standard zapping process:
{
  "kind": 9734,
  "content": "",
  "tags": [
    ["amount", "21000"],
    ["lnurl", "lnurl1dp68g...2x9xp"],
    ["p", "04c915daefee38317fa734444acee390a8269fe5810b2241e5e6dd343dfbecc9"],
    ["e", "9ae37aa68f48645127299e9453eb5d908a0cbb6058ff340d528ed4d37c8994fb"]
  ],
  "pubkey": "97c70...05ad98e322",
  "created_at": 1679673265,
  "id": "30efed5...4b7d93",
  "sig": "f2cb581a84ed...374d9d"
}
  • pubkey: Coordinator's pubkey
  • tags:
    • p: Federation pubkey
    • e: P2P order event id
  1. The Federation receives the Zap and publish the Zap receipt event https://github.com/nostr-protocol/nips/blob/master/57.md#appendix-e-zap-receipt-event:
{
    "id": "67b48a14f...dda446",
    "pubkey": "9630f464cc...48238f31",
    "created_at": 1674164545,
    "kind": 9735,
    "tags": [
      ["P", "97c70a44366a6...64705ad98e322"],
      ["e", "3624762a1274d...e836a1eaf86c3b8"],
      ["bolt11", "lnbc10u1p3...hnqpy6gyf0"],
      ["description", "{...zap event...}"],
      ["preimage", "5d006d...99f97344c15f"]
    ],
    "content": "",
  }
  • pubkey: Federation's pubkey
  • tags:
    • P: Coordinator pubkey
    • e: P2P order event id
  1. The user decides to rate the coordinator using a 5-stars system.
  2. The webapp creates a new Nostr note and send it to the Nostr network:
{
    "id": "675bab...8c1221",
    "pubkey": "bf2376...26bce",
    "created_at": 1673347337,
    "kind": 1986,
    "tags": [
        ["p", "bf2376...26bce"],
        ["p", "6fb4d86...ade63da"],
        ["d", "123"],
        ["rating", "3"],
        ["L", "review"],
        ["l", "review/coordinator", "review"],
    ],
    "content": "nostr:npub...hxs64d8 was rated with 3 stars",
    "sig": "6fb4d8...a329186"
}
  • pubkey: Robot's pubkey
  • content: Formatted rating to be easily displayed by a Nostr client
  • tags:
    • p: Federation pubkey
    • p: Coordinator pubkey
    • d: Order + Coordinator unique identifier. Same as the one used in order's nostr event.
    • rating: User's rating
  1. The webapp will be able to fetch and filter notes by a Coordinator's pubkey ["p", "6fb4d86...ade63da"] or use["rating", "3"] to count by rating value. Additionally clients can display Federation's receipt zap as a validation of a legit order.

Describe alternatives you've considered
There was an initial proposal where the coordinator was involved on the validation of the note, but that would allow to block bad ratings.

Metadata

Metadata

Assignees

Labels

enhancement 🆙New feature or requestjavascriptPull requests that update Javascript codemoonshot 🚀🌑This issue might be aiming too highpythonPull requests that update Python code

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions