- [x] traverse the chain to get a block by hash - [x] provide a endpoint to get blocks from other clients - [x] receive the block from other clients and verify it