Most known and common way of transacting is through one-sided transactions. Here the sender constructs the transaction alone which then gets broadcasted to the network.
Pros:
- The receiver does not need to be involved in transaction building
- The only connection requirement is to broadcast the transaction to one of the nodes
- People are used to it
- Easier integration for services
Cons:
- The receiver can't contribute to the transaction with their own inputs/outputs which leads to common-input-ownership problem
- The receiver can't say "no" to the transaction
- Limited to layer1
- Coins can be sent accidentally to void (an address nobody owns)
Both the sender and the receiver construct the transaction together.
Pros:
- The receiver can add inputs/outputs which allows a payjoin
- The possible transaction set is a superset of transactions that can be built as one-sided transactions
- Impossible to send coins to void
- Interactivity can allow the receiver to say "no" to a transaction
- Enables full wallet control because a user can decide both what is sent AND what is received
- Full interactivity is possible which gets rid of the dusting attack and limits the UTXO spoofing
- Uniform experience across 1st and 2nd layer, since latter necessitates interaction
- Payment can be tied to payment proof specifying what receiver considers payment to be for
Cons:
- The sender and the receiver MUST have a way to communicate with each other (this isn't required in one-sided txs)
- Transaction building requires a "ping-pong" between the sender and the receiver which adds a layer where additional issues can happen e.g. network issues
- People are not used to that
- Services need to do the integration correctly (this should be a one time thing hopefully)
Two-sided (interactive) transactions aren't that bad if the flow can be done in a simple/intuitive way. One-sided transactions are much simpler, but I think they have a very big issue which is that the receiver can't say "no" to the transactions. This is similar to walking through town and have tourists opening your wallet and throwing in pennies with chips to trace their spending. Two-sided transactions aren't without problems either, it's a tradeoff at the end of the day.
Nice summary! I would only suggest that a couple of the pros of 2 sided seem to revolve around controlling what your wallet receives, I see the distinction in some but not all. Also, layer 2 interactivity is much different than layer 1. Maybe the most basic layer 2 is different, but any layer 2 developed with today's tools only requires interaction at opening/closing (and maybe some disputes), but intervening state changes do not (at least not in a manner similar to grin layer 1).
But also, there are likely a large set of benefits from interactive transactions that we haven't even thought of yet. Grin might be too minimalistic to take advantage of some of them but maybe some might win out in the value added vs complexity added. I can't think of many right now, but it just seems having 2+ parties signing opens doors for things you couldn't do otherwise. Maybe it makes multisig easier or like layer 2 just simply more natural feeling. Maybe users could conduct an exchange of Grin for an exchange of data and have both payment and data delivery cryptographically secure/provable. Point is that there are likely a lot of cool things one could do with interactivity