eMule: come funzionano i CREDITI e le CODE
Visto che ultimamente si fa un gran parlare di leech mod, crediti rubati, crediti che si devono recuperare, ecc. ho deciso di scrivere una piccola guida su come funziona eMule, sperando che molti siano piu' tranquilli.
Come sapete per ricevere da un client eMule dovete essere in cima alla sua coda...
Come funziona la CODA di eMule?
Ogni client ha un punteggio, ed il client con il punteggio piu' alto sta in cima alla coda, e quando si libera un upload slot ne prende il posto.
Il punteggio viene cosi' calcolato:
punteggio = tempo in coda * file priority * credits score
Il "tempo in coda" e' espresso in secondi, ogni secondo e' un punto. In pratica 5 minuti (300 secondi) sono 300 punti.
Il "file priority" varia a seconda del file richiesto. Ad esempio, i files in release hanno una priorita' di 1.8, quelli normali di 0.9, quelli in priorita' bassa 0.2.
Il "credits score" e' un rapporto che spiego piu' in basso.
Ora facciamo un esempio di un client che sta in coda da 10 minuti, senza crediti, e che ha richiesto un file in priorita' release.
Il punteggio sara': 600 * 1.8 * 1 = 1080
Prendiamo invece un client che sta in coda da 30 minuti, sempre senza crediti, ma che richiede un file in priorita' bassa:
1800 * 0.2 * 1 = 360
I tanto famosi CREDITI
Innanzitutto come funziona il "credit score" di un client? Questo valore varia da un minimo di 1 ad un massimo di 10 e la sua formula, in linea generale, è la seguente:
credit score = (bytes ricevuti * 2) / bytes inviati
Ad esempio se da un client avete ricevuto 100Mb e ne avete inviati 10:
credit score = (100 * 2) / 10 = 20 (che diventa 10 visto che e' il massimo possibile)
Se invece ne avete ricevuti 100 ed inviati 50:
credit score = (100 * 2) / 50 = 4
Prima ho parlato di formula generale perche' in realta', per evitare che anche chi manda solo 10Mb senza ricevere niente possa avere uno score di 10, la formula che eMule usa e' un po' diversa. E cioe':
score = radice quadrata dei [(bytes ricevuti / 1.000.000) + 2]
Ad esempio se riceviamo 10Mb, il risultato è:
radice quadrata di [(10.000.000 / 1.000.000) + 2] = radice quadrata di [10 + 2] = circa 3.8
-----
Ora, per i volenterosi che sono arrivati fino a qui, spieghero' come mai il concetto di "costruirsi i crediti" con il tempo non ha molto senso, come mai non e' vero che si hanno basse velocita' quando si e' appena cambiato l'userhash (anzi...) e come mai sistemi come quello lovelace sono migliori.
Prendiamo l'esempio nostro, della comunita' italiana che si scambia spesso files. E' ipotizzabile mediamente, dopo un po', avere un rapporto dare/avere simile. Magari avremo dato di piu' ad alcuni client, e ricevuto meno da altri, ma alla fine il rapporto e' quello. Prendiamo il caso di un client a cui avete inviato 60Mb, e da cui ne avete ricevuti 50. Il vostro rapporto nella sua coda sara':
(60 * 2) / 50 = 2.4
In pratica nel punteggio della coda avrete un bonus per i crediti di 2.4.
Ora prendiamo un altro utente, immaginiamo un utente nuovo che ha appena installato eMule e che ha un nuovo userhash e quindi zero crediti: un utente simile gli manda un intero chunk, 9.28mb. Sapete che score si prende lui appena arrivato per aver inviato solo quello? 3.4. Si' avete capito bene. Addirittura, anche mandando solo 4Mb avrebbe comunque uno score superiore al vostro. Ed e' vero che il suo score diminuira' dopo aver ricevuto (mentre il vostro rimane su perche' e' piu' duraturo), ma e' anche vero che basta cambiare l'userhash di nuovo per ripetere la stessa situazione. Ecco perche' non ha senso dire che dopo aver cambiato versione ed essere passati alla 0.29b si va lenti per via dei crediti spariti, ed ecco perche' lovelace ha implementato nella sua mod un sistema di crediti piu' giusto, basato su quanto effettivamente si e' trasferito nel tempo (e che va da 0,1 a 10, mentre quello di eMule va da 1 a 10), e dove cambiare spesso l'userhash non premia.
----
Spero di essere stato chiaro anche se capisco che alcuni punti siano difficili da comprendere... I piu' curiosi possono anche chiedermi in quali files dei sorgenti sono salvate tutte queste informazioni.