diff --git a/rust-libs/duniter-dbs/src/errors.rs b/rust-libs/duniter-dbs/src/errors.rs
deleted file mode 100644
index d945b9235813f2beb06708ae9b103e7f0bdda637..0000000000000000000000000000000000000000
--- a/rust-libs/duniter-dbs/src/errors.rs
+++ /dev/null
@@ -1,49 +0,0 @@
-//  Copyright (C) 2020 Éloïs SANCHEZ.
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU Affero General Public License as
-// published by the Free Software Foundation, either version 3 of the
-// License, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU Affero General Public License for more details.
-//
-// You should have received a copy of the GNU Affero General Public License
-// along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-use crate::*;
-
-pub type Result<T> = std::result::Result<T, ErrorDb>;
-
-#[derive(Debug, Error)]
-pub enum ErrorDb {
-    #[error("batch already consumed")]
-    BatchConsumed,
-    #[error("Collection '{collection_typename}' not exist on db '{db_version}'")]
-    NonexistentCollection {
-        collection_typename: &'static str,
-        db_version: &'static str,
-    },
-    #[cfg(feature = "explorer")]
-    #[error("Collection '{collection_name}' not exist on db '{db_version}'")]
-    NonexistentCollectionName {
-        collection_name: String,
-        db_version: &'static str,
-    },
-    #[error("DbError: {0}")]
-    DbError(String),
-    #[error("DeserError: {0}")]
-    DeserError(String),
-    #[error("SerError: {0}")]
-    Ser(String),
-    #[error("Fail to create DB folder: {0}")]
-    FailToCreateDbFolder(std::io::Error),
-}
-
-impl From<KvError> for ErrorDb {
-    fn from(e: KvError) -> Self {
-        ErrorDb::DbError(format!("{}", e))
-    }
-}
diff --git a/rust-libs/duniter-dbs/src/lib.rs b/rust-libs/duniter-dbs/src/lib.rs
index 3b7251837aab1fd95128aea50eeb167d0a994cbb..e6a5325e4300de5fbf8709ba439d53a6921bd679 100644
--- a/rust-libs/duniter-dbs/src/lib.rs
+++ b/rust-libs/duniter-dbs/src/lib.rs
@@ -25,7 +25,6 @@
 mod bc_v1;
 pub mod bc_v2;
 pub mod cm_v1;
-mod errors;
 pub mod gva_v1;
 mod keys;
 mod open_dbs;
