As you may know, a Grin transaction is currently constructed the following way:
S initiates
S -> R
R -> S
S finalizes
S broadcasts to blockchain
Where S is Sender and R is Receiver.
Consider the following reversed transaction construct:
R initiates
R -> S
S -> R
R finalizes
R broadcasts to blockchain
This was prompted by thinking about commerce use cases. Say that Alice is buying a pair of socks for 100 grins in an online shop. Today, it would fall on Alice (her wallet, to be precise) to do the majority of the work, like initiating a transaction, waiting for a response from the merchant, and then broadcasting the transaction.
Conversely, with the reversed structure, the merchant first initiates the transaction (āsend me 100 grinsā, essentially having the message ready for Alice to interact with as part of the checkout process on the merchant website) and then as soon as Aliceās wallet has responded to the merchant, her obligations are complete. And then itās up to the merchant to broadcast.
Taking this a step further, if the merchant is using a third party processing service to do all the heavy lifting for this, this processor would likely be quite good at handling these interactions reliably, at scale, compared to Alice and her personal wallet which may be of varying quality (and an unknown to the merchant). This processor could also be doing neat things such as cut through on transactions across many different merchants before they are being broadcasted.
Questions:
Q1: Is this reversed format a valid Grin transaction?
Q2: Could this format be supported on the protocol level today without changes?
Thatās quite likely. The interaction is very similar to the bitcoin payment protocol that was designed to avoid phishing among others. So from a usability standpoint in a merchant scenario, it would already be better than bitcoin addresses.
Letās take this one more step towards practical usage.
Say Iām in a self-checkout space with several checkout stations and no usable wireless anything. How does the payment request come to my device? No Apple-style centralized location and identity layers welcome. Oh, and my device probably already leaks most of its identity and some private key bits by its variations in its RF and light emissions.
Fairly sure Iād have to āaimā my wallet at the payment request.
QR? NFC? Narrow-band IR or LIFI?
What amount of bytes are needed to be communicated?
Iāve only seen self-checkouts at my regular supermarket, Dutch Albert Heijn. Your privacy tends to get lost there because they make you scan your ābonus-cardā in order to get certain discounts. Of course, having a bonus-card means you do regular business, so we would assume you have a Grin lightning channel funded for your grocery shopping.
What amount of bytes are needed to be communicated?
A channel update would be a new spend of a 2-of-2 output, in which you need to communicate your single new output and its associated rangeproof, so letās say about 3/4 KB.
It would also be instant, so the supermarket need not worry about customers waiting for the required number of on-chain confirmations clogging up the space:-)
The next advance in QR artwork is to just an image of the item, logo, place or person itself.
Itās possible to instate the GRIN logo art for instance as the ābarcodeā that links to github, dev site, grinbox or wallet.
If you can photograph it then you can pull up and pay the invoice in GRINā¦ Art is the answer.