2

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?

Alex K
  • 41
  • 5

1 Answers1

0

Your problem might be related to one I had : How to send transactions to a private network?

You have to provide different port numbers for each node as explained there : https://github.com/ethereum/go-ethereum/wiki/Setting-up-private-network-or-local-cluster

guillv
  • 68
  • 1
  • 7
  • Thanks, this solves issue my 2). The relevant quote from @karalabe concerning 1.4.6 is "If you have a single miner, that node will never get new blocks from the outside, so it might never consider itself completing the initial sync cycle." So I set up a node on another PC, did a bit of mining on it and things started syncing. – Alex K Jun 30 '16 at 18:33