I am trying to use an ethereum blockchain in a multiagent network. I would like to control when information is exchanged between nodes to keep the network synchronous, so I am trying to figure out how to do this with ethereum. I figure the ganache client might be the best way to do this since you can control when blocks are mined, but I'm not sure if this is the only time the nodes communicated and compare chain versions. Thank you for the help.
This might not be the answer you are looking for but here it comes.
Ethereum network is by definition asynchronous as are (as far as I know) all blockchain networks. If you want something synchronous you probably have to use some other type of network.
In theory the network could be synchronous but this would not scale at all. Also, in theory, you can fork the network and modify the code in some fashion to make things synchronous but this would probably be a lot of work.
In general nodes send information to the network at least when (this list is most likely missing some stuff):
1) They see a new transaction: they rebroadcast it
2) They finish mining a block: they broadcast the new block