Regarding Tromp’s naming proposal, I like that all 3 steps have identical names regardless whether it’s about SRS or RSR flow => request, offer, accept. The second part of the name suggest the direction of the money from the user perspective. What’s nice about this naming is that the offer step suggests that the transaction is not done (unlike our current 2nd step names). This is helpful to the user understanding that the flow is ongoing.
As I mentioned above, I like that it reuses step names across the flows and hints whether a next step exists.
I find it interesting that SRS and RSR flows are really similar, they’re just flipped around in some way. I’ll ignore the broadcasting of a transaction because it’s easier to focus only the transaction construction. Both SRS and RSR can be thought as:
- prepare a state transition description
- party A signs the state transition
- party B signs the state transition
After these 3 steps you have a valid state transition (transaction). So what is happening behind the scenes is that both parties need to sign off on some state transition (regardless of the flow). I do understand that people don’t think in terms of state transitions.
There’s another way to reuse names but in a different order depending on the flow (using the state transition steps above):
prepare-send -> send
sign-receive -> receive
sign-send -> finalize
prepare-receive -> invoice
sign-send -> pay
sign-receive -> finalize
I’m assuming here that the wallet would be able to identify which sign-send it is based on the transaction information.
The bad side of this is that it doesn’t hint to the user that there needs to be a signing order e.g. you can’t do a sign-send before sign-receive in SRS flow. I’m not arguing for this, I’m merely sharing another way to think about transaction building.