I'm happy to put one of my miners on this once it's up and running... will only be around 300MHash.. but should be enough to help kick off the project :-)
Thanks for the offer, when the groupcoin net is started I'll post the stuff in this thread. You would be the second miner, so you'd get a bitcoin.
The contribution list for sharing 50% of your mining will be up shortly after the net is working.
Who decides whether or not a miner has broken the rules?
An extra validation step would be added in the groupcoin clients. It would check that the coinbase address in on the whitelist. As Markm pointed out, that extra step would be somewhere around here:
// First transaction must be coinbase, the rest must not be
if (vtx.empty() || !vtx[0].IsCoinBase())
return error("CheckBlock() : first tx is not coinbase");
In pseudo code it would look like:
// First transaction must be coinbase, the rest must not be
if (!IsInWhitelist(vtx[0]))
return error("CheckBlock() : first tx public key is not in whitelist");
..
bool IsInWhitelist(tx)
transactionKey = getPublicKeybyTransaction(tx);
whitelistKeys = getWhitelistKeysByFile();
for (int i = 0; i < whitelistKeys.size(); i++)
if transactionKey == whitelistKeys[i];
return true;
return false;
Yup, that's where the list would start. Once the groupcoin net is running, I'll ask contributors if they'd like to be administrators. When a new contributor is nominated, if there are no objections they're added to the list. If there is an objection, three administrators are chosen at random to see if the contributor should be added. If the answer is no, the candidate can't ask again to be added for at least a month.
The adminstrators would get a share of the 10% administration fee. So 50% would go to miners, 10% to administrators and 40% to the contributors.
I am interested in the criteria for the genesis block, because I have run several alternative blockchains for months using a ridiculously simple hack of the part of the code that creates the genesis block.
I think all I did was change the newspaper headline.
Either it seemed to me that all the math to make things add up right or hash right or whatever was in the code, or just possibly I might have moved something just a little bit to make sure the calculation did happen.
All the hints I have seen in various places about what one does to make a genesis block have caused me to be amazed that my simple hack seems to have actually worked.
If your system works, you'll get 3 BTC. I can not judge whether it works or not, so if there are no objections within 3 days I'll assume it's good.
You could simply make it part of the protocol that only one or more specific hard-coded addresses can be given the generated coins, and have one pool per each such approved address. The daemons and clients need not care who the pools pay to mine, so long as the mined coins go to the designated addresses that could be all the daemons and clients need to know?
I decided on the periodically updated whitelist because if a generation key is stolen, all the clients would have to be updated. Then if you have updating capability, you may as well make it periodic.
For the first validation bounty, you just need to validate against a file in the client directory.
The second bounty requires the client to periodically check for updates.
Now about git... Sourceforge back in the day showed me exactly what command to use to suck back an svn snapshot and svn up was easy to remember ever since to stay up to date.
Can someone translate "svn co" and "svn up" into gittish, that gitorious place doesn't seem to be getting that info through to me somehow.
I found gitorious hard to use and github easy to use. The best git guide I found is:
http://www.kernel.org/pub/software/scm/git/docs/everyday.htmlTo add groupcoin to my github account I followed the github instructions made when I registered. Then to not upload the backup files, object files and QT Creatir files, I set the .gitignore file to the following:
*~
*.o
*.pro
*.pro.user
added the entire directory recursively with:
git add .
commited with:
git commmit -a -m first
then uploaded with:
git push -u origin master
2) You didn't change the IRC channel so I have. (s/bit/group/).
Thanks for pointing that out, I'll change that in groupcoin.
If we really wanted to deny unapproved miners every crumb of solace we could worry about the checking of the rest of the transactions if possibly transaction fees might not be bundled into the coinbase transaction but hey, you want minting forever anyway so how vindictive need we be toward people who choose to mine "for free"? (As in do you want to worry about them maybe getting a transaction fee now and then?)
If someone wants to deny themselves 25 BTC to collect crumbs, they may be able to, but I'm not worried about it.