smart.mouth.is

Smart Mouth is a smart contract that allows two parties to make a binding agreement to have a financial matter settled by a third-party trustee. The contract is immutable and can be inspected here. It offers the following guarantees:

  1. Both parties must lock the amount they might owe the other party into the contract until the trustee makes a decision.
  2. Only the trustee can transfer the locked funds, and they can only distribute the funds to the two parties involved.
  3. If the trustee does not transfer the funds before the specified deadline, both parties can withdraw their locked funds.

To initiate a binding agreement, one of the two parties first creates an offer. On the blockchain, the offer is identified by a hash of the document describing the financial matter. Put simply, a hash is a small piece of text that is linked to a document. Anyone can derive the hash from the document, but the contents of the document can’t be deduced from the hash. Using the hash of the document describing the financial matter gives all parties the option to keep the contents of the document private, although external parties can see that some offer has been created/accepted/resolved by a particular address.

Because the blockchain only hosts the hash, the creator should send an unmodified copy of the document to the other parties. This way, the other parties can verify that the contents of the document match the offer on the blockchain (identified by the hash). In practice, services like mouth.is simplify this process.

An offer on the blockchain consists of the following things:

Theoretically, if the last option is not set, anyone can enter the agreement. However, without access to the document describing the financial matter, they’d have to do so blindly.

Parties entering an agreement should ensure the trustees are indeed trustworthy. Bad-faith trustees can:

Trustees have the option to annul offers before and after they’re accepted. This option will usually be exercised when a trustee refuses to handle a particular matter.

Trustees can resolve the matter in any manner, as long as the total amount distributed to the parties equals the total amount locked into the contract, minus the resolution fee.

A generic web UI

This UI allows anyone to interact with Smart Mouth directly. Unlike the form on Mouth.is, this Web3 app does not interact with our servers. It’s useful for trustees/arbiters and for people who wish to create or accept a generic binding agreement. Since we don’t log offers created here, we cannot generate an invitation link, and we cannot help you retrieve the agreement document if you lose it (but the other parties might be able to help you if you already sent them a copy).

To resolve an agreement, use resolve to award the stakes to one party, or skewedResolve to divide the stakes between both parties. annul sends back the stakes to both parties, minus an optional fee.