If someone sends a transaction to the network, let's say they execute the transfer function on a solidity contract, is there any way for someone to see their interaction with the contract? Meaning the amount and whom they sent it to? A sort of way like XSS scripting to act as a go-in-between? To peer inside and see what's going on? Can miners see or decrypt transactions?
1 Answer
Of course everyone can see the transaction contents, because it is not encrypted by the sender and decrypted by the receiver, but signed by the sender and verified by the receiver.
The difference between these two schemes is this:
- In the encryption/decryption scheme, everyone can encrypt the message (using a publicly known key), but only the receiver can decrypt it (using his/her private key)
- In the signature/verification scheme, only the sender can sign the message (using his/her private key), but everyone can verify it (using a publicly known key)
Subsequently, this means that:
- In the encryption/decryption scheme, only the receiver can see the message contents
- In the signature/verification scheme, everyone can see the message contents
In case you were wondering, the fact that everyone can see everyone else's transactions is actually a crucial part of the blockchain's idea and one of its basic concepts - security is achieved via exposure instead of via concealing. In other words, the fact that everybody knows what the data should be, makes it is very hard for one malicious user to change it.
-
Let's assume a large network. Assuming many transactions, can anyone see all these transactions across the ethereum network and different miners? Is it because subsequently someone can look through the signature/verification scheme someone can see all the message contents of whom sent to whom? So as a past reference, someone can go back and see all transactions sent to a contract/token. Commented Mar 8, 2020 at 7:36
-
@NikLoladze: Yes. Everyone can see everyone else's transactions. In fact, that (transparency) is a crucial part of the blockchain's idea and one of its basic concepts - security (integrity of the data) is achieved via exposure instead of via concealing (i.e., everybody knows what the data should be, so it is very hard for one malicious user to change it). Commented Mar 8, 2020 at 7:40
-
Are there any tools for this? So retroactively, everything can be read. What about in a present state. Let's say, there are thousands of people in a network and to read state of each individual, would require an active call to each participant. Through obscurity would this work and then retroactively someone would be able to read the state of each person in the network? Commented Mar 8, 2020 at 7:48
-
@NikLoladze: Yes, etherscan.io (and also Google Big Query I believe, but that one is most likely a paid service). Commented Mar 8, 2020 at 7:54