Docs
Whitepaper

Real World Trade Protocol

RWTP is a peer-to-peer protocol for buying and selling physical goods in untrusted situations. Use it to programatically buy and sell real-world goods with crypto-currencies.

How it works

To sell on Real World Trade Protocol, the seller puts down a deposit. If a buyer claims that the seller did not deliver the package, the seller will lose their deposit and the buyer will get their payment back. To prevent an untrusted buyer from abusing this power, the buyer agrees to a "cost" if they press the refund button. The amount the buyer is allowed to refund is calculated as Refund=PaymentCostRefund=Payment-Cost. If the cost is greater than the payment, then the buyer must put down a deposit as well; which they will lose if they reject the deal.

Understanding the Payoff Matrix

  • Let CbC_b be the cost the buyer pays if the deal fails.
  • Let CsC_s be the cost the seller pays if the deal fails. This is their deposit.
  • Let PP be the payment.
  • Let IsI_s be the original value of the item to the seller, such as the expenses of manufacturing the item. A rational seller will not agree to the deal if P<IsP < I_s.
  • Let IbI_b be the actual value of the item to the buyer. A rational buyer will not agree to the deal if P>IbP > I_b.1
Buyer ConfirmsBuyer Rejects
Seller ships(PIs,IbP)(P-I_s,I_b-P)(CsIs,Ib+PCb)(-C_s - I_s, I_b + P - C_b)
Seller flakes(P,P)(P,-P)(Cs,PCb)(-C_s, P-C_b)

The buyer and the seller can negotiate the cost with each other. If both parties trust each other fully, neither needs a cost.

However, in situations where either the buyer or the seller is not trusted, the cost allows one party to tweak the expected value of engaging in the deal until it's favorable.

Trusted seller, untrusted buyer

Imagine the situation where a trusted seller is interacting with an unknown buyer. Say P=10P = 10, Ib=15I_b = 15, Is=5I_s = 5. Regardless of what the seller stakes; the seller can protect themselves by only agreeing to offers where CbP+IbC_b \geq P + I_b, such as Cb=25C_b = 25.

Buyer ConfirmsBuyer Rejects
Seller ships(5,5)(5,5)(Cs5,0)(-C_s - 5, 0)
Seller flakes(10,10)(10,-10)(Cs,25)(-C_s, -25)

Regardless of what the seller does, the buyer is incentivized to confirm the offer. If the buyer intends to cheat, they lose in both cases. However, if the buyer intends to be honest, then they can make an expected value calculation.

For example, say 1% of deals from this seller are rejected and 99% are confirmed. The expected value for the buyer is then 50.99+100.01=4.855*0.99 + -10*0.01 = 4.85, so the buyer should take this deal.

Untrusted seller, trusted buyer

Imagine the situation where a trusted buyer interacts with an untrusted seller. Say P=10P = 10, Ib=15I_b = 15, Is=5I_s = 5. The buyer can protect themselves by only agreeing to offers where CsPC_s \geq P, such as Cs=10C_s = 10, and costs where CbP+IbC_b \leq P + I_b.

Buyer ConfirmsBuyer Rejects
Seller ships(5,5)(5,5)(15,25Cb)(-15, 25 - C_b)
Seller flakes(10,10)(10,-10)(10,10Cb)(-10, 10 - C_b)

In this case, the buyer can still reject a failed offer if the seller flakes. If the seller intends to be honest, they can make an expected value calculation.

For example, say 1% of deals from this buyer are rejected, and 99% are confirmed. The expected value for the seller is 50.99+150.01=4.85*0.99 + -15 * 0.01 = 4.8, so the seller should take this deal.


FAQ

How does a buyer and seller figure out if the other is trustworthy?

RWTP is agnostic to the way a buyer and a seller determine each other's reputation. You could use the history of past deals, but this could be vulnerable to wash trading. Some potential solutions include:

  • Proof-of-personhood protocols (such as Worldcoin)
  • Signing a message and putting it in a DNS record
  • Linking to social media profiles, including decentralized protocols such as Lens.

  1. Trade is positive sum! A rational buyer wants the item more than they want their money.