Please read articles above, there is no comparison, there is a math calculation. The node doesn’t contain required hashes, because otherwise it can try to foolish the satellite. The satellite calculate is the returned data valid or not.
It just uses any random piece of data on your node and retrieves all pieces for that same segment from other nodes as well. The Reed Solomon erasure encoding then allows the audit worker to see which pieces from which nodes are correct and corrupted. Your node doesn’t have to do anything special as literally any stripe of any piece can be used for auditing and they are selected by the satellite at random.
It can be any of the ‘blobs’ data which that satellite thinks your node is storing. So there is no ‘shortcut’ if you see in the log file you can see the specific piece being requested.
Also, I don’t mean to presume, but it sounds awefully like you’re trying to find out if you can mess with the audit system to fool it. Don’t bother, you can’t. If that’s not your intention, I apologize.
It’s the data itself, not some sort of metadata of it.
Like, you can compare hash of a file you downloaded to confirm it is a legit one. You check on the main website, or any other trust source, what is the expected hash value. You calculate the hash of the file you downloaded, compare the hashes and that’s it. All you need to get the hash is data itself and the hashing algorithm.
So satellite gets the data and that’s all it needs from you. It then proceeds to calculate stuff and cross-compare all the pieces. More or less - don’t quote me if it happens to do it in a slightly different manner. The core point to take from this is that it needs just the data from you.
The requested part of the piece from the blobs folder, no databases are involved.
So the node will physically read the requested sequence of bytes from the file from the blobs folder from the filesystem, and return it to the auditor.
You may consider blobs as a filesystem-based database. So selection would be more complicated, then just select * from db_something where id="jtntngng";, but the result would be the same.
Yes, and the client can do it like an auditor - request not the whole piece, but only any part of it. However, the default for the client (libuplink) is to request the whole piece.
When it combines pieces back to the file the erasure codes math allows it to combine only valid pieces.