# Blockchain Reactor The Blockchain Reactor's high level responsibility is to maintain connection to a reasonable number of peers in the network, request blocks from them or provide them with blocks, validate and persist the blocks to disk and play blocks to the ABCI app. ## Block Reactor * coordinates the pool for synching * coordinates the store for persistence * coordinates the playing of blocks towards the app using a sm.BlockExecutor * handles switching between fastsync and consensus * it is a p2p.BaseReactor * starts the pool.Start() and its poolRoutine() * registers all the concrete types and interfaces for serialisation ### poolRoutine * requests blocks from a specific peer based on the pool * periodically asks for status updates * tries to switch to consensus * tries to sync the app by taking downloaded blocks from the pool, gives them to the app and stores them on disk ## Block Pool * maintain connections to other peers ## Block Store * persists blocks to disk