I read this article by
https://steemit.com/gridcoin/@ponimayu/why-gridcoin-is-worth-holding-on-to-why-it-s-not-too-late-to-invest-yet
about the benefit of removing the requirement that a gridcoin mining user has to be in the Gridcoin team on the BOINC project servers.
I think the logic uses is sound, there are people attached so much to their team (a famous one is rechenkraft.net) that would never leave it, or at least until gridcoin mining is clearly profitable without too much tweaks.
says that without the gridcoin team requirement more people will join gridcoin mining and will need some starting stake. this will boost GRC price up and increase confidence in gridcoin also by other cryptocurrency fans (if they see the price going up they join in as well).
Ok, now to the proposal, maybe it is too simple! Please correct me if I am mistaken somewhere. I did not read how gridcoin works in detail! Excuse my boldness! In the comments you will find a new proposal as pointed an important flaw into this setup. I leave the original post as it is, so it is possible to follow the line of thought.
Proposal: Require that in the team name there is the string " (Gridcoin)" at the end. So if I belong to the team "Global Processing Unit", the team name should become "Global Processing Unit (Gridcoin)"
The team "rechenkraft.net" will become "rechenkraft.net (Gridcoin)". Any other string like " (GRC)" or " $GRC$" would work, please agree on something which is good to the eye.
Now I assume that gridcoinresearchd does from time to time a call to the attached BOINC project server asking for stats of all users in team "Gridcoin". This call is done for each attached BOINC project server and is needed to see the own RAC contribution compared to the RAC sum of all users. I assume it is also used by all clients in the net to validate if a new block can be added to the blockchain, to check if the research claimed by the cpid of the user claiming the new block was done or not.
Now I am not fool: I will not ask gridcoinresearchd to iterate over all teams which have " (Gridcoin)" in the team name and then do the call about their RAC stats. This would take forever and hurt the performance of the BOINC project server as well.
Instead, I would add a new call to the Boinc project server asking for stats of all users which are in a team where the team name at the end finishes with " (Gridcoin)". For the database, this is a very fast join operation which will almost not hurt performance
select u.userstats from user u, team t where u.team_id=t.team_id and
( (t.team_name like '% (Gridcoin)') or t.team_name='Gridcoin') )
the return format of this call will be an XML equal to the XML returned in the previous call. so changes for gridcoinresearchd are minimal.
It would be also possible to add a new column "minesgridcoin" on the BOINC server to table team and then the query becomes
select u.userstats from user u, team t where u.team_id=t.team_id and t.minesgridcoin=1
but this requires a schema change on the database of the BOINC server, so I would prefer the teamname change to ' (Gridcoin)'
Of course, this would make a checkbox flag for the project founder to decide if the team mines gridcoins or not. Both methods will work. The first one is more hackish and has the advantage that a team founder simply changes the team name and the more BOINC project servers upgrade, the more projects will mine gridcoin for the users belonging to the team.
To be backward compatible as the BOINC project servers will not upgrade all at the same time:
gridcoinresearchd should first ask each project BOINC server, if it supports the new call. If yes, gridcoinresearchd will use the new call to retrieve user stats with " (Gridcoin)" in the team name. If not, it will stick with the old method of asking userstats for the team Gridcoin.
I think these are the only two changes required: add a new call method to the BOINC server and change gridcoinresearchd client to use the new call if available.
Or I am missing something very important? Or was this already discussed?
Thank you for your thoughts.
P.S: well, we could keep everything more general. The new call on the BOINC server will have a parameter @stringcontainedinteamname . The new call on the BOINC server is almost equal to the old one, we just use the LIKE '%'+@stringcontainedinteamname+'%' instead of =
gridcoinresearchd will issue the call with this parameter set to "Gridcoin".