CreditSystems
A credit system determines the score and thant wat the wait time peers wait in your queue before you upload to them.
Credit systems
Official Credit System
There are two different credit modifier calculated:
- Ratio1 = Uploaded Total x 2 / Downloaded Total
- Ratio2 = SQRT(Uploaded Total + 2)
Both ratios are compared and the lower value is used as modifier. Some boundary conditions also exist:
> Uploaded Total < 1MB => Modifier = 1 > Downloaded Total = 0 => Modifier = 10 > The modifier may not be lower than 1 or higher than 10
[edit]
Peace Credits:
same as official credit system, only shorter code
Xman improved Credit System
This feature is an enhancement of the existing credit system. It rewards clients which gives you a high download. This clients gets a bonus factor.
On the other side, clients you upload much data and they don't give something back to you will get a penalty for the current emule session.
[Formula for positive bonus:
* Bonus = (download - upload)/10485760 - 1.0/(download/10485760)
The max scoreratio is 10. (like official)
Example (with ~ 1 Chunk difference): Download Upload Official version Xman improved 10MB 1MB 3,46 3,46 + bonus:0 20MB 11MB 3,63 3,63 + bonus:0 30MB 21MB 2,86 2,86 + bonus:0,2 90MB 81MB 2,22 2,22 + bonus:0,7 50MB 20MB 5,0 5,0 + bonus:2,2 90MB 50MB 3,6 3,6 + bonus:3,7 120MB 80MB 3,0 3,0 + bonus:3,8
a client can get a negative bonus of 0,1 if you gave him 1 chunk(9,28MB) more this session and also at complete comparsion of download/upload without geting something back.
a client can get a negative bonus of 0,2 if you gave him more than 2 chunk(9,28MB) this session and also at complete comparsion of download/upload without geting something back
Magic angel credit system
Magic Angel" Creditsystem based on the official Creditsstem. The differences are:
* it gives Credits for Upload more than 1.65MB (official 1.00MB) * the lowest modifier is 0.1 (official 1.0) * the highest modifier is 50.0 (official 10.0)
The Magic Angel + Creditsystem
The Magic Angel + Creditsystem based on Magic Angel Creditssytem, but increases the modifier a bit, if the client uploaded to us more than we uploaded to him. If the upload of the client minus his download is
* < 7MB: modifier + 0.3 * < 15MB: modifier + 1.0 * < 30MB: modifier + 2.0 * >= 30MB: modifier + 3.0 == Ratio Credit System ==
* based on official cs, but lowest modifier's 0.1 not 1.0 in official * x2, x4, x16 credit award to uploaders
Ratio Credit System - Stulle's implementation
Source: Stullemule 3.6 src - ClientCredits.cpp - code part: case CS_RATIO: // RT.10a mod Credit
* In contrast to its name, it is not based on UL/DL ratio, but on DL, UL values and their differencies. * There is no simple and the only formula. * Default credit = 1 * Progressively punishes near zero ( <= 1 MB ) uploaders. * Progressively boosts uploaders who got nothing paid back yet ( <= 1 MB in total ). * For client who uploaded to me > 1 MB and <=9 MB grants minimal credit DL / 9. * For client who uploaded to me > 9 MB minimal credit is 0.7 + sqrt ( DL +1 ) / 10. E.g. uploading 99 MB grants credit 1.7. * With balanced ratio credit raises proportional to sqrt ( DL + 1) * Credit is farther increased/decreased, depending on UL - DL difference. * No limiting values
Legend and formulas:
DL = DownloadedTotalMB ( to me ) UL = UploadedTotalMB ( to him ) Client without good ID : credit = 1 New client ( both UL and DL <= 1 ) : credit = 1 DL <= 1 AND UL > 1 ( near zero uploader ) : credit = 1 / sqrt ( UL ) DL > 1 AND UL <= 1 ( should be paid back ) : credit = DL
Both DL, UL > 1 MB : Basic = sqrt ( DL + 1 ) correction = sqrt ( abs ( DL - UL ) ) DL > UL : credit = Basic + correction UL - DL <= 1 : credit = Basic UL - DL > 1 and DL >= 9 : credit = max ( 0.7 + (Basic / 10), Basic / correction ) UL - DL > 1 and DL < 9 and Basic / correction < 1 : DL / 9 UL - DL > 1 and DL < 9 and Basic / correction >=1 : credit = Basic / correction
Table of Ratio Credit values
[imageratio
Neo Credit system
The Standard Score is 1.0. The uploaded/downloaded values are in bytes. If the Client does not has a file we need he will get a 1.0 score in any case. If the Client does not have a good SUI only Session Transfers are counted.
If the result of uploaded - downloaded is bigger then 1.0 the formula is: ((9728000*2(<-In case of bad/no SI) or 4(<- In case he owns a valid SI))/(uploaded-downloaded))^2. The biggest allowed result is 1.0 the smallest allowed result is 0.1.
If the result of uploaded - downloaded is smaller then -1.0 the formula is: ((-1*(uploaded-downloaded))/(9728000*1(<- In case of bad/no SI) or 2(<- In case he owns a valid SI)))^2. The biggest allowed result is 2.0 the smallest allowed result is 1.0. [edit] Pawcio Credit System:
* Range from 1.0 to 100.0 * Multiplier of 3 (instead of 2) ---- ratio = 3 * downloaded / uploaded * For new clients (downloaded and uploaded data less than 1MB) ratio = 3.0 (instead of 1.0) * If you have recieved more than 1MB from someone but haven't given anything back user gets ratio = 100.0 * Small bonus for clients that have given you many MB: o if you get 100MB then user recieve ratio = 50.0 till you give back 108MB o 50MB - ratio = 25.0 - 55MB o 25MB - ratio = 12.0 - 28MB o 10MB - ratio = 5.0 - 12MB
== Fine Credit system ==
* punish client for downloading partial files without giving back.
Fine CS
S.W.A.T. Credits
There are two different credit modifier calculated:
- Ratio1 = Uploaded Total x 2.2 / Downloaded Total
- Ratio2 = SQRT(Uploaded Total + 2)
Both ratios are compared and the lower value is used as modifier. Some boundary conditions also exist:
- Uploaded Total < 1MB (exactly!) => Modifier = 1
- Downloaded Total = 0 => Modifier = 10
- The modifier may not be lower than 1 or higher than 100
Sivka Credits:
IS_IDNEEDED --> Ratio = 0.75
failed ident --> Ratio = 0.5
Bad client --> Ratio = 0
diffTransfer = upload - download
If udiffTransfer >= 1GB --> ratio = 32
else if 0 < diffTransfer < 1GB --> ratio = sqrt({diffTransfer in MB})
else ratio = 1
== Eastshare Credit System ==
Base ratings: id. users(100); not supported users(80); invalid id. users(0); min.=10, max.=5000
* +6 per MB uploaded and -2 for downloaded; * +100 if upload 1MB+; * if rating < 50 and upload 1MB+, rating = 50
Lovelace Credit System:
1. l-modifier=100*((1-1/(1+exp((3*{MB uploaded to us}^2-{MB downloaded from us}^2)/1000)))^6.6667) 1. start:1, 2. max:100, 3. min:0.1, 4. ratio:1:1.5, only one formula
CreditThefts will not get any credits. Only clients using the 'SecureHash' are able to get a multiplier of 100. All others will stick at 10. In contrast to the original credit system, credits are evaluated more on differences and not on quotients. Using the orginal system you have the best credit values shortly after generating a new userhash. With the new credit system you get good credit values faster if you already have uploaded many MB before (and did not cheat by killing the userhash). (old system: 5up/ 5down = DLModifier of 2, additional 5up = DLModifier of 4 10up/10down = DLModifier of 2, additional 5up = DLModifier of 3 -> for the same amount of additional upload you get less score (-25%) new system: 5up/ 5down = DLModifier of 1.16, additional 5up = DLModifier of 2.31 10up/10down = DLModifier of 1.85, additional 5up = DLModifier of 5.09 -> for the same amount of additional upload you get more score (+120%) because you already uploaded a certain amount before.)
Image:Dl-modifier_table.GIF
ClientAnalyzer
* Start value:1 * Minvalue:0.01 * maxvalue:10
Assigns a score to clients based upon analyzations of their behaviour, such as:
* how long one knows someone (bonus for every week that a client keeps his hash) * upload/download ratio * kind of up/download (complete/partial/rare) * anti leecher options; nickthieves, modthieves, filefakers, spammers, xs exploiter or hammerer are taken into account * avg reask time
TK4 Credit System
Native CS of TK4 Mod 1.5f, based on eMule 47a. C++ source code and full text is here -> [|TK4 Mod - Credit systems (http://emuletk4mod.sourceforge.net/TK4_Mod_Creditsystem.htm)] )
If you are sharing completed files and someone downloads data from one of these from you they probably cannot give you data back as you have all of the file. So in the TK4 system their credit rating remains unchanged. If you are downloading a file and someone takes data from you from the parts of the file you have they will be subject to the credit system and depending on how much they have given they may have their credit rating reduced. At any time if anyone gives you data they get a credit rating increase. The credit system works basically like this:
credit start point = 10 allowance = 'Mb given'/4 + 1 Mb
if 'Mb taken' greater than 'Mb given + allowance + 1Mb (they have taken more than they gave + some)
Then if the file is a file we are downloading
if '(Mb taken - allowance)' is between 1 to 81Mb credit multiplier range = 9 to 1 math: 10 - square root('(Mb taken - allowance)' - 'Mb given') if '(Mb taken - allowance)' is greater than 81Mb credit multiplier range = 1 to 0.14 math: 9 / square root('(Mb taken - allowance)' -'Mb given')
if 'Mb given' is greater than 'Mb taken' (they have given more than they have taken)
credit multiplier range = 10 to 342 math: 10 + log(2.72+('Mb given'-'Mb taken)*4)+('Mb taken/12)
There is no absolute range for multipliers but I have quoted a range of 0.14< to >342 (Assumes around a max. 4Gb difference) with a starting point of 10. Clients with failed SUI will start at 10, but not go up.
Reverse Credits: (AKA as credit shaping)
Bad feature
* Give a 10x score increase to clients in your download queue (you will be wanting something from them soon) * penalize NoNeededParts and queuefull 2x (currently they're not needed but they might be in future, upload to them when all other sources have a score of at least 5) * Give a slight score increase if the estimated waiting time in their queue is low (this will be implemented in the next version) * Give a slight score increase (smallest) for waiting time, just to be fair.
In effect, the our client will be serving other clients in this order:
* clients we try to download from who we haven't uploaded to anything yet (they'll get 1.1mb for the max ratio), clients with low estimated waiting time for their queue will go first * Clients who have returned upload and we are trying to download from up to a ratio of 5x * Clients we're trying to download from but are on NNP or queue full status get 1.1mb * All other clients we're trying to download from are served upload up to a ratio of 10x * All clients who have a maximum rating will be served on a first come first served basis