User guide for contracts with arbitration

bg-8
Contracts with arbitration are conventional written contracts coupled with smart contracts that lock the full amount of the contract for its entire duration and guarantee that the funds can be unlocked only with mutual agreement of both parties, or according to the decision of a mutually agreed arbiter in case a dispute arises.
1

Install the wallet

Download the Obyte app for any device, from obyte.org. The application offers a seamless experience across all supported devices, catering to both Buyers and Sellers. After installation, users can easily navigate through simple prompts within the app. During setup, create a wallet name, such as your company name, to facilitate identification by counterparties during subsequent wallet pairing and transaction closure. If needed, the wallet name can be modified later on using the menu. When you start using the wallet for the first time after its installation and launch, a default account named “Small Expenses Account” is automatically created. You can rename it later, or create new ones.
Install the wallet
2

Fund your wallet

To access your unique wallet address, click on the "Receive" tab in the app. You can easily view and copy the address by clicking on it. To ensure the smooth functioning of the application, we advise you to deposit at least 100,000 bytes (equivalent to about $0.001) into the wallet, along with USDC worth $5 for the Seller and the anticipated transaction sum for the Buyer. You can find more information on depositing and withdrawing fiat currencies at fiat in/out.
Fund your wallet
3

Wallet backup

As soon as the wallet has a nominal sum of a few dollars or more in it, we strongly recommend that you immediately create a backup copy in the main menu section of the application "Settings" / Backup all wallet data.
Wallet backup
4

Pairing of Buyer and Seller wallets

Wallet pairing can be initiated by either the Buyer or the Seller. In this manual, we will outline the process from the Buyer's perspective. As the Buyer, you can start the pairing process by selecting the "Chat" tab, then "Add new device" and "Invite another device". To pair your wallet with the Seller’s wallet, simply copy the alphanumeric pairing code located under the QR code and send it to the Seller (Merchant). Once the Seller receives the code, they can paste it into the designated field by navigating to "Chat", "Add a new device", and "Accept an invitation from another device". The name of the paired device will then appear in the chat list within the Chat menu.
Pairing of Buyer and Seller wallets
4.1

Real name attestation (verification)

(OPTIONAL) You can attest your real name before creating a contract, so it will appear in the contract and your counterparty will see it when signing. The same applies to your counterparty.

Real Name attestation can be done via a Real Name Attestation bot found in the Bot Store (the second tab of your chat window). Add this bot and follow its instructions.

Real name attestation (verification)
4.2

Reveal your verified real name to the counterparty

(OPTIONAL) If you got attested, share your private profile with your counterparty so they can see it on the contract.
4
5

Buyer shares their address with the Seller

The following steps assume that it is the Seller who offers the contract, however the Buyer can do so too, just by swapping the roles in this guide.

To create a contract with arbitration, the Buyer first sends their wallet address to the Seller in chat. The Buyer can insert their wallet address into the chat by selecting "Insert my address" from the three-dot menu.

Buyer shares their address with the Seller
6

Seller offers a contract

The other party clicks the received address and chooses "Offer contract with arbitration". This party will be the offerer while the other party will be the acceptor.
Seller offers a contract
7

Filling in the contract (by the Seller)

The Seller performs the following actions on the contract offer screen:
  • - Selects their role in the contract as Seller option (active by default).
  • - Enters the sum and currency of the contract (most likely you’ll want to transact in USDC – a stablecoin).
  • - Selects an arbiter from the proposed list by inserting their address into the appropriate field from the page with the list of arbiters.
  • - Enters the title of the contract.
  • - Copies the text of a previously prepared contract (or another document replacing it, such as an invoice) into the "Text" field. Make sure that you mention the names and the roles of both parties in the contract body, like in real-world contracts. The contract text should be written in 3rd person, avoid "I" and "you" as otherwise the arbiter will have trouble identifying who is who if you have a dispute and the contract lands on the arbiter’s desk. The text should be rather long and spell out all the terms and conditions, rights and obligations in your deal with the other party.
  • - Indicates the duration of the waiting period for acceptance of the proposed contract in hours.
  • - Optionally indicates their additional contact details (phone, email, etc) to facilitate communication with the other party and with the arbiter.
  • - Clicks the button "Offer contract with arbitration".
