From afcd23feb2f3f4458f79d97c9f8925e38e3c32dc Mon Sep 17 00:00:00 2001
From: librelois <c@elo.tf>
Date: Thu, 20 May 2021 14:56:43 +0200
Subject: [PATCH] chore: use dubp via core

---
 Cargo.lock                                    | 112 ++++++++++--------
 neon/native/Cargo.toml                        |   3 +-
 neon/native/src/crypto.rs                     |   8 +-
 neon/native/src/server.rs                     |  22 ++--
 neon/native/src/transaction.rs                |  14 +--
 neon/native/src/wot.rs                        |   2 +-
 neon/native/src/wot/read_from_file.rs         |   2 +-
 neon/native/src/wot/write_in_file.rs          |   2 +-
 rust-bins/duniter-dbex/Cargo.toml             |   1 -
 rust-bins/duniter-dbex/src/migrate.rs         |   4 +-
 .../duniter-dbex/src/stringify_json_value.rs  |  10 +-
 rust-libs/duniter-server/Cargo.toml           |   1 -
 rust-libs/duniter-server/src/fill_cm.rs       |   2 +-
 rust-libs/duniter-server/src/legacy/dunp.rs   |  36 +++---
 rust-libs/duniter-server/src/lib.rs           |  12 +-
 .../duniter-integration-tests/Cargo.toml      |   1 -
 .../duniter-integration-tests/src/lib.rs      |   4 +-
 17 files changed, 124 insertions(+), 112 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index b0a340637..bbdc07ad8 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -786,23 +786,25 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
 
 [[package]]
 name = "dubp"
-version = "0.54.1"
+version = "0.56.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c5dca084e135ee5ea38d64e5e665cac6fc23570a66ed22ce5021b5d14c4f9443"
+checksum = "48e10197305b72fa3003d205e688e51dc938b101eaad9853fff6608aa0613cec"
 dependencies = [
  "dubp-block",
  "dubp-common",
  "dubp-documents",
  "dubp-documents-parser",
  "dubp-wallet",
+ "duniter-bda-types",
+ "duniter-peer",
  "dup-crypto",
 ]
 
 [[package]]
 name = "dubp-block"
