Michael often leaves his leather wallet open on the table so his elderly mother can take cash as needed. Terje sometimes have an open bar tab to avoid having to bother with payments for each drink. The insight is that non-zero trust can be leveraged to simplify transaction experiences by reducing the requirement for strong safeguards against fraud. This can be applied to broaden the access to using cryptocurrencies.
Alika is the mother of ten children living in Afrika. Although they are of limited means, they have a mobile phone that are shared and used as the computing device for the extended family. They have a digital wallet on the device with much of their funds, some received from an aid organization, but recently increasingly replaced by earnings from online gigs and sales of their craft and artwork in the global economy. They unsurprisingly prefers digital stablecoin in place of their local fiat currency.
When Alika needs supplies from the store across town, she typically sends her ten year old son to pick up the goods. Using the digital wallet on their mobile phone, she creates a contract that maintain the store as a trusted payment receiver, specifying that they can take at most 100 coins out of her wallet and allowing her to add an optional password. That way her son doesn't have to carry cash in the unsafe streets of their town, and she can keep their mobile phone for other uses.
When her son get to the store, the store owner, Baba, rings up the 23 coins total for the goods. He notices that Alika already have set up a payment channel with Baba as trusted recipient of funds, granting him permission to withdraw a limited amount of funds from Alika. His wallet pulls 23 coins out of the wallet of Alika.
Actually, the transaction is completed by the contract on Alika's behalf, but that happens transparently and is an implementation detail that neither Alika nor Baba have to be aware about.
We created a prototype digital wallet with added functionality to specify a trusted receiver. We implemented a contract on the Waves platform to set up restricted payment channels with trusted receivers, and logic to complete the transactions, where the wallet holder opens a channel to a trusted receiver, which later deduct a payment from the channel within a set limit. Call signatures:
func openchannel(receiver, limit: Int, password: String?) func deductpayment(receiver, amount: Int, password: String?)