Filling in the contract (by the Seller)
7.1

Arbiter’s selection

The offerer (Seller) picks an arbiter from ArbStore arbiter listing. Arbiters can be filtered according to their specializations, prices for their services, and recent stats. Copy/paste the address of the chosen arbiter in the Arbiter address field of the contract. Discuss the arbiter candidate(s) with the other party (using the built-in chat or any other means of communication) to make sure they are OK with the suggested arbiter.
Arbiter’s selection
8

Buyer accepts the contract

The Buyer receives the offered contract from the Seller in the chat, including the address of the arbiter chosen by the Seller. The Buyer carefully reviews all the contract details including the sums involved, the currency, the suggested arbiter, and any other contact conditions outlined in the text. The Buyer can either accept the offered contract in its entirety (including the choice of arbiter), or reject it if they disagree with at least one detail. In the latter case, the parties can discuss the terms again, then the Seller can make a new offer or the Buyer can make their (counter)offer.
Buyer accepts the contract
9

Contract signing and posting into the DAG

Once the contract with arbitration is accepted, both wallets sign a hash of the contract text and post it to the DAG. While signing, the wallets might request additional confirmations from the parties if their wallets are password-protected or are multi-signature wallets. This hash signed by both parties serves as a confirmation of their agreement. From this point on, the contract is officially concluded.
Contract signing and posting into the DAG
10

Buyer pays to escrow

After the contract is posted to the DAG, the Buyer needs to pay to the contract by opening it in their wallet and clicking the Pay button. This locks the money on the smart contract address associated with the contract (escrow).

At this point, it is strongly recommended that both parties back up their wallets (burger menu -> Settings -> Backup all wallet data) to make sure that the funds can always be recovered from the smart contract. The smart contract, as well as contract text, is stored only in the parties' wallets and nowhere else. They cannot be recovered from any earlier backups.

Buyer pays to escrow
11

Buyer releases the funds from escrow

After the contract is paid, the Seller starts fulfilling their obligations. After the work is completed and the Buyer is satisfied with the results, they release the funds from the contract to the Seller by clicking the "release funds" button in the contract view. The contract is now completed.
Buyer releases the funds from escrow
12

Contract termination by Seller

If the Seller is unable to fulfill their obligations, they can cancel the contract at any time and return the funds back to the Buyer by clicking the "Refund" button in their wallet.
Contract termination by Seller
13

Dispute initiation

In case there is a disagreement about the contract’s performance that the parties can’t resolve by themselves, either party can start a dispute and invoke the arbiter by clicking the open dispute link.
Dispute initiation
14

Dispute resolution

After the "open dispute" link is clicked, the arbiter selected in the contract will automatically receive the contract text, briefly review it, and based on the contract’s complexity will estimate the cost of their service and ask the plaintiff to pay for it (the cost must be within the range indicated by the arbiter in their profile for this type of the contract, otherwise the plaintiff can complain to the ArbStore). The payment is processed through the ArbStore this arbiter is enrolled with, so the plaintiff will receive a payment request from the ArbStore in chat. The payment will be held by the ArbStore until the arbiter makes a decision.

After the payment is sent, the arbiter starts resolving the dispute. They will contact both parties through Obyte wallet chat or other means of communication indicated in the contract, collect evidence from both parties, and make a decision regarding the dispute.

The arbiter then posts a specially crafted unit into the DAG which allows the winning party to claim the funds locked on the contract.

Dispute resolution
15

Winner claims the funds

If the arbiter decides the dispute in your favor, you will be notified about it in the chat and can claim funds from the contract by clicking the "Claim funds" button in the contract view.
Winner claims the funds
16

Appellation to the ArbStore moderator

If the losing party is not satisfied with the arbiter’s work, they can appeal the arbiter’s decision through contract view. This action will invoke an ArbStore moderator. Although the moderator can’t reverse the arbiter decision, they can (partially) compensate the appellant if they find that the arbiter’s work was unsatisfactory. The moderator will take a payment for their work from the appellant and look into the arbiter’s decision. They can either agree with the arbiter and close the appeal, or agree with the appellant and pay them a fixed compensation out of the arbiter’s deposit with the ArbStore.
Appellation to the ArbStore moderator