Bunz Dispute Resolution
Our Framework: 1.BTZ are not released to the seller until transaction is completed (seller confirms product is given, buyer confirms receiving product) and dispute time frame is over. (show this in smart contract).
a.Time frame depends on the category of product. Clothing quality should be verifiable once a buyer goes home, tries it on, etc. Electronics may need an extra day for full testing.
2.Sellers upon creating a listing must upload a mandatory product demonstration video. This can be incentivised as seller protection. This can be seamlessly implemented in the mobile app and web app.
3.Buyers upon receiving the item have the option within the dispute time frame of receiving it to dispute the item. Within the app, they must upload a video of the damaged or broken product.
4.Through the chat platform in the Bunz app, buyer and seller may choose to negotiate. If they come to a resolution themselves within the time period, the buyer can choose to cancel the dispute claim.
5.Both videos are presented to Bunz users at random as a way to earn coins and rewards. Users are shown the videos, presented anonymously, and asked to verify if there is a large difference between the before and after videos.
a.The existing user base using the rewards systems will be sufficient in ensuring this process works.
6.The majority results are taken and that is the decision of the system. The BTZ is released to the side which was confirmed to be correct.
7.The seller has/can/should retrieve the item if it’s found to be a product sold damaged.
A start to a simple smart contract that allows money in transaction to be held until time period is over
pragma solidity ^0.4.0; contract BunzTransaction {
address public buyer; //location of buyer
uint public timePeriod; //timePeriod of transaction, depends on item category
uint public price; //price of item agreed on in Bunz
mapping (address => uint) public balances;
constructor ( //pass given variable values
uint _timePeriod,
address _buyer,
uint _price
) public { //constructor
buyer = _buyer;
timePeriod = now + _timePeriod;
price = _price;
}
modifier onlyBuyer { //buyer is one sending money
require(msg.sender == buyer);
_;
}
function() payable public { //keep all ether from buyer locked
}
function timePeriodEnd(address _seller) onlyBuyer public {
require (now >= timePeriod); //must be past time period to release money
msg.sender.transfer(price);
}
}
Log in or sign up for Devpost to join the conversation.