BOINC / boinc

Open-source software for volunteer computing and grid computing.
https://boinc.berkeley.edu
GNU Lesser General Public License v3.0
1.95k stars 439 forks source link

Delegating recent average credit to another account #5582

Closed grctest closed 2 months ago

grctest commented 2 months ago

Describe the problem

As an user I wish to give my recent average credit (RAC) to another user without having to use their account, I'm currently unable to do so with my own account.

I'm able to provide RAC to another account if they provide me a weak authenticator key to do so, however this has several drawbacks:

Describe the solution you'd like

Introduce a new field to the profile page where the user can specify another BOINC user's account to receive your full RAC.

Possibly also add a button to other user's profiles (not your profile) as a shortcut to delegate RAC to this profile's account.

If the user has provided an account in this field, then set the user's RAC to 0, then contribute the RAC to the target account.

Don't include the donator user's computer in the target user's host machine list.

Additional context

Total credit is not in scope, recent average credit only.

If target users are earning money for charity then you could contribute to their efforts by delegating your RAC to them, instead of involving yourself at all in 3rd party reward systems/mechanisms.

This issue proposes delegating 100% of your RAC to a single account account for simplicity sake, however it could be split among multiple target accounts. The weak authenticator cannot be used to contribute 25% to 4 different accounts with the one BOINC client, however it sounds feasible simply splitting the delegated RAC among multiple accounts.

davidpanderson commented 2 months ago

Is this a BOINC issue? AFAIK BOINC has no mechanism for transferring credit between accounts.

grctest commented 2 months ago

I selected the 'feature request' option when creating this issue for the BOINC web server, yeah.

You're right that there isn't a mechanism to transfer RAC, the closest thing to it right now is using another account's weak authenticator to add your pc to their account per individual project.

I'm interested in trying to figure out the feasibility of this idea, whether it'd slow down (or complicate) credit calculations too much, or if there could be a minimum viable method for users to donate their RAC to others?

Perhaps the simplest change would be to check if the user has populated the new profile field, and if so grant the credit to the target user and their team instead of my account's within the grant_credit.php and credit.cpp files? Are there other files I should look into too? Thanks

CyberTailor commented 2 months ago

BOINC Credit should not be a subject of trade, it's not a currency.

grctest commented 2 months ago

Thanks for the input @CyberTailor, however I don't believe this would constitute a form of a trade system being introduced.

Trade implies the donator account would get something in return for their donation, which they wouldn't; the donation receiving account wouldn't even be alerted to this 3rd party contribution nor would the target account be shown in the donator's public profile page.

Rather, it's a proposal to introduce a one way charitable donation mechanism from one BOINC account to another BOINC account within a single project, with no goods of any kind returning back to the donator.

There are other reasons for this other than boosting the 3rd party earning potential for the receiving account:

Further, in my follow-up message I have already proposed reducing the scope to simply changing who receives the new credit on work unit completion, rather than messing around with already rewarded credit - your existing RAC would deplete to 0 like swapping to using their weak authenticator would.

This reduced scope idea wouldn't transfer existing RAC nor total credit, it would simply contribute new credit to an existing RAC upon the completion of work units, so it'd still take approx 30 days to have full effect.

davidpanderson commented 2 months ago

The purpose of credit accounting is to know how much work was done by each computer. Credit-shuffling would undermine this, so we're not going to add such features to BOINC.

grctest commented 2 months ago

Fair enough, understood, though I always thought the purpose of granting credit was primarily that of gamification, encouraging more people to legitimately compete crunching more work units faster than one another, rather than just for establishing benchmarks for unique host machines, wuprop has that pretty much fully covered for most hardware combinations.

I wouldn't have thought that project owners would have cared much whose accounts RAC is being legitimately distributed to, considering their bottom line is the more work units being legitimately solved the merrier?

I was thinking that if you delegated to another, then it wouldn't check their account for nested delegations, preventing loops or nested credit delegations, so with that limitation it'd be less of a credit shuffle and more sliding my credit into your account...? lol

Thanks anyways for all the input on the idea, much appreciated. I might try implementing this anyways in a forked repo of my own for projects to implement at their own discretion.