How to connect an ethereum node (eth, geht, pyeth) to a random testnet and what do the network IDs stand for. Are there network IDs I should not use because they are maybe used elsewhere or reserved?
For Geth you can connect to the public testnet (Morden) via:
For other clients and for a full explanation plese refer to this wiki page: Ethereum wiki / Morden
If you don't want to use the main public testnet you could use another public testnet, for that you have to specify at least these parameters:
geth --networkid=12345 --genesis genesis.json
So you have to know the right networkid and you have to have the right genesis block to load. Nodes will be discovered based on network ID, also you can add other enodes via the
--bootnodes geth argument, more infos here.
If you connect to testnets that use the same genesis block like the consensys one then you just need to specify the
--bootnodes flag with the right enode.
If your goal is to create a private chain for testing, instead, then I suggest to follow this guide (with Geth again).
When you create your private you can specify the
"alloc" parameter on your genesis json file to allocate almost infinite ethers to your account so you don't have to mine constantly.
You can also use a mine script like this to pass as parameter in your geth call like so:
geth ...other..parameters... js geth_mine.js
to mine only when new transactions appear.
Also, you will usually call
--nodiscover do disable nodes discovery on your private net, then, to make multiple geth instances connect to teach other, you need to specify the peers via
--bootnodes or via
admin.addPeer() in the
geth_mine.js script, you can find your enodes by adding
console.log(admin.nodeInfo.enode) to the script or by loading the geth console by with:
geth ...other..parameters... console
> miner.stop() > admin.nodeInfo.enode