I'm on Windows 10 pro. Using a reasonable genesis block, I have set up 3 geth instances (01,02, 03) on the same laptop called as follows:
geth ^
--identity "XxxxxTest01" ^
--genesis C:\WORK\Ethereum\Geth\XxxxxTest_Genesis.json ^
--datadir C:\WORK\Ethereum\Data\XxxxxTest01 ^
--networkid 4999 ^
--rpc ^
--rpcport 40901 ^
--rpccorsdomain "*" ^
--rpcapi "db,eth,net,web3" ^
--port 30901 ^
--nodiscover ^
--maxpeers 10 ^
--ipcpath \\.\pipe\geth.XxxxxTest01.ipc ^
--gasprice 1 ^
--etherbase "0x37...." ^
--unlock "0x37...." ^
--password C:\WORK\Ethereum\Geth\Xxxxx01.pw.txt ^
--cache 1024 ^
--verbosity 6 ^
2> C:\WORK\Ethereum\Geth\Xxxxx01.log ^
console
Once these are running, I can open three consoles like this:
geth --preload C:\WORK\Ethereum\Geth\Xxxxx01Peers.js ^
attach ipc:\\.\pipe\geth.XxxxxTest01.ipc
The .js contains the necessary admin.addPeer(..) calls. The output of admin.peers looks ok. I have two problems:
1) I can only mine on one of the 3 eth instances. Once I have mined on one, and stopped mining via miner.stop(), any attempt to start mining on one of the other instances results in
I0628 15:53:41.873442 ethash.go:259] Generating DAG for epoch 0 (size 1073739904) (0000000000000000000000000000000000000000000000000000000000000000)
panic: ethash_full_new IO or memory error
goroutine 228 [running]:
panic(0xcfc560, 0xc0841b2c40)
....
Note that whatever is mined does show in the 2 other instances in real time, so the instances do communicate with each other. In terms of memory, only about 6 of 16 GB is used.
2) the nodes do not synchronize correctly, so if a transfer is done on node 2, this shows in the log as
I0628 16:01:30.481569 eth/handler.go:776] broadcast tx to 2 peers
but the other two logs show nothing. If I then mine on node 2, then the transaction appears in nodes 1 and 3. If I mine in another node, then the transaction is lost.
NB after closing all instances, and restarting, I can start mining on any one (but only one) instance.
Any ideas what the problem might be?