I haven't actually looked through your hand-crafted chainspec... But what I'd suggest, to save time in the long run (and to discourage others from doing it by hand), is to use a translation tool to do it for you.
In the README of the repository you link to, under the See also section, there's a link to keorn's translation tool, which will convert Geth -> Parity:
https://github.com/keorn/parity-spec
If you can't telnet then there is something wrong with your networking. Either your virtual network connection between hosts is the problem or there is a firewall blocking connections.
If you are just getting started then I'd keep things really simple first of all and:
- Use standard geth nodes
- Run your nodes on one virtual machine on different ports
e.g. initialise your geth nodes like this:
ethuser@host01:~$ mkdir test1
ethuser@host01:~$ cd test1
ethuser@host01:~/test1$ mkdir nodeA
ethuser@host01:~/test1$ mkdir nodeB
ethuser@host01:~/test1$ <use your favourite editor to create a genesis.json file in this directory>
ethuser@host01:~/test1$ geth --datadir nodeA init genesis.json
WARN [08-04|10:41:41] No etherbase set and no accounts found as default
INFO [08-04|10:41:41] Allocated cache and file handles database=/home/ethuser/test1/nodeA/geth/chaindata cache=16 handles=16
INFO [08-04|10:41:41] Writing custom genesis block
INFO [08-04|10:41:41] Successfully wrote genesis state database=chaindata hash=dd3f8d…707d0d
INFO [08-04|10:41:41] Allocated cache and file handles database=/home/ethuser/test1/nodeA/geth/lightchaindata cache=16 handles=16
INFO [08-04|10:41:41] Writing custom genesis block
INFO [08-04|10:41:41] Successfully wrote genesis state database=lightchaindata hash=dd3f8d…707d0d
ethuser@host01:~/test1$ geth --datadir nodeB init genesis.json
WARN [08-04|10:41:52] No etherbase set and no accounts found as default
INFO [08-04|10:41:52] Allocated cache and file handles database=/home/ethuser/test1/nodeB/geth/chaindata cache=16 handles=16
INFO [08-04|10:41:52] Writing custom genesis block
INFO [08-04|10:41:52] Successfully wrote genesis state database=chaindata hash=dd3f8d…707d0d
INFO [08-04|10:41:52] Allocated cache and file handles database=/home/ethuser/test1/nodeB/geth/lightchaindata cache=16 handles=16
INFO [08-04|10:41:52] Writing custom genesis block
INFO [08-04|10:41:52] Successfully wrote genesis state database=lightchaindata hash=dd3f8d…707d0d
ethuser@host01:~/test1$
Then launch your first geth node like this
ethuser@host01:~/test1$ geth --datadir nodeA --networkid 1234567 console
WARN [08-04|10:42:22] No etherbase set and no accounts found as default
INFO [08-04|10:42:22] Starting peer-to-peer node instance=Geth/v1.6.7-stable-ab5646c5/linux-amd64/go1.8.1
INFO [08-04|10:42:22] Allocated cache and file handles database=/home/ethuser/test1/nodeA/geth/chaindata cache=128 handles=1024
WARN [08-04|10:42:22] Upgrading chain database to use sequential keys
INFO [08-04|10:42:22] Initialised chain configuration config="{ChainID: 1907 Homestead: 0 DAO: <nil> DAOSupport: false EIP150: <nil> EIP155: 0 EIP158: 0 Metropolis: <nil> Engine: unknown}"
INFO [08-04|10:42:22] Disk storage enabled for ethash caches dir=/home/ethuser/test1/nodeA/geth/ethash count=3
INFO [08-04|10:42:22] Disk storage enabled for ethash DAGs dir=/home/ethuser/.ethash count=2
WARN [08-04|10:42:22] Upgrading db log bloom bins
INFO [08-04|10:42:22] Bloom-bin upgrade completed elapsed=252.683µs
INFO [08-04|10:42:22] Initialising Ethereum protocol versions="[63 62]" network=1234567
INFO [08-04|10:42:22] Database conversion successful
INFO [08-04|10:42:22] Loaded most recent local header number=0 hash=dd3f8d…707d0d td=40
INFO [08-04|10:42:22] Loaded most recent local full block number=0 hash=dd3f8d…707d0d td=40
INFO [08-04|10:42:22] Loaded most recent local fast block number=0 hash=dd3f8d…707d0d td=40
INFO [08-04|10:42:22] Starting P2P networking
INFO [08-04|10:42:22] UDP listener up self=enode://9ce583f7e1905b23217cd2a92894291c6d8f5ce7a29e85fdeaf48b3ab065c6d5b6cce4f064fdaf26f41d2354bf0a203438563f6ffdba73cec3b8692f6f850817@[::]:30303
INFO [08-04|10:42:22] RLPx listener up self=enode://9ce583f7e1905b23217cd2a92894291c6d8f5ce7a29e85fdeaf48b3ab065c6d5b6cce4f064fdaf26f41d2354bf0a203438563f6ffdba73cec3b8692f6f850817@[::]:30303
INFO [08-04|10:42:22] IPC endpoint opened: /home/ethuser/test1/nodeA/geth.ipc
Welcome to the Geth JavaScript console!
instance: Geth/v1.6.7-stable-ab5646c5/linux-amd64/go1.8.1
modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
>
And then start up your second node. In my case I needed to use ethuser@host01:~/test1$ geth --datadir nodeB --port 30304 --networkid 1234567 --bootnodes enode://9ce583f7e1905b23217cd2a92894291c6d8f5ce7a29e85fdeaf48b3ab065c6d5b6cce4f064fdaf26f41d2354bf0a203438563f6ffdba73cec3b8692f6f850817@127.0.0.1:30303
Wait a few moments to give the nodes a chance to connect and then double check in your console that admin.peers
returns some more info, e.g.
> admin.peers
[{
caps: ["eth/63"],
id: "9ce583f7e1905b23217cd2a92894291c6d8f5ce7a29e85fdeaf48b3ab065c6d5b6cce4f064fdaf26f41d2354bf0a203438563f6ffdba73cec3b8692f6f850817",
name: "Geth/v1.6.7-stable-ab5646c5/linux-amd64/go1.8.1",
network: {
localAddress: "127.0.0.1:41900",
remoteAddress: "127.0.0.1:30303"
},
protocols: {
eth: {
difficulty: 40,
head: "0xdd3f8d61f38ebc195a6c9b0e5888e7e035f31ecd92e4427fb01176b984707d0d",
version: 63
}
}
}]
>
I've left out creating accounts etc as you don't specifically ask it but if you're interested here are some more of my own newbie experiences: https://alanbuxton.wordpress.com/2017/07/19/first-steps-with-ethereum-private-networks-and-smart-contracts-on-ubuntu-16-04/
Best Answer
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:
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.