Wallets interact over http. Is it possible to identify participants in a transaction because of this?
An interesting (and kind of subtle) point here is the communication involved in interactively generating the transaction is “out-of-band” from the actual Grin protocol/network.
Once a transaction has been constructed and signed there are various things that can be done to minimize the surface area for identifying where it came from. It needs to be pushed to the Grin network for a miner to pick up, but this can involve layers of misdirection and timing delays etc.
The transaction itself provides zero identifying information about any of the participants.
Example -
Parties A and B could interact (completely offline, in some unspecified way) to construct and sign a transaction (A sends B some Grins). The transaction could then be handed to party C to push to the Grin network.
Nothing in the transaction would identify any of A, B or C.
C could wait for some arbitrary amount of time before pushing this transaction to the network (say an hour, to obscure when the transaction actually happened). C could also batch this transaction with a bunch of other transactions to further obscure it.
The api call C makes to push the transaction to the Grin network could potentially be observed by someone on the network (public wifi network for example). But there would be nothing in this network traffic that would identify A or B (only C making the api call itself).
Additionally if C was a miner on the Grin network they could feasibly include the transaction in a block without this transaction ever appearing on the network (there would be no api call pushing the transaction to the network to observe). The only thing any other node would see would be the individual inputs, outputs and transaction kernel (and nothing to associate them with each other).