pub trait Observer {
// Provided methods
fn on_block_received(&self, body: Vec<u8>) -> Result<(), Box<dyn Error>> { ... }
fn on_block_range_requested(
&self,
range: &(Point, Point),
) -> Result<(), Box<dyn Error>> { ... }
}