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.
A cost though is the fact that I left Satoshi his 50 coins - his ownership of the genesis block. I figured what the heck, so he gets 50 coins out of each batch of 21,000,000 that I make, am I going to begrudge him that?
Gosh I could have made an extra 50 coins by usurping Satoshi's 50 coins per blockchain. Was I a fool not to do so?
As to approved miners, since pools seem to be the wave of the future anyway why bother retrofitting approval into the daemon?
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?
To unapprove a miner simply delete their login at the pools. They are still free to mine, they just won't be paid to.
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.
Sourceforge makes it clear to me how to grab a tarball made right then and there for me of the latest/current state. Sometimes the downloads button at gitorious offers more than just do you want tgz or zip but today that was all the choice I saw so I picked tgz.
Standard three-hack new currency...
1) You already changed the ports.
2) You didn't change the IRC channel so I have. (s/bit/group/).
3) A glance at freecoin (now known as multicoin) seemed to hint one need not preserve the string length of the headline, but what the heck I always have so might as well do so again:
const char* pszTimestamp = "For Satoshi.
http://forum.bitcoin.org/index.php?topic=24813.msg312224"
That would be it, except for this new feature about restricting where minted coins go, lets grep -i validate, aha looks like actually we want CheckBlock:
main.cpp line 1699/4062
// First transaction must be coinbase, the rest must not be
if (vtx.empty() || !vtx[0].IsCoinBase())
return error("CheckBlock() : first tx is not coinbase");
for (int i = 1; i < vtx.size(); i++)
if (vtx[i].IsCoinBase())
return error("CheckBlock() : more than one coinbase");
I am guessing there will turn out to be a vtc[0].something which is the address the minted coins went to. That would be what we'd want to check. Once we figure out where it gets set of course so we can set it to what our check is going to check for.
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?)
-MarkM-