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:
- An order is closed successfully
- 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
- 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
- The user decides to rate the coordinator using a 5-stars system.
- 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
- 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.
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:
pubkey: Coordinator's pubkeytags:p: Federation pubkeye: P2P order event idpubkey: Federation's pubkeytags:P: Coordinator pubkeye: P2P order event idpubkey: Robot's pubkeycontent: Formatted rating to be easily displayed by a Nostr clienttags:p: Federation pubkeyp: Coordinator pubkeyd: Order + Coordinator unique identifier. Same as the one used in order's nostr event.rating: User's rating["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.