1

Edit: The question below is summarized by this question:

I sent you [payment] to run computations. How can I make sure you are actually running the computations?

Thanks to user253751 for this

Edit: TL;DR

I'm currently making an open source application that essentially creates a cluster computer over the internet. This computer network which this application will use will be zero-trust. The problem that I'm running into is that I need to make sure that given computer running an application on a cluster is also itself part of a cluster to make sure that it does its fair share of work.

The solution that I had to this problem was to make the computer first find a single computer on the network (the computer's "partner"). The computer will then send over the application to its partner and vice versa. These two computers will then find nodes for the other's application to run on. If a packet of data is not sent back to the computer within a given amount of time, the connection is closed and the node ls are disconnected.

The problem with this is that a computer could masquerade as running another peers application but only run its own application. Are there any ways I could fix the "partner" approach or are there any completely different approaches that will resolve the initial problem.

Thanks in advance!

Note: all connections will be e2e encrypted and application will be run in a safe virtual environment so please don't tell me to fix this.

drake14w
  • 13
  • 3
  • I think you have overcomplicated the question a bit. The question appears to be, basically: I sent you money to run computations. How can I make sure you are actually running the computations? – user253751 Jul 20 '22 at 23:58
  • @user253751I believe you have misunderstood the question a bit, there is no money in the system. – drake14w Jul 21 '22 at 01:47
  • @drake14v it doesn't matter whether the money is dollars, system credits, other computations, or whatever – user253751 Jul 21 '22 at 04:11
  • I have edited the question to include this summary. – drake14w Jul 21 '22 at 04:15

1 Answers1

1

Re the comments: It's not about money but about a contract.

Your assumption is that your peer will run your application, and in recourse you are willing to run its application. In a zero trust system where you can't verify that your application has been run you need to extend some initial trust (i.e. only run small tasks for a peer who didn't return results yet) and let them build trust over time. To build trust in a distributed way you'll need to create a web of trust, so your node would need to know which other nodes can be believed when they claim that a third node is really working.

There are other factors to consider: For example, if a partner claims to have run your application, how do you know they're not faking it?

Have a look at distributed computing projects and software (there's a Wikipedia page with a pretty comprehensive list). They collect results (and trust) centrally but also need to deal with potentially untrustworthy nodes, especially if there's some gain to expect for completed computations.

A related problem is that of "leechers" in p2p file sharing networks. I have no pointers to how they deal with this problem, but it may be worth some searching. At the end of the day, some leeching can't be avoided.

Hans-Martin Mosner
  • 14,638
  • 1
  • 27
  • 35