Just my 2 GRC: a simple proposal to remove the team requirement in Gridcoin

in #gridcoin7 years ago (edited)

I read this article by @ponimayu
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 @ponimayu 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.
@ponimayu 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 @dutch 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 =@teamname

gridcoinresearchd will issue the call with this parameter set to "Gridcoin".

Sort:  

The team requirement is very likely to be lifted in future - after we have a democratic vote on the issue to ensure majority agrees with it. As a matter of fact, there is a 200,000 GRC bounty on the code which implements team neutrality.

With regard to your idea of changing the team names, the issue lies in harvesting the RAC of the miners. Lets say for the sake of argument that a massive team implements this tag - now the RAC for each member in this team is harvested. The total number of miners goes up a LOT, so it is now a lot harder to mine GRC. GRC is distributed to each member of the newly added team, but in all likelihood many do not have a CPID registered with the network, so they are mining into the void.

Further, if a user is mining into the void, it would be trivial for anyone to register that user's CPID on the network and collect the other person's rewards.

thx dutch for your comment, i think i get the point. at least it looks like i am not completeley off road.

the BOINC server should have knowledge of all registered cpids in gridcoin and return only people in team name like '% (Gridcoin)' and with cpid already registered on the gridcoin network. This would keep the total number of miners honest, although it will go up and make mining harder (the price of GRC could benefit it and go up as well). But still the cpids of void miners can be retrieved with other server calls and abused by registering it with a beacon later on in gridcoin, right?

another idea then: assume we go with the second proposal and we add a flag "minesgridcoin" the team founder can set. the upgraded BOINC server allows the flag to be set only if all cpids of the team are already registered in the gridcoin network. this would work at least for small teams. (probably a mess to implement as the BOINC server should not have knowledge of cpids registered in gridcoin, in my opinion)
excuse me just thinking loud, a bad team founder could register all void miners first, set the flag and go away with the additional GRC reward...

best idea so far: in table user of BOINC server add a flag "gridcoinminer". Each user can set this flag individually only after logging in on his/her profile page. After setting the flag, the user will be so keen to advertise his/her cpid on the gridcoin network, the same behaviour as he/she would do when changing the team to 'Gridcoin'.
The new call on BOINC server will return all users who are either in team Gridcoin or who have the "gridcoinminer" flag set. This removes the team requirement and avoids the void miner problem you describe.

the call on the BOINC server will become then:
select u.userstats from user u where u.gridcoinminer=1 or u.team_id=(select t.team_id from team t where t.team_name='Gridcoin'

To me it looks more something that can be solved only involving the BOINC server side, a mod on the gridcoinresearchd alone is not enough... i would give half of the bounty to the BOINC developer who impelments the "gridcoinminer" flag on the user account page and the new BOINC server call.

btw do you already have a sketch idea on how to remove the team requirement?

To your knowledge has anyone even started on this work? Seems like something the coin creator, Rob, would be all over. (Yes, that's putting the cart before the horse, but I can't imagine such a vote not being a landslide in favor.)

Rob is indeed in favor of this. Work has been begun to develop. There are issues to solve first however. But in due time we will see a team neutral Gridcoin network.

The issue lies with how the team stats is currently collected. To not overload the projects servers, only the tram Gridcoin data is fetched from each project. Instead of downloading data sets for 150,000+ users on some projects we are only fetching a fraction of those with our 15,000 users of team Gridcoin.

When we lift the team requirement we will have to fetch all the datasets, making it unnecessary to require a special tag in thr names.

When the requirement is lifted it will not mean that the network suddenly gets flooded with new users, they still have to broadcast their beacon to the network, connecting their CPID to a payout address. This is also a reason to delay, since we need to make sure none can just snatch a CPID as their own, as @dutch points out.

Work is ongoing and it looks like we are heading towards a team neutral network. Now it's just a matter of development work.

Well written. And instead of longing for the team requiremen to be removed better think of it as the best time to mine Gridcoins :D

hi sc-steemit. thx for popping into the discussion.

i tried to modify the proposal based on @dutch comment, see it below. what about simply adding a flag "gridcoinminer" to the account user page of each BOINC project server and implement a special call on the BOINC server returning all user stats of users in team Gridcoin or having the "gridcoinminer" flag set?

the requirement for users to be in the gridcoin network changes from "being into team gridcoin" to "either being into team Gridcoin or having the gridcoinminer flag set".

to set the flag users should login on the BOINC project server with their credentials, set the "gridcoinminer" flag and then advertise their cpid with the beacon on gridcoin network. the same as they are doing now when they change their previous team to 'Gridcoin'

the network will not be flooded because users will only slowly realize about gridcoin and the new "gridcoinminer" ability.... they will have to set the flag and learn how to advertise the beacon... the entry barrier will be the same as before...

doing so, nobody can claim the reward of void miners, because there are no void miners! well there is a tiny fraction of time between setting the flag and advertising the beacon which could be exploited, but this is the same behaviour as it is now...

the call on the BOINC server will be very fast as one can simply select on the user table (the join on the original proposal disappears)

backward compatibility with old BOINC project servers in need to upgrade would stay as in the original proposal. gricoinresearchd would try first the new call an if not implemented it will revert about asking userstats of people in team 'Gridcoin'.

would not that be an easy change for BOINC server side developers? i assume lot of BOINC developers are also involved in gridcoin... it is in the best interest of gridcoin and BOINC developers to work together. in the end, the change required to BOINC server is minimal.

what about halving the bounty? half to the BOINC developer who implements the "gridcoinminer" flag + the BOINC server call and half to the gridcoinresearchd developer who does the gridcoin client changes?

Congratulations @dangermouse77! You have completed some achievement on Steemit and have been rewarded with new badge(s) :

You got a First Reply
Award for the number of comments

Click on any badge to view your own Board of Honor on SteemitBoard.
For more information about SteemitBoard, click here

If you no longer want to receive notifications, reply to this comment with the word STOP

By upvoting this notification, you can help all Steemit users. Learn how here!

Coin Marketplace

STEEM 0.15
TRX 0.16
JST 0.028
BTC 67807.24
ETH 2423.65
USDT 1.00
SBD 2.33