Proof of resource
Proof of Resource enables the network to validate actions or services using a mathematically verifiable mechanism.
This process measures a Vault's ability to store and retrieve data chunks. This depends on the following criteria of the Farmer's computer:
- CPU speed
- Bandwidth availability
- Disk space
- Online time
This allows the proof to be a useful, measurable and immediately verifiable entity. Proof of Resource is a very efficient system.
Proof of Resource in the SAFE Network uses a process similar to a zero knowledge proof. In this case the checking mechanism does not require to know the content of any data to be checked, but must verify that the data is in fact held, and that it is held accurately.
Establishing Proof of Resource follows a series of steps:
- A checking group of Vaults creates a random string
- This random string is sent encrypted to all holders of the data
- Each data holder takes this string, appends it to the original data, and hashes the result
- The result from each holder is collected and decrypted by the checking group and results of all holders are compared
- If any Vault returns a different result, it is considered to be compromised and is de-ranked
This mechanism is triggered on GET requests and during account transfers. Account transfers occur during churn events, and are the process of redistributing account data amongst affected Vault personas to accommodate their new arrangements and responsibilities. Proof of Resource is non-deterministic and randomised by the unpredictable data demands of Users. It is considered to be secure and uses zero knowledge, not to conceal content (as anyone can ask for any data), but to ensure any data which is contaminated is not required to be transferred.
Here is an overview of the Proof of Resource process.