-version = "0.54.1"
+version = "0.56.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5fa8e2b1d9728832dd4696f9eff1348085d162d5f98fe025e9c9a2caeffd9c89"
+checksum = "951eb8fda5e60a3236b275c234d07d1c8064057bdae517d361410f7f6bade48a"
 dependencies = [
  "dubp-documents",
  "dubp-documents-parser",
@@ -815,9 +817,9 @@ dependencies = [
 
 [[package]]
 name = "dubp-common"
-version = "0.54.1"
+version = "0.56.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "49a12c0842c7c4e61e75755476b782d09e282275cab187376b3cc0da405b6afb"
+checksum = "726e7dd86b2ff1f2a1787e21b98ed1c878560b01c7b0882dba2a3948f1696f63"
 dependencies = [
  "dup-crypto",
  "serde",
@@ -828,9 +830,9 @@ dependencies = [
 
 [[package]]
 name = "dubp-documents"
-version = "0.54.1"
+version = "0.56.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "450f2b268c979264ef098f00532faf0015d281d9c8ebabf227f57ecc35d0076c"
+checksum = "f2b3a8755bc9a25a39bdef6f80b122f8f80d5dddfb14ca9c6c309c96bc4f52d0"
 dependencies = [
  "beef",
  "dubp-wallet",
@@ -842,9 +844,9 @@ dependencies = [
 
 [[package]]
 name = "dubp-documents-parser"
-version = "0.54.1"
+version = "0.56.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "067bba5a1e34566871128b7157642a643264e4aeaba1db5034634ef6461f797b"
+checksum = "1b5279d4da9ff41970fd61be3c218aa43b6dd31d91786aba4bd6cba20fc68168"
 dependencies = [
  "dubp-documents",
  "json-pest-parser",
@@ -856,9 +858,9 @@ dependencies = [
 
 [[package]]
 name = "dubp-wallet"
-version = "0.54.1"
+version = "0.56.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7552a1c1cca8498dc9266fdb6b10ee98ef841e363a1e3c0cd319ead3fa2aeef4"
+checksum = "066d260d177b642d6732daa47fe904a089e61dfde4f7eadb381f2e035ad39c4a"
 dependencies = [
  "byteorder",
  "dubp-common",
@@ -871,7 +873,7 @@ dependencies = [
 [[package]]
 name = "dubp-wot"
 version = "0.11.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#9b60f33a9ae963b275afdc427af3031f2fb4e4b7"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#457bfe83040ba8f282f69b741f80ff628cded3fa"
 dependencies = [
  "log",
  "once_cell",
@@ -883,7 +885,7 @@ dependencies = [
 [[package]]
 name = "duniter-bc-reader"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#9b60f33a9ae963b275afdc427af3031f2fb4e4b7"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#457bfe83040ba8f282f69b741f80ff628cded3fa"
 dependencies = [
  "anyhow",
  "dubp",
@@ -892,17 +894,15 @@ dependencies = [
 ]
 
 [[package]]
-name = "duniter-bca"
+name = "duniter-bda"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#b062ee89f36614dc2b55844b8ba46fa59d82d697"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fdc18236b0a1f88c51e5a357abcc737814fbb12"
 dependencies = [
  "anyhow",
  "arrayvec 0.7.0",
  "async-bincode",
  "async_io_stream",
  "bincode",
- "dubp",
- "duniter-bca-types",
  "duniter-core",
  "duniter-gva-db",
  "duniter-gva-dbs-reader",
@@ -915,13 +915,15 @@ dependencies = [
 ]
 
 [[package]]
-name = "duniter-bca-types"
-version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#b062ee89f36614dc2b55844b8ba46fa59d82d697"
+name = "duniter-bda-types"
+version = "0.56.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "bc313d65eb9c6ae4a47a9f31453a6f6f56f5ae66a667d4a1fae805becef59e48"
 dependencies = [
  "arrayvec 0.7.0",
  "bincode",
- "dubp",
+ "dubp-documents",
+ "duniter-peer",
  "serde",
  "smallvec",
  "thiserror",
@@ -949,7 +951,7 @@ dependencies = [
 [[package]]
 name = "duniter-conf"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#9b60f33a9ae963b275afdc427af3031f2fb4e4b7"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#457bfe83040ba8f282f69b741f80ff628cded3fa"
 dependencies = [
  "anyhow",
  "dubp",
@@ -963,8 +965,9 @@ dependencies = [
 [[package]]
 name = "duniter-core"
 version = "1.8.1"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#9b60f33a9ae963b275afdc427af3031f2fb4e4b7"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#457bfe83040ba8f282f69b741f80ff628cded3fa"
 dependencies = [
+ "dubp",
  "dubp-wot",
  "duniter-bc-reader",
  "duniter-conf",
@@ -983,7 +986,6 @@ dependencies = [
  "arrayvec 0.5.2",
  "comfy-table",
  "dirs",
- "dubp",
  "duniter-core",
  "duniter-gva-db",
  "duniter-gva-indexer",
@@ -1001,7 +1003,7 @@ dependencies = [
 [[package]]
 name = "duniter-dbs"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#9b60f33a9ae963b275afdc427af3031f2fb4e4b7"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#457bfe83040ba8f282f69b741f80ff628cded3fa"
 dependencies = [
  "arrayvec 0.7.0",
  "bincode",
@@ -1024,7 +1026,7 @@ dependencies = [
 [[package]]
 name = "duniter-dbs-write-ops"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#9b60f33a9ae963b275afdc427af3031f2fb4e4b7"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#457bfe83040ba8f282f69b741f80ff628cded3fa"
 dependencies = [
  "chrono",
  "dubp",
@@ -1039,7 +1041,7 @@ dependencies = [
 [[package]]
 name = "duniter-global"
 version = "1.8.1"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#9b60f33a9ae963b275afdc427af3031f2fb4e4b7"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#457bfe83040ba8f282f69b741f80ff628cded3fa"
 dependencies = [
  "async-rwlock",
  "dubp",
@@ -1052,7 +1054,7 @@ dependencies = [
 [[package]]
 name = "duniter-gva"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#b062ee89f36614dc2b55844b8ba46fa59d82d697"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fdc18236b0a1f88c51e5a357abcc737814fbb12"
 dependencies = [
  "anyhow",
  "arrayvec 0.7.0",
@@ -1060,8 +1062,7 @@ dependencies = [
  "async-mutex",
  "async-trait",
  "bytes 1.0.1",
- "dubp",
- "duniter-bca",
+ "duniter-bda",
  "duniter-core",
  "duniter-gva-conf",
  "duniter-gva-db",
@@ -1083,7 +1084,7 @@ dependencies = [
 [[package]]
 name = "duniter-gva-conf"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#b062ee89f36614dc2b55844b8ba46fa59d82d697"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fdc18236b0a1f88c51e5a357abcc737814fbb12"
 dependencies = [
  "anyhow",
  "duniter-core",
@@ -1095,11 +1096,10 @@ dependencies = [
 [[package]]
 name = "duniter-gva-db"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#b062ee89f36614dc2b55844b8ba46fa59d82d697"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fdc18236b0a1f88c51e5a357abcc737814fbb12"
 dependencies = [
  "bincode",
  "chrono",
- "dubp",
  "duniter-core",
  "parking_lot",
  "paste",
@@ -1112,28 +1112,26 @@ dependencies = [
 [[package]]
 name = "duniter-gva-dbs-reader"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#b062ee89f36614dc2b55844b8ba46fa59d82d697"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fdc18236b0a1f88c51e5a357abcc737814fbb12"
 dependencies = [
  "anyhow",
  "arrayvec 0.7.0",
- "dubp",
- "duniter-bca-types",
  "duniter-core",
  "duniter-gva-db",
+ "flate2",
+ "rand 0.8.3",
  "resiter",
 ]
 
 [[package]]
 name = "duniter-gva-gql"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#b062ee89f36614dc2b55844b8ba46fa59d82d697"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fdc18236b0a1f88c51e5a357abcc737814fbb12"
 dependencies = [
  "anyhow",
  "arrayvec 0.7.0",
  "async-graphql",
  "async-trait",
- "dubp",
- "duniter-bca-types",
  "duniter-core",
  "duniter-gva-db",
  "duniter-gva-dbs-reader",
@@ -1148,13 +1146,13 @@ dependencies = [
 [[package]]
 name = "duniter-gva-indexer"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#b062ee89f36614dc2b55844b8ba46fa59d82d697"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fdc18236b0a1f88c51e5a357abcc737814fbb12"
 dependencies = [
  "anyhow",
  "bincode",
- "dubp",
  "duniter-core",
  "duniter-gva-db",
+ "duniter-gva-dbs-reader",
  "flate2",
  "log",
  "once_cell",
@@ -1167,7 +1165,6 @@ version = "0.1.0"
 dependencies = [
  "anyhow",
  "chrono",
- "dubp",
  "duniter-core",
  "duniter-server",
  "fast-threadpool",
@@ -1181,7 +1178,7 @@ dependencies = [
 [[package]]
 name = "duniter-mempools"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#9b60f33a9ae963b275afdc427af3031f2fb4e4b7"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#457bfe83040ba8f282f69b741f80ff628cded3fa"
 dependencies = [
  "dubp",
  "duniter-bc-reader",
@@ -1194,7 +1191,7 @@ dependencies = [
 [[package]]
 name = "duniter-module"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#9b60f33a9ae963b275afdc427af3031f2fb4e4b7"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#457bfe83040ba8f282f69b741f80ff628cded3fa"
 dependencies = [
  "anyhow",
  "async-mutex",
@@ -1211,13 +1208,27 @@ dependencies = [
  "serde",
 ]
 
+[[package]]
+name = "duniter-peer"
+version = "0.56.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b47259afd4fc42716ba24763b5f3f21f75c99b272406031c6b3999fced8e79b5"
+dependencies = [
+ "beef",
+ "dubp-common",
+ "log",
+ "serde",
+ "serde_json",
+ "smallvec",
+ "thiserror",
+]
+
 [[package]]
 name = "duniter-server"
 version = "1.8.1"
 dependencies = [
  "anyhow",
  "cfg-if 1.0.0",
- "dubp",
  "duniter-core",
  "duniter-gva",
  "fast-threadpool",
@@ -1233,8 +1244,7 @@ version = "1.8.1"
 dependencies = [
  "bincode",
  "bs58 0.3.1",
- "dubp",
- "dubp-wot",
+ "duniter-core",
  "duniter-server",
  "flate2",
  "flexi_logger",
@@ -1250,9 +1260,9 @@ dependencies = [
 
 [[package]]
 name = "dup-crypto"
-version = "0.54.1"
+version = "0.56.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "be4b9746489f2564086fffce1cc67de3b867a098eaf4dbcce15dc85f85542c9c"
+checksum = "8b7ea069bea03f256a05034e720ba8497512413ca29ceb65b43e1196f6b39248"
 dependencies = [
  "base64",
  "blake3",
@@ -1827,7 +1837,7 @@ dependencies = [
 [[package]]
 name = "kv_typed"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#9b60f33a9ae963b275afdc427af3031f2fb4e4b7"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#457bfe83040ba8f282f69b741f80ff628cded3fa"
 dependencies = [
  "byteorder",
  "cfg-if 0.1.10",
diff --git a/neon/native/Cargo.toml b/neon/native/Cargo.toml
index 9fdcb99bd..01c0e1bb5 100644
--- a/neon/native/Cargo.toml
+++ b/neon/native/Cargo.toml
@@ -17,8 +17,7 @@ neon-build = "0.4.0"
 [dependencies]
 bincode = "1.2.1"
 bs58 = "0.3.0"
-dubp = { version = "0.54.1", features = ["duniter"] }
-dubp-wot = { git = "https://git.duniter.org/nodes/rust/duniter-core" }
+duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core", features = ["bc-writer"] }
 duniter-server = { path = "../../rust-libs/duniter-server" }
 flate2 = { version = "1.0", features = ["zlib-ng-compat"], default-features = false }
 flexi_logger = { version = "=0.16.0", default-features = false, features = ["compress"] }
diff --git a/neon/native/src/crypto.rs b/neon/native/src/crypto.rs
index 110349eed..c28652049 100644
--- a/neon/native/src/crypto.rs
+++ b/neon/native/src/crypto.rs
@@ -14,16 +14,16 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use crate::into_neon_res;
-use dubp::common::crypto::bases::b58::ToBase58;
-use dubp::common::crypto::hashs::Hash;
-use dubp::common::crypto::keys::{
+use duniter_core::common::crypto::bases::b58::ToBase58;
+use duniter_core::common::crypto::hashs::Hash;
+use duniter_core::common::crypto::keys::{
     ed25519::{
         Ed25519KeyPair, KeyPairFromSeed32Generator, PublicKey as Ed25519PublicKey,
         Signator as Ed25519Signator, Signature as Ed25519Signature,
     },
     KeyPair, PublicKey, Signator, Signature,
 };
-use dubp::common::crypto::seeds::Seed32;
+use duniter_core::common::crypto::seeds::Seed32;
 use neon::declare_types;
 use neon::prelude::*;
 use std::ops::Deref;
diff --git a/neon/native/src/server.rs b/neon/native/src/server.rs
index ffabe4e94..db30bc09d 100644
--- a/neon/native/src/server.rs
+++ b/neon/native/src/server.rs
@@ -14,7 +14,7 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use crate::into_neon_res;
-use dubp::{
+use duniter_core::{
     common::{
         crypto::{
             hashs::Hash,
@@ -30,6 +30,7 @@ use dubp::{
         transaction::{TransactionDocumentV10, TransactionDocumentV10Stringified},
     },
     documents_parser::prelude::*,
+    peer::PeerV10,
 };
 use duniter_server::{DuniterCoreConf, DuniterMode, DuniterServer};
 use neon::declare_types;
@@ -104,7 +105,7 @@ declare_types! {
         method revertBlock(mut cx) {
             let block_js = cx.argument::<JsValue>(0)?;
 
-            let block_stringified: dubp::block::DubpBlockV10Stringified = neon_serde::from_value(&mut cx, block_js)?;
+            let block_stringified: duniter_core::block::DubpBlockV10Stringified = neon_serde::from_value(&mut cx, block_js)?;
 
             let mut this = cx.this();
             let res = {
@@ -117,7 +118,7 @@ declare_types! {
         method applyBlock(mut cx) {
             let block_js = cx.argument::<JsValue>(0)?;
 
-            let block_stringified: dubp::block::DubpBlockV10Stringified = neon_serde::from_value(&mut cx, block_js)?;
+            let block_stringified: duniter_core::block::DubpBlockV10Stringified = neon_serde::from_value(&mut cx, block_js)?;
 
             let mut this = cx.this();
             let res = {
@@ -130,7 +131,7 @@ declare_types! {
         method applyChunkOfBlocks(mut cx) {
             let blocks_js = cx.argument::<JsValue>(0)?;
 
-            let blocks_stringified: Vec<dubp::block::DubpBlockV10Stringified> = neon_serde::from_value(&mut cx, blocks_js)?;
+            let blocks_stringified: Vec<duniter_core::block::DubpBlockV10Stringified> = neon_serde::from_value(&mut cx, blocks_js)?;
 
             let mut this = cx.this();
             let res = {
@@ -518,13 +519,14 @@ impl PeerCardStringified {
         cx: &mut C,
     ) -> NeonResult<duniter_server::PeerCardDbV1> {
         Ok(duniter_server::PeerCardDbV1 {
-            version: self.version,
-            currency: self.currency,
-            pubkey: into_neon_res(cx, PublicKey::from_base58(&self.pubkey))?,
-            blockstamp: into_neon_res(cx, Blockstamp::from_str(&self.blockstamp))?,
-            endpoints: self.endpoints,
+            peer: PeerV10 {
+                currency: self.currency,
+                pubkey: into_neon_res(cx, PublicKey::from_base58(&self.pubkey))?,
+                blockstamp: into_neon_res(cx, Blockstamp::from_str(&self.blockstamp))?,
+                endpoints: self.endpoints.into_iter().collect(),
+                signature: into_neon_res(cx, Signature::from_base64(&self.signature))?,
+            },
             status: &self.status == "UP",
-            signature: into_neon_res(cx, Signature::from_base64(&self.signature))?,
             member: self.member,
         })
     }
diff --git a/neon/native/src/transaction.rs b/neon/native/src/transaction.rs
index 5206c3491..7ba393d68 100644
--- a/neon/native/src/transaction.rs
+++ b/neon/native/src/transaction.rs
@@ -14,14 +14,14 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use crate::into_neon_res;
-use dubp::common::crypto::{bases::BaseConversionError, keys::ed25519, keys::PublicKey};
-use dubp::documents::transaction::{
+use duniter_core::common::crypto::{bases::BaseConversionError, keys::ed25519, keys::PublicKey};
+use duniter_core::documents::transaction::{
     TransactionDocumentTrait, TransactionDocumentV10, TransactionDocumentV10Stringified,
     TransactionInputUnlocksV10,
 };
-use dubp::documents::{prelude::*, smallvec::SmallVec};
-use dubp::documents_parser::prelude::*;
-use dubp::wallet::prelude::*;
+use duniter_core::documents::{prelude::*, smallvec::SmallVec};
+use duniter_core::documents_parser::prelude::*;
+use duniter_core::wallet::prelude::*;
 use neon::prelude::*;
 
 pub fn raw_tx_parse_and_verify(mut cx: FunctionContext) -> JsResult<JsValue> {
@@ -118,7 +118,7 @@ pub fn source_is_unlockable(mut cx: FunctionContext) -> JsResult<JsBoolean> {
         .collect::<Result<SmallVec<[ed25519::PublicKey; 1]>, BaseConversionError>>();
     let tx_issuers = into_neon_res(&mut cx, tx_issuers_res.map_err(|e| format!("{}", e)))?;
 
-    if let Ok(proofs) = dubp::documents_parser::tx_unlock_v10_from_str(&proofs) {
+    if let Ok(proofs) = duniter_core::documents_parser::tx_unlock_v10_from_str(&proofs) {
         Ok(cx.boolean(source_is_unlockable_inner(
             current_bc_time,
             &proofs,
@@ -139,7 +139,7 @@ fn source_is_unlockable_inner(
     tx_issuers: &[ed25519::PublicKey],
     utxo_script: &str,
 ) -> bool {
-    if let Ok(utxo_script) = dubp::documents_parser::wallet_script_from_str(&utxo_script) {
+    if let Ok(utxo_script) = duniter_core::documents_parser::wallet_script_from_str(&utxo_script) {
         if let Ok(unlockable_on) = SourceV10::unlockable_on(
             &tx_issuers,
             &proofs.unlocks,
diff --git a/neon/native/src/wot.rs b/neon/native/src/wot.rs
index 5b8a0c9a7..5d5554a26 100644
--- a/neon/native/src/wot.rs
+++ b/neon/native/src/wot.rs
@@ -16,7 +16,7 @@
 mod read_from_file;
 mod write_in_file;
 
-use dubp_wot::{
+use duniter_core::wot::{
     data::{
         rusty::RustyWebOfTrust, HasLinkResult, NewLinkResult, RemLinkResult, WebOfTrust, WotId,
     },
diff --git a/neon/native/src/wot/read_from_file.rs b/neon/native/src/wot/read_from_file.rs
index ca082fdef..e54f2b7e8 100644
--- a/neon/native/src/wot/read_from_file.rs
+++ b/neon/native/src/wot/read_from_file.rs
@@ -13,7 +13,7 @@
 // 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 dubp_wot::data::rusty::RustyWebOfTrust;
+use duniter_core::wot::data::rusty::RustyWebOfTrust;
 use flate2::read::ZlibDecoder;
 use std::convert::TryFrom;
 use std::fs::File;
diff --git a/neon/native/src/wot/write_in_file.rs b/neon/native/src/wot/write_in_file.rs
index 7f6044403..080c0027d 100644
--- a/neon/native/src/wot/write_in_file.rs
+++ b/neon/native/src/wot/write_in_file.rs
@@ -13,7 +13,7 @@
 // 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 dubp_wot::data::rusty::RustyWebOfTrust;
+use duniter_core::wot::data::rusty::RustyWebOfTrust;
 use flate2::write::ZlibEncoder;
 use flate2::Compression;
 use std::convert::TryFrom;
diff --git a/rust-bins/duniter-dbex/Cargo.toml b/rust-bins/duniter-dbex/Cargo.toml
index 30980763c..bd0060974 100644
--- a/rust-bins/duniter-dbex/Cargo.toml
+++ b/rust-bins/duniter-dbex/Cargo.toml
@@ -22,7 +22,6 @@ anyhow = "1.0.33"
 arrayvec = "0.5.1"
 comfy-table = "2.1.0"
 dirs = "3.0.1"
-dubp = { version = "0.54.1", features = ["duniter"] }
 duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core", features = ["bc-writer", "explorer", "leveldb_backend"] }
 duniter-gva-db = { git = "https://git.duniter.org/nodes/rust/modules/duniter-gva", default-features = false, features = ["explorer", "leveldb_backend"] }
 duniter-gva-indexer = { git = "https://git.duniter.org/nodes/rust/modules/duniter-gva" }
diff --git a/rust-bins/duniter-dbex/src/migrate.rs b/rust-bins/duniter-dbex/src/migrate.rs
index a448ffbd2..9ec05fd3f 100644
--- a/rust-bins/duniter-dbex/src/migrate.rs
+++ b/rust-bins/duniter-dbex/src/migrate.rs
@@ -14,11 +14,11 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use crate::*;
-use dubp::{
+use duniter_core::dbs::{databases::bc_v1::BcV1DbReadable, FileBackend};
+use duniter_core::{
     block::parser::parse_json_block_from_serde_value, block::parser::ParseJsonBlockError,
     block::prelude::DubpBlockTrait, block::DubpBlock, common::prelude::BlockNumber,
 };
-use duniter_core::dbs::{databases::bc_v1::BcV1DbReadable, FileBackend};
 use fast_threadpool::{ThreadPool, ThreadPoolConfig};
 use std::{ops::Deref, path::PathBuf};
 
diff --git a/rust-bins/duniter-dbex/src/stringify_json_value.rs b/rust-bins/duniter-dbex/src/stringify_json_value.rs
index 2289c6982..b6169a813 100644
--- a/rust-bins/duniter-dbex/src/stringify_json_value.rs
+++ b/rust-bins/duniter-dbex/src/stringify_json_value.rs
@@ -1,8 +1,8 @@
 use arrayvec::ArrayVec;
-use dubp::common::crypto::bases::b58::ToBase58 as _;
-use dubp::common::crypto::hashs::Hash;
-use dubp::common::crypto::keys::ed25519::{PublicKey, Signature};
-use dubp::common::crypto::keys::Signature as _;
+use duniter_core::common::crypto::bases::b58::ToBase58 as _;
+use duniter_core::common::crypto::hashs::Hash;
+use duniter_core::common::crypto::keys::ed25519::{PublicKey, Signature};
+use duniter_core::common::crypto::keys::Signature as _;
 use std::convert::TryFrom;
 
 pub fn stringify_json_value(mut json_value: serde_json::Value) -> serde_json::Value {
@@ -97,7 +97,7 @@ fn json_array_to_64_bytes(json_array: &[serde_json::Value]) -> [u8; 64] {
 #[cfg(test)]
 mod tests {
     use super::*;
-    use dubp::common::crypto::keys::PublicKey as _;
+    use duniter_core::common::crypto::keys::PublicKey as _;
     use serde_json::Number;
     use serde_json::Value;
     use unwrap::unwrap;
diff --git a/rust-libs/duniter-server/Cargo.toml b/rust-libs/duniter-server/Cargo.toml
index d91875c30..6f59c577a 100644
--- a/rust-libs/duniter-server/Cargo.toml
+++ b/rust-libs/duniter-server/Cargo.toml
@@ -8,7 +8,6 @@ edition = "2018"
 [dependencies]
 anyhow = "1.0.34"
 cfg-if = "1.0.0"
-dubp = { version = "0.54.1", features = ["duniter"] }
 duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core", features = ["bc-writer"] }
 duniter-gva = { git = "https://git.duniter.org/nodes/rust/modules/duniter-gva", optional = true } 
 fast-threadpool = "0.2.3"
diff --git a/rust-libs/duniter-server/src/fill_cm.rs b/rust-libs/duniter-server/src/fill_cm.rs
index 5251eafeb..da2bce7be 100644
--- a/rust-libs/duniter-server/src/fill_cm.rs
+++ b/rust-libs/duniter-server/src/fill_cm.rs
@@ -14,9 +14,9 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use crate::*;
-use dubp::wallet::prelude::SourceAmount;
 use duniter_core::dbs::databases::bc_v2::BcV2DbReadable;
 use duniter_core::global::{CurrentMeta, GlobalBackGroundTaskMsg};
+use duniter_core::wallet::prelude::SourceAmount;
 
 pub(super) fn fill_and_get_current_meta<BcDb: BcV2DbReadable>(
     bc_db_ro: &BcDb,
diff --git a/rust-libs/duniter-server/src/legacy/dunp.rs b/rust-libs/duniter-server/src/legacy/dunp.rs
index 637474d32..357007371 100644
--- a/rust-libs/duniter-server/src/legacy/dunp.rs
+++ b/rust-libs/duniter-server/src/legacy/dunp.rs
@@ -64,7 +64,7 @@ impl DuniterServer {
             .expect("dbs pool disconnected")
     }
     pub fn save_peer(&self, new_peer_card: PeerCardDbV1) -> anyhow::Result<()> {
-        let pubkey = new_peer_card.pubkey;
+        let pubkey = new_peer_card.peer.pubkey;
         use duniter_core::dbs::databases::network_v1::NetworkV1DbWritable as _;
         self.dbs_pool
             .execute(move |dbs| {
@@ -85,12 +85,15 @@ impl DuniterServer {
 #[cfg(test)]
 mod tests {
     use super::*;
-    use dubp::crypto::keys::{
-        ed25519::{PublicKey, Signature},
-        PublicKey as _, Signature as _,
-    };
     use duniter_core::dbs::databases::network_v1::NetworkV1DbReadable;
     use duniter_core::dbs::PeerCardDbV1;
+    use duniter_core::{
+        crypto::keys::{
+            ed25519::{PublicKey, Signature},
+            PublicKey as _, Signature as _,
+        },
+        peer::PeerV10,
+    };
     use std::str::FromStr;
 
     #[test]
@@ -127,25 +130,26 @@ mod tests {
         let server = DuniterServer::test(DuniterCoreConf::default(), DuniterMode::Start)?;
         let dbs = server.get_shared_dbs();
 
-        let peer = PeerCardDbV1 {
-            version: 0,
-            currency: "test".to_owned(),
-            pubkey: PublicKey::from_base58("82NdD9eEbXSjRJXeJdqf56xkpu6taTfTeEqtAtmtbyXY")?,
-            blockstamp: Blockstamp::from_str("379922-0000001D97770A8203062F9E618F29FFAA2EF4218649FCE6DD13E01C3932E943")?,
-            endpoints: vec![],
+        let peer_db = PeerCardDbV1 {
+            peer: PeerV10 {
+                currency: "test".to_owned(),
+                pubkey: PublicKey::from_base58("82NdD9eEbXSjRJXeJdqf56xkpu6taTfTeEqtAtmtbyXY")?,
+                blockstamp: Blockstamp::from_str("379922-0000001D97770A8203062F9E618F29FFAA2EF4218649FCE6DD13E01C3932E943")?,
+                endpoints: duniter_core::dbs::smallvec::SmallVec::new(),
+                signature: Signature::from_base64("KBaoJuKIfkWJO015BTegUN8l81VYPfleVUfQUwPRPAAF1oB398hDb1bX/QUFe+3CKFz57aGT8bB745mz90x5Ag==")?,
+            },
             status: true,
-            signature: Signature::from_base64("KBaoJuKIfkWJO015BTegUN8l81VYPfleVUfQUwPRPAAF1oB398hDb1bX/QUFe+3CKFz57aGT8bB745mz90x5Ag==")?,
             member: false,
         };
-        let pubkey = peer.pubkey;
+        let pubkey = peer_db.peer.pubkey;
 
         assert_eq!(dbs.dunp_db.peers_old().count()?, 0);
-        server.save_peer(peer.clone())?;
+        server.save_peer(peer_db.clone())?;
 
         assert_eq!(dbs.dunp_db.peers_old().count()?, 1);
-        let peer_db = dbs.dunp_db.peers_old().get(&PubKeyKeyV2(pubkey))?;
+        let peer_db_opt = dbs.dunp_db.peers_old().get(&PubKeyKeyV2(pubkey))?;
 
-        assert_eq!(peer_db, Some(peer));
+        assert_eq!(peer_db_opt, Some(peer_db));
 
         Ok(())
     }
diff --git a/rust-libs/duniter-server/src/lib.rs b/rust-libs/duniter-server/src/lib.rs
index 7de95f5a5..2b8826ee5 100644
--- a/rust-libs/duniter-server/src/lib.rs
+++ b/rust-libs/duniter-server/src/lib.rs
@@ -34,21 +34,21 @@ pub use duniter_core::dbs::{
 pub use duniter_gva::GvaModule;
 
 use anyhow::Context;
-use dubp::common::prelude::*;
-use dubp::common::{crypto::keys::ed25519::PublicKey, currency_params::CurrencyParameters};
-use dubp::documents::{prelude::*, transaction::TransactionDocumentV10};
-use dubp::{
-    block::prelude::*, common::crypto::hashs::Hash, documents_parser::prelude::FromStringObject,
-};
+use duniter_core::common::prelude::*;
+use duniter_core::common::{crypto::keys::ed25519::PublicKey, currency_params::CurrencyParameters};
 use duniter_core::dbs::{
     databases::{bc_v2::BcV2Db, txs_mp_v2::TxsMpV2DbReadable},
     kv_typed::prelude::*,
     PendingTxDbV2, PubKeyKeyV2,
 };
 use duniter_core::dbs::{prelude::*, BlockMetaV2, FileBackend};
+use duniter_core::documents::{prelude::*, transaction::TransactionDocumentV10};
 use duniter_core::global::{tokio, GlobalBackGroundTaskMsg};
 use duniter_core::mempools::{Mempools, TxMpError, TxsMempool};
 use duniter_core::module::{plug_duniter_modules, Endpoint, TxsHistoryForBma};
+use duniter_core::{
+    block::prelude::*, common::crypto::hashs::Hash, documents_parser::prelude::FromStringObject,
+};
 use fast_threadpool::ThreadPoolConfig;
 use resiter::{filter::Filter, map::Map};
 use std::{
diff --git a/rust-libs/tests/duniter-integration-tests/Cargo.toml b/rust-libs/tests/duniter-integration-tests/Cargo.toml
index d2244d10b..876792c21 100644
--- a/rust-libs/tests/duniter-integration-tests/Cargo.toml
+++ b/rust-libs/tests/duniter-integration-tests/Cargo.toml
@@ -8,7 +8,6 @@ edition = "2018"
 [dependencies]
 anyhow = "1.0.34"
 chrono = "0.4"
-dubp = { version = "0.54.1", features = ["duniter"] }
 duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core", features = ["bc-writer"] }
 duniter-server = { path = "../../duniter-server", features = ["gva"] }
 fast-threadpool = "0.2.3"
diff --git a/rust-libs/tests/duniter-integration-tests/src/lib.rs b/rust-libs/tests/duniter-integration-tests/src/lib.rs
index 094e25eea..073d0fe6f 100644
--- a/rust-libs/tests/duniter-integration-tests/src/lib.rs
+++ b/rust-libs/tests/duniter-integration-tests/src/lib.rs
@@ -23,8 +23,8 @@
 
 #[cfg(test)]
 mod tests {
-    use dubp::documents::transaction::TransactionDocumentV10Builder;
-    use dubp::{
+    use duniter_core::documents::transaction::TransactionDocumentV10Builder;
+    use duniter_core::{
         common::prelude::*,
         crypto::keys::ed25519::{Ed25519KeyPair, PublicKey},
         documents::prelude::*,
-- 
GitLab