Currenty, the WoT IdentityFetcher permanently subscribes to the trust list USK 
of EVERY known identity, resulting in a total load of n*n USK subscriptions on 
the network - each identity subscribes to the USK of every other identity.

(Even though it does O(n?), we will soon release the current code as WoT 0.4  
on the plugins page labeled as testing because it is guaranteed to fetch all 
identities, i.e. guraanteed to "just work" and has proven to be very stable in 
all other means. And WoT 0.4 in general is optimized for new features & 
stability, not for performance.  0.5 is planned to fix usability and 
performance issues and bugs of course. - First implement all functions to work 
properly, then optimize and see if it still works the same as the previous 
version, that's my plan)

I propose the following change for WoT 0.5 to get rid of the permanent O(N*N):

- Permanent USK subscriptions should only be done to rank1 identities: The 
identities to which an OwnIdentity has assigned a (positive of course) trust 
value (= the users trustees). This should give us "small world network"-effects 
already. And if I'm right it changes everything from n? to some logarithmic 
function of n. That is to be proved :)

- The trust lists which are fetched of the rank1 identities will give us new 
edition hints for new trust lists of other identities. Its called "hints" 
because we cannot tell the USK manager that those editions REALLY exist, they 
might be spoofed, i.e. too high. The USK manager supports specifying an 
edition as hint-only.

- So for rank 2 identities (Y is rank 2 <=> an own identity trusts X and X 
trusts Y): If we receive a new edition hint for a rank2 identity, immediately 
start a fetch for the hinted edition. Give the fetch a certain amount of time 
to succeed, abort it if it doesn't. I propose 1 hour as the time limit. Tell 
the USK manager NOT to attempt to search for any newer editions than the 
hinted one: We want to use the information gathered from our rank1 identities 
instead. But do not disable the fetching attempts of older editions than the 
hinted one - to detect bogus hints.

- For rank3 and above identities, do the same as for rank2 but only allow a 
hint-fetch-attempt every N days. N is to be carefully tweaked, I propose we 
start with 3.

- If any identity has not had a fetch attempt for >= M days, try to fetch them 
once. In other words, each identity is fetched at max every M days so that 
identities which are not "hit" by the random heuristic above still get fetched 
every now and then. DO allow the USK manager to search for editions higher 
than the current hinted one. Do this to catch bugs in the other heuristics. 
Log if an edition was fetched which was higher than the latest received hint. 
I propose M to be 7 days.

Now the question is: Who can calculate the maximal, minimal and average 
complexity of my algorithm? :) 

I'm aware of the fact that the last point (fetch all identities every 7 days) 
introduces some O(n?)  again but IMHO its necessary for preventing bugs which 
could cause some identities to be NEVER fetched. We can disable it after we're 
sure that  it's not needed.

And if anyone has suggestions for improvements, feel free to give them. I 
consider my proposed rank1 and rank2 behavior as quite natural, but for rank3 
and above we might for example use an exponential function of rank, score and 
whatever for the minimal delay between fetches.

Greetings, xor

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20100113/31090366/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part.
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20100113/31090366/attachment.pgp>

Reply via email to