Ian Clarke wrote:
> I can see how this distributes bandwidth among relatively equal peers, 
> but I'm not seeing a "tit for tat" component here that would reward 
> peers for storing and transferring data - which was the goal of my 
> suggestion at the start of this thread.  Please correct me if I have 
> overlooked something.

No you're right, there's no reciprocal component. Unfortunately I can't 
see how to incorporate tit for tat without being able to measure each 
peer's level of cooperation. Imagine the following scenario:

A---B---C

A generates a request, B forwards it, C responds to it, B forwards the 
response back to A.

B wants to measure C's level of cooperation. It needs to know whether C 
provided a valid response, because C might be sending forged responses 
in order to get more cooperation from B. In the case of CHKs the request 
contains the hash of the expected response, so B can verify the 
response. But in the case of inserts there's no way for B to verify the 
response. B can't possibly tell (as far as I can see) whether C 
forwarded the data or just dropped the data and faked a response.

I've been working on exactly this problem for my PhD, and unfortunately 
the solution I've come up allows unlinkable communication but not 
anonymous communication: A and C have to know one another's identities. 
B doesn't know whether A is the originator of the request or C is the 
originator of the response, but it can still verify that the response 
matches the request, so it can measure C's level of cooperation and 
adjust its own level of cooperation accordingly. This is fine for 
point-to-point communication across an untrusted network, but it's not 
suitable for Freenet-style anonymous publishing and retrieval.

If you can think of a way to verify responses to inserts then I'd be 
very happy to work on a reciprocation mechanism, but until then I think 
fair resource allocation might be the best we can do.

Cheers,
Michael

Reply via email to