Verification
Overview
The verification itself is several round executions of the protocol based on CPOR (also referenced as PDP - Proof of data possession), which provides the simple API to check if a Storage Replicator Node transfer the data block or not. All Storage Replicator Nodes check each other through selecting and sending challenges for a constant amount of randomly selected blocks to everybody. After obtaining the response to challenges Storage Replicator Nodes form their own verification results on which the whole group has to agree. Concluding parity on results is done via multsignature protocol. Where the main Storage Replicator Node uploads its results to Blockchain, and others receive them and compare with their own decisions to approve the transaction or not. If the leader's transaction does not get the required amount of approvements (percentApprovers), the next leader is selected via iterating over the list of Storage Replicator Nodes (first to last). Leader iteration goes until consensus is reached or verification fails.
When results are confirmed and some Storage Replicator Nodes are found to have faulty blocks that do not pass the challenge, Blockchain excludes those Storage Replicator Nodes from the contract, transfers their deposits to the drive's account (whole deposit and for each active file), and distributes storage tokens rewards for them. SM are not included.
Verification starts with confirmation of the verification transaction which is sent either by the Drive owner or by any Storage Replicator Node. This transaction goes in pair with the end verification transaction. It's confirmation signals that the verification is finished and all Storage Replicator Nodes agreed with the results. In case where the second transaction is not received through constant time (approx. 1 day) process, initiator will gain paid fees back. In the opposite case, verification is considered finished and fees are transferred to the Drive account becoming part of the future reward distribution.