@@ -45,7 +44,6 @@ pub use kv_typed;
 
 // Prelude
 pub mod prelude {
-    pub use crate::errors::ErrorDb;
     pub use crate::{DbsBackend, DuniterDbs};
     #[cfg(feature = "explorer")]
     pub use kv_typed::explorer::{
@@ -54,7 +52,6 @@ pub mod prelude {
 }
 
 // Export technical types and functions
-pub use crate::errors::Result;
 pub use crate::open_dbs::open_dbs;
 
 // Export profession types
diff --git a/rust-libs/duniter-dbs/tests/test_explorer.rs b/rust-libs/duniter-dbs/tests/test_explorer.rs
index 629a5f6dcd2c2eec00fb45a7ecb7bd5f2fdb0952..cbfdb4c5cb267b45dc06511d3dbf758f12fa66c8 100644
--- a/rust-libs/duniter-dbs/tests/test_explorer.rs
+++ b/rust-libs/duniter-dbs/tests/test_explorer.rs
@@ -22,7 +22,7 @@ mod explorer {
     use duniter_dbs::kv_typed::regex;
     use duniter_dbs::prelude::*;
     use duniter_dbs::smallvec::smallvec;
-    use duniter_dbs::{BcV1Db, BcV1DbWritable, PublicKeySingletonDbV1, Result, UidKeyV1};
+    use duniter_dbs::{BcV1Db, BcV1DbWritable, PublicKeySingletonDbV1, UidKeyV1};
     use std::{num::NonZeroUsize, str::FromStr};
     use tempdir::TempDir;
     use unwrap::unwrap;
@@ -34,7 +34,7 @@ mod explorer {
     }
 
     #[test]
-    fn explorer_test_leveldb() -> Result<()> {
+    fn explorer_test_leveldb() -> KvResult<()> {
         let tmp_dir = unwrap!(TempDir::new("explorer_test_leveldb"));
 
         let db = BcV1Db::<LevelDb>::open(LevelDbConf::path(tmp_dir.path().to_owned()))?;
@@ -43,13 +43,13 @@ mod explorer {
     }
 
     #[test]
-    fn explorer_test_sled() -> Result<()> {
+    fn explorer_test_sled() -> KvResult<()> {
         let db = BcV1Db::<Sled>::open(SledConf::new().temporary(true))?;
 
         explorer_test(&db)
     }
 
-    fn explorer_test<B: Backend>(db: &BcV1Db<B>) -> Result<()> {
+    fn explorer_test<B: Backend>(db: &BcV1Db<B>) -> KvResult<()> {
         // Defines test data
         let k1 = unwrap!(UidKeyV1::from_str("toto"));
         let k2 = unwrap!(UidKeyV1::from_str("titi"));
diff --git a/rust-libs/duniter-dbs/tests/test_read_write.rs b/rust-libs/duniter-dbs/tests/test_read_write.rs
index 60db378d896b4b67b811124e67dadd49d6585cfd..a878ab2c17f79f794d11d1f7a84065145b9e3e18 100644
--- a/rust-libs/duniter-dbs/tests/test_read_write.rs
+++ b/rust-libs/duniter-dbs/tests/test_read_write.rs
@@ -19,7 +19,7 @@ use dubp::common::prelude::*;
 use duniter_dbs::kv_typed::prelude::*;
 use duniter_dbs::{
     BcV1Db, BcV1DbReadable, BcV1DbWritable, BlockDbV1, BlockNumberKeyV1, MainBlocksEvent,
-    PublicKeySingletonDbV1, Result, UidKeyV1,
+    PublicKeySingletonDbV1, UidKeyV1,
 };
 use kv_typed::channel::TryRecvError;
 use std::str::FromStr;
@@ -27,7 +27,7 @@ use tempdir::TempDir;
 use unwrap::unwrap;
 
 #[test]
-fn write_read_delete_b0_leveldb() -> Result<()> {
+fn write_read_delete_b0_leveldb() -> KvResult<()> {
     let tmp_dir = unwrap!(TempDir::new("write_read_delete_b0_leveldb"));
 
     let db = BcV1Db::<LevelDb>::open(LevelDbConf::path(tmp_dir.path().to_owned()))?;
@@ -36,14 +36,14 @@ fn write_read_delete_b0_leveldb() -> Result<()> {
 }
 
 #[test]
-fn write_read_delete_b0_sled() -> Result<()> {
+fn write_read_delete_b0_sled() -> KvResult<()> {
     let db = BcV1Db::<Sled>::open(SledConf::new().temporary(true))?;
 
     write_read_delete_b0_test(&db)
 }
 
 #[test]
-fn iter_test_leveldb() -> Result<()> {
+fn iter_test_leveldb() -> KvResult<()> {
     let tmp_dir = unwrap!(TempDir::new("batch_test_leveldb"));
 
     let db = BcV1Db::<LevelDb>::open(LevelDbConf::path(tmp_dir.path().to_owned()))?;
@@ -52,21 +52,21 @@ fn iter_test_leveldb() -> Result<()> {
 }
 
 #[test]
-fn iter_test_mem() -> Result<()> {
+fn iter_test_mem() -> KvResult<()> {
     let db = BcV1Db::<Mem>::open(MemConf::default())?;
 
     write_some_entries_and_iter(&db)
 }
 
 #[test]
-fn iter_test_sled() -> Result<()> {
+fn iter_test_sled() -> KvResult<()> {
     let db = BcV1Db::<Sled>::open(SledConf::new().temporary(true))?;
 
     write_some_entries_and_iter(&db)
 }
 
 #[test]
-fn batch_test_leveldb() -> Result<()> {
+fn batch_test_leveldb() -> KvResult<()> {
     let tmp_dir = unwrap!(TempDir::new("batch_test_leveldb"));
 
     let db = BcV1Db::<LevelDb>::open(LevelDbConf::path(tmp_dir.path().to_owned()))?;
@@ -75,20 +75,20 @@ fn batch_test_leveldb() -> Result<()> {
 }
 
 #[test]
-fn batch_test_mem() -> Result<()> {
+fn batch_test_mem() -> KvResult<()> {
     let db = BcV1Db::<Mem>::open(MemConf::default())?;
 
     batch_test(&db)
 }
 
 #[test]
-fn batch_test_sled() -> Result<()> {
+fn batch_test_sled() -> KvResult<()> {
     let db = BcV1Db::<Sled>::open(SledConf::new().temporary(true))?;
 
     batch_test(&db)
 }
 
-fn write_read_delete_b0_test<B: Backend>(db: &BcV1Db<B>) -> Result<()> {
+fn write_read_delete_b0_test<B: Backend>(db: &BcV1Db<B>) -> KvResult<()> {
     let main_blocks_reader = db.main_blocks();
 
     let (subscriber, events_recv) = kv_typed::channel::unbounded();
@@ -195,7 +195,7 @@ fn write_read_delete_b0_test<B: Backend>(db: &BcV1Db<B>) -> Result<()> {
     Ok(())
 }
 
-fn write_some_entries_and_iter<B: Backend>(db: &BcV1Db<B>) -> Result<()> {
+fn write_some_entries_and_iter<B: Backend>(db: &BcV1Db<B>) -> KvResult<()> {
     let k1 = unwrap!(UidKeyV1::from_str("titi"));
     let p1 = PublicKeySingletonDbV1(unwrap!(PublicKey::from_base58(
         "42jMJtb8chXrpHMAMcreVdyPJK7LtWjEeRqkPw4eSEVp"
@@ -288,7 +288,7 @@ fn write_some_entries_and_iter<B: Backend>(db: &BcV1Db<B>) -> Result<()> {
     Ok(())
 }
 
-fn batch_test<B: Backend>(db: &BcV1Db<B>) -> Result<()> {
+fn batch_test<B: Backend>(db: &BcV1Db<B>) -> KvResult<()> {
     let main_blocks_reader = db.main_blocks();
 
     let mut batch = db.new_batch();