diff --git a/chain/src/store.rs b/chain/src/store.rs index c0765c440..f45736ca3 100644 --- a/chain/src/store.rs +++ b/chain/src/store.rs @@ -123,6 +123,12 @@ impl ChainStore for ChainKVStore { )?; batch.write() } + + /// Delete a full block. Does not delete any record associated with a block + /// header. + fn delete_block(&self, bh: &Hash) -> Result<(), Error> { + self.db.delete(&to_key(BLOCK_PREFIX, &mut bh.to_vec())[..]) + } fn is_on_current_chain(&self, header: &BlockHeader) -> Result<(), Error> { let header_at_height = self.get_header_by_height(header.height)?; diff --git a/chain/src/types.rs b/chain/src/types.rs index d3f67cf0e..43ab71fbd 100644 --- a/chain/src/types.rs +++ b/chain/src/types.rs @@ -228,6 +228,10 @@ pub trait ChainStore: Send + Sync { /// Save the provided block in store fn save_block(&self, b: &Block) -> Result<(), store::Error>; + /// Delete a full block. Does not delete any record associated with a block + /// header. + fn delete_block(&self, bh: &Hash) -> Result<(), store::Error>; + /// Save the provided block header in store fn save_block_header(&self, bh: &BlockHeader) -> Result<(), store::Error>;