Skip to content
This repository has been archived by the owner on Sep 20, 2023. It is now read-only.

Enable buyers and sellers to leave reviews #1832

Closed
5 tasks done
micahalcorn opened this issue May 2, 2018 · 10 comments
Closed
5 tasks done

Enable buyers and sellers to leave reviews #1832

micahalcorn opened this issue May 2, 2018 · 10 comments

Comments

@micahalcorn
Copy link
Member

Likely Requirements

  • five star rating score
  • optional comment string
  • scoped to transaction rather than counterparty or product
  • timestamped
  • affecting transaction state logs

Possible Considerations

  1. review period (and expiration)
  2. review reciprocity
  3. preventing funds withdrawal

Contract changes:

  • create review with buyerConfirmReceipt
  • create review with sellerCollectPayout

Reviews API:

  • reviews.find({purchaseAddress?:, userAddress?:, sellerAddress?:, buyerAddress?: listingAddress?:})
@micahalcorn
Copy link
Member Author

In order to get all reviews for a seller (by proxy via her transactions), does this need to be indexed on the bridge server?

@micahalcorn micahalcorn changed the title Reviews Enable buyers and sellers to leave reviews May 2, 2018
@micahalcorn
Copy link
Member Author

On Airbnb, I think reviews only ever become visible if both parties participate. Will we have a similar model? If so, how do we hang on to a review without publishing it to the blockchain until the counterparty has reciprocated?

@micahalcorn
Copy link
Member Author

I believe that the plan was for a purchase to not enter complete status until (a) the buyer has left a review, or (b) the review period has expired. Is that the case? If a dispute is created, can a review still be left or does it send the purchase state down a different path? When a buyer confirms that they have received a shipment, that should not automatically allow the seller to withdraw funds.

@DanielVF
Copy link
Collaborator

DanielVF commented May 2, 2018

Yes, reviews will definitely need to be indexed.

We'll need the indexing server to check the contract to determine if the review is "valid", since we need to send the review to the blockchain when they happen, even if the other party still might open a dispute.

"When a buyer confirms that they have received a shipment, that should not automatically allow the seller to withdraw funds."

At that point the seller could either withdraw and review or open a dispute. They wouldn't be able to do both.

@joshfraser
Copy link
Contributor

Great question, @micahalcorn & there's no easy answer to this problem today. Storing / revealing private data on a public blockchain doesn't really work. NuCypher promises to help with this, but it's still under active development.

One temporary and unsatisfying solution would be to have the blind review process enforced entirely by origin.js so the reviews are hidden in the DApp till both sides have left a review. Of course, the data will already be public on IPFS & Ethereum, but you'll need to have some development chops to access it.

@DanielVF
Copy link
Collaborator

DanielVF commented May 3, 2018

@joshfraser Do we need reviews scores on-chain for any reason? If not, the review data we need to store would work as pure logs.

I'm thinking we don't need them on-chain. My guess is that any reputation system that operates deterministically on the blockchain could be gamed, and would be much slower than something off chain.

@joshfraser
Copy link
Contributor

It adds more trust in the system if we store them on-chain. Companies like Uber and Airbnb have a bad reputation of burying reviews that are bad for business (meth labs in Airbnbs, etc). Of course, it makes good business sense for them to hide the horrible stuff that happens on their platforms, but it doesn't fit w/ our goal of building an open and fair and transparent system.

Storing a single integer & a IPFS hash isn't all that expensive & doing so allows us to implement on-chain rules for bookings down the line (only allow people w/ 5+ transactions and a 4+ star average to book).

A hybrid approach for facilitating the reveals might be to publish the IPFS hash of the review to the blockchain w/o publishing the actual content to IPFS. Everyone would be able to see that a review is coming, without knowing what was actually said until your chosen bridge server pushes the content to IPFS 14 days later in the reveal phase. While it would require people to trust the bridge server, it's immediately detectable to everyone if the bridge server is ever dishonest as the content hash would not match.

@DanielVF
Copy link
Collaborator

DanielVF commented May 4, 2018

Sorry, I used the wrong terminology.

Storing events in logs would be just as transparent as storing them in contract storage, since the whole world can see them in both cases. The difference is that contracts cannot see logs.

If we need contracts to be able to see reviews, then would we also need a central store mapping of user -> reviews of them?

@joshfraser
Copy link
Contributor

Ah, I understand now. I think a reviews registry makes sense.

@micahalcorn
Copy link
Member Author

Done via #183

@micahalcorn micahalcorn transferred this issue from OriginProtocol/origin-js Mar 30, 2019
@micahalcorn micahalcorn added this to Backlog in Origin Project Sprints via automation Mar 30, 2019
@micahalcorn micahalcorn removed this from Backlog in Origin Project Sprints Mar 30, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

3 participants