I read the Pitch Black paper and I think I've figured out a solution. Instead 
of trying to fit a circular keyspace in a graph that's spread over the 
surface of the earth with some long-distance links, I think it would be 
better to make the keyspace have more dimensions. Here's my proposal:

Break a key or location into four equal parts. These are coordinates of the 
point on a four-dimensional torus. Distance is measured in 8-space by 
embedding each torus dimension as a circle.

Every 1024 times a node adds something to its store, it performs this 
calculation: First it adds all the keys in its store as vectors in 8-space, 
then reduces that to a 4-dimensional point on the torus. Then it adds all its 
neighbors' locations and again reduces it to a point on the torus. The result 
is its new location. The location will be close to its neighbors; if the 
surface containing locations is curved, more of the store will be on the 
outside of the curve. Young nodes with few keys stored will be pulled rapidly 
toward their neighbors; old nodes will remain stably located near their data. 
Unlike the current method, where the product of distances rewards nodes for 
having locations next to each other, in this system nodes next to each other 
will be pulled apart, spreading more evenly over the keyspace.

The number of dimensions could be any divisor of 32 (the number of bytes in a 
hash). More than that and the notion of averaging in a dimension becomes 
problematic. I have a hunch that the optimal number of dimensions is 4, where 
two represent the surface of the earth and the other two different social 
classes in a region. Could someone who has a Freenet simulator run some tests 
and see how well this method performs for various numbers of dimensions?

Pierre
-- 
I believe in Yellow when I'm in Sweden and in Black when I'm in Wales.

Reply via email to