What do the other config values mean?
Ethereum has been live for a long time. Over time, patches and improvements are applied to the chain for better stability or more features. This goes for Homestead (which added e.g. the longest-chain rule) and many Ethereum Improvement Proposals (EIP). When the rules change, new transactions and blocks comply to those rules. Old blocks stay the same because they have already been verified
If you are testing software that uses Geth, you want to simulate a realistic blockchain so that you don't run into surprises in production. That's why you need a few of these "old-new" transitions. You don't want to copy the entire live chain, so instead you tell Geth that EIP 160 was introduced at block #10. Blocks #1 through #9 will not have it, and block #10 will.
Why do specific accounts need to be explicitly allocated a balance of zero?
They don't. If the balance is 0, you may as well leave it out and create a new wallet. I don't know why these accounts exist, but judging by the hashes they are bogus accounts. They have no transactions, and since a hash cannot be reversed, you'd have to be very lucky to generate accounts that start with that many zeros.
Edit: it seems like these accounts are precompiled smart contracts. They are built into the blockchain upon initialization, and therefore use a declared address rather than a generated one. See Out of Gas invoking precompiled contracts on private blockchains. I'm not sure why they have a balance of 0 rather than 1 Wei. Maybe something has changed since that question was posed.
Who are the key holders to this account?
It's safe to say the Ropsten devs control that account. It is a huge stash of Ether. After the blockchain is created, the only way to make Ether is mining, which is more expensive than simply having a starting budget.
There is an Ethernet Faucet where you can "tap" Ether for free for your own purposes. Some money on the faucet account can be traced back to the origin:
- 1 billion Eth from initial account to intermediate account
- 10,000 Eth from intermediate account to faucet
Of course, this is not nearly enough to supply the Faucet, but at least it's evidence that the original account and the Faucet are owned by the same people. If we could find the biggest transaction received by the Faucet, I'd expect to see that it received most of its wealth from the initial supply.
Best Answer
Use something like this:
yourChainId
: Just use a number.yourPeriodInSecs
: Block time in seconds. 5 or 10 are good values to start with.yourEpochInBlocks
: The default of 30000 is usually good enough.yourPreallocAccount
,yourPreallocAmount
: Since no coins are created through mining, the preallocated amounts are all you have. Give an account some coins here. (No prefixed "0x".)yourInitialSigners
: You need at least one initial signer. Add its account address here.yourInitialGasLimit
: The initial gas limit per block. Depends on what you want to do. (Consider 21000 gas/transfer, for example.)yourUnixTimeStamp
: The number of seconds since the Unix epoch (1970-01-01).Notes:
config
are optional; the way they are set here get you a blockchain that works like the current Ethereum (except for Clique). They control the blockchain behavior. You'll find more about what they mean by searching for them.alloc
are predefined contracts that get initialized by this. Not strictly necessary but recommended.