Imagine a user wants to exchange bytes for fiat money, sell goods or services to other users, or do other kinds of business in a safe p2p manner. Good examples are localbitcoins.com and openbazaar.org. How can Obyte provide them with an easy and safe way to accomplish their goals?
Two users that do not trust each other but want to exchange goods for money or provide services for money, under many circumstances can’t do so using the features currently available on the Obyte platform.
Let’s consider an example of two anonymous users willing to exchange tokens for fiat. As they are not protected by any law, they have to make sure that the other party acts fairly, so neither loses their money. In other words, the exchange should be done atomically: either both send their assets and other side receives it, or the trade does not happen at all, and every side is left with their assets untouched. Currently, Obyte has features that provide such guarantees when all the data is public, and there are already even smart contracts to exchange crypto. For a BTC ↔︎ bytes exchange, users can create a smart contract that references a trusted Oracle, which constantly posts data units into the Obyte DAG about transactions made in the Bitcoin network. So, the bytes buyer can withdraw the bytes from the contract after the oracle has confirmed the corresponding Bitcoin transaction. At the same time, the bytes sender (seller) can only claim back the bytes he sent to this smart-contract address if there was no unit from this oracle, which means that the buyer did not send BTC to the seller.
However, this option is not always possible: it is only eligible for situations when there is some unambiguous, publicly available information that is used for decision making. For bitcoin exchange, we can create an oracle that re-posts info about BTC transactions into DAG. However, there is a much bigger part of real world problems that can’t be automated with oracles. Imagine that you want to hire some web-developer to create a beautiful landing page and pay him with bytes, how can an oracle track the finality of the work done by the developer? Or it’s quality? This can only be judged by humans.
A possible solution would be to use the “prosaic contract” feature. But this is just a simple textual contract between two users. In case any of the contract parties misbehave, the other party has to appeal to a trusted third party (e.g. a court of law) that has the power to enforce the contract, provide the proofs of his case, and force the misbehaving side to pay.
This is a slow process and a big burden for the victims side. How can we take away this cumbersome process that causes all this pain for the users?
Contracts with Arbiter.
A contract with arbiter is a combination of a prosaic contract and a smart contract that actually locks funds to guarantee payment. Should a dispute arise, a third-party arbiter is there to resolve it. The entire functionality will be integrated directly in the Obyte wallets.
The working scheme of “Contracts with Arbiter”:
1. Two parties A and B want to make a contract and be fully protected by an outside party with no conflict of interest, a so called “arbiter”.
2. Along with contract text, the party offering the contract also sends a chosen “arbiter” which he picked from a list of real-name verified arbiters (ArbStore). If the other party trusts the suggested arbiter, they accept it along with the contract.
3. Contracts with arbiter assume that one side of the contract is the payer, and the other side is doing a job in return for payment. Therefore every such contract is backed by a smart contract, which holds the full amount that should be paid and specifies the address of the arbiter selected to resolve disputes on this contract. When the contract is signed, the payer sends the needed amount to this smart contract where it remains locked until the work is done.
4. The seller (worker, supplier) does the job or ships the goods.
5. If the buyer is satisfied with the outcome (e.g. the work is fully done), he completes the contract by releasing the money to the seller, and that’s it. The smart contract conditions allow the buyer to send money only to the seller. If the seller agrees to reverse the contract, he releases the money back to the buyer. The smart contract conditions allow the seller to send money only to the buyer.
6. The Arbiter only comes into play in case of a dispute between contract counterparties. If either side isn’t satisfied with the result, it raises a dispute, similar to how you can raise a dispute on any marketplace. The “Arbiter” then pairs his wallet with both parties, receives the contract text and collects all the evidence from both sides. The plaintiff also pays a fee to the Arbiter for his work. Having studied the case, the Arbiter then makes a final decision, who should claim the money locked on the underlying smart contract by posting a data unit, similar to how Oracles post data units. The data unit just indicates the address of the winning party. The winning party can then take all the money from the contract.
7. If we need to go deeper: Arbiters are still real people, that can also act inappropriately. In such situations, the losing party can call a moderator of the ArbStore where this arbiter was listed. The moderator cannot return the money from the contract, as the final decision of the arbiter is absolutely final, but can punish the arbiter and optionally compensate for damages to the suffered party from the Arbiter’s deposit.
There are several new terms being introduced by this feature:
1. Arbiter — any person that was signed up as an arbiter on any ArbStore. An Arbiter could have a degree in law, but it is not required.
2. Arbiters Store (ArbStore) — is a store of Arbiters, a list of Arbiters and their services (cases that they specialize in and can resolve) with the costs of their services. For example, an Arbiter can charge X% for disputes in currency exchange contracts, Y% for disputes in sale of goods contracts, and Z% for disputes in web design contracts. The fees are paid only when there is a dispute and the Arbiter has to do his work to resolve it. Peaceful contracts are fee-free. ArbStore includes a web page for users to find an Arbiter that suits their needs, and a chatbot for Arbiters that want to register. There can be several competing ArbStores with different Arbiter vetting policies and different fees charged from Arbiters.
3. Moderator — a member of ArbStore team, which deals with claims by contract parties of Arbiter misbehavior. Can shut Arbiter listings down.
Applications that can be implemented using “Contracts with Arbiter”
1. Localbitcoins.com analogue — an exchange of fiat money for Bytes or other Obyte-issued tokens.
2. Freelance exchange like Upwork — a marketplace, where service buyers can find a freelancer for their job offers.
3. A marketplace for physical goods, like OpenBazaar.
4. Any marketplace, really. Having an outside party without conflict of interest is the missing link to create trust between two anonymous agents, and crypto allows to do so in a decentralized way, without relying on any centralized behemoths like Ebay or Amazon.
5. Any B2B contract between supplier and buyer in the supply chain, e.g. in international trade.
Since many of these apps lock funds for a considerable amount of time, they would work best with a stablecoin issued on the Obyte platform. Recently announced Autonomous Agents make algorithmic stable coins possible.
We plan to release this feature in the Fall 2019. We will publish an updated wallet version with this feature along with the first ArbStore. ArbStore code will be open-sourced, which will allow any developer to create his own competing ArbStore by forking and poking around in the code.