Patent ID: 8881275

Claim:
A method for a computing system to verify work performed by two or more untrusted computing nodes, the method comprising: determining, at the computing system, a first computation; applying, at the computing system by one or more processors, a transformation function to the first computation to produce a second computation that is different from the first computation; assigning, at the computing system, the first computation to be performed by a first untrusted computing node; assigning, at the computing system, the second computation to be performed by a second untrusted computing node while keeping the transformation function secret from the first untrusted computing node and the second untrusted computing node; receiving, at the computing system, a first result for the first computation determined by the first untrusted computing node and a second result for the second computation determined by the second untrusted computing node; analyzing, at the computing system by one of the one or more processors, the first and second results to verify the work performed by the first and second untrusted computing nodes; storing, at the computing system, the first result and the second result in a storage unit that includes results from past computations performed by the first and second untrusted computing nodes; and determining, at the computing system by one of the one or more processors, whether the first and second untrusted computing nodes are deemed to be trustworthy based on total results for each of the first and second untrusted computing nodes stored in the storage unit, wherein the first and second untrusted computing nodes are deemed to be trustworthy in response to a majority of the total results for each of the first and second untrusted computing nodes being valid, and wherein the first and second untrusted computing nodes are deemed to not likely be trustworthy in response to the majority of the total results for each of the first and second untrusted computing nodes being invalid.