From 4747eb66b5b424c8ca33f2c6bb55f21346031d8a Mon Sep 17 00:00:00 2001
From: librelois <c@elo.tf>
Date: Fri, 14 May 2021 17:04:31 +0200
Subject: [PATCH] =?UTF-8?q?deps:=C2=A0upgrade=20core=20&=20gva=20(peers=20?=
 =?UTF-8?q?db=20change)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Cargo.lock                                  | 44 ++++++++++++---------
 neon/native/src/server.rs                   | 40 ++++++++++++-------
 rust-libs/duniter-server/src/legacy/dunp.rs | 34 ++++++----------
 3 files changed, 63 insertions(+), 55 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index d78e7b918..aad889c51 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -864,7 +864,7 @@ dependencies = [
 [[package]]
 name = "dubp-wot"
 version = "0.11.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#193a64f042500c7a0b327fc216db1773a904270c"
 dependencies = [
  "log",
  "rayon",
@@ -874,7 +874,7 @@ dependencies = [
 [[package]]
 name = "duniter-bc-reader"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#193a64f042500c7a0b327fc216db1773a904270c"
 dependencies = [
  "anyhow",
  "dubp",
@@ -885,7 +885,7 @@ dependencies = [
 [[package]]
 name = "duniter-bca"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#26602884a286a202c729b1a89a4e00c89152106a"
 dependencies = [
  "anyhow",
  "arrayvec",
@@ -908,7 +908,7 @@ dependencies = [
 [[package]]
 name = "duniter-bca-types"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#26602884a286a202c729b1a89a4e00c89152106a"
 dependencies = [
  "arrayvec",
  "bincode",
@@ -940,7 +940,7 @@ dependencies = [
 [[package]]
 name = "duniter-conf"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#193a64f042500c7a0b327fc216db1773a904270c"
 dependencies = [
  "anyhow",
  "dubp",
@@ -954,7 +954,7 @@ dependencies = [
 [[package]]
 name = "duniter-core"
 version = "1.8.1"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#193a64f042500c7a0b327fc216db1773a904270c"
 dependencies = [
  "duniter-bc-reader",
  "duniter-conf",
@@ -991,7 +991,7 @@ dependencies = [
 [[package]]
 name = "duniter-dbs"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#193a64f042500c7a0b327fc216db1773a904270c"
 dependencies = [
  "arrayvec",
  "bincode",
@@ -1014,7 +1014,7 @@ dependencies = [
 [[package]]
 name = "duniter-dbs-write-ops"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#193a64f042500c7a0b327fc216db1773a904270c"
 dependencies = [
  "chrono",
  "dubp",
@@ -1029,7 +1029,7 @@ dependencies = [
 [[package]]
 name = "duniter-global"
 version = "1.8.1"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#193a64f042500c7a0b327fc216db1773a904270c"
 dependencies = [
  "async-rwlock",
  "dubp",
@@ -1042,7 +1042,7 @@ dependencies = [
 [[package]]
 name = "duniter-gva"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#26602884a286a202c729b1a89a4e00c89152106a"
 dependencies = [
  "anyhow",
  "arrayvec",
@@ -1073,7 +1073,7 @@ dependencies = [
 [[package]]
 name = "duniter-gva-conf"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#26602884a286a202c729b1a89a4e00c89152106a"
 dependencies = [
  "anyhow",
  "duniter-core",
@@ -1085,7 +1085,7 @@ dependencies = [
 [[package]]
 name = "duniter-gva-db"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#26602884a286a202c729b1a89a4e00c89152106a"
 dependencies = [
  "bincode",
  "chrono",
@@ -1102,7 +1102,7 @@ dependencies = [
 [[package]]
 name = "duniter-gva-dbs-reader"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#26602884a286a202c729b1a89a4e00c89152106a"
 dependencies = [
  "anyhow",
  "arrayvec",
@@ -1116,7 +1116,7 @@ dependencies = [
 [[package]]
 name = "duniter-gva-gql"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#26602884a286a202c729b1a89a4e00c89152106a"
 dependencies = [
  "anyhow",
  "arrayvec",
@@ -1137,12 +1137,14 @@ dependencies = [
 [[package]]
 name = "duniter-gva-indexer"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#26602884a286a202c729b1a89a4e00c89152106a"
 dependencies = [
  "anyhow",
+ "bincode",
  "dubp",
  "duniter-core",
  "duniter-gva-db",
+ "lz4_flex",
  "once_cell",
  "resiter",
 ]
@@ -1167,7 +1169,7 @@ dependencies = [
 [[package]]
 name = "duniter-mempools"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#193a64f042500c7a0b327fc216db1773a904270c"
 dependencies = [
  "dubp",
  "duniter-bc-reader",
@@ -1180,7 +1182,7 @@ dependencies = [
 [[package]]
 name = "duniter-module"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#193a64f042500c7a0b327fc216db1773a904270c"
 dependencies = [
  "anyhow",
  "async-mutex",
@@ -1811,7 +1813,7 @@ dependencies = [
 [[package]]
 name = "kv_typed"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#193a64f042500c7a0b327fc216db1773a904270c"
 dependencies = [
  "byteorder",
  "cfg-if 0.1.10",
@@ -1886,6 +1888,12 @@ version = "0.1.1"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "3d0925aed5b12ed59857f438d25a910cf051dbcd4107907be1e7abf6c44ec903"
 
+[[package]]
+name = "lz4_flex"
+version = "0.7.5"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05304f8e67dfc93d1b4b990137fd1a7a4c6ad44b60a9c486c8c4486f9d2027ae"
+
 [[package]]
 name = "maplit"
 version = "1.0.2"
diff --git a/neon/native/src/server.rs b/neon/native/src/server.rs
index 9662c2a90..3a603784d 100644
--- a/neon/native/src/server.rs
+++ b/neon/native/src/server.rs
@@ -14,18 +14,28 @@
 // along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 use crate::into_neon_res;
-use dubp::common::crypto::keys::{ed25519::PublicKey, PublicKey as _};
-use dubp::documents::{
-    prelude::*,
-    transaction::{TransactionDocumentV10, TransactionDocumentV10Stringified},
+use dubp::{
+    common::{
+        crypto::{
+            hashs::Hash,
+            keys::{
+                ed25519::{Ed25519KeyPair, PublicKey, Signature},
+                PublicKey as _, Signature as _,
+            },
+        },
+        prelude::*,
+    },
+    documents::{
+        prelude::*,
+        transaction::{TransactionDocumentV10, TransactionDocumentV10Stringified},
+    },
+    documents_parser::prelude::*,
 };
-use dubp::documents_parser::prelude::*;
-use dubp::{common::crypto::hashs::Hash, crypto::keys::ed25519::Ed25519KeyPair};
 use duniter_server::{DuniterCoreConf, DuniterMode, DuniterServer};
 use neon::declare_types;
 use neon::prelude::*;
 use serde::{Deserialize, Serialize};
-use std::path::PathBuf;
+use std::{path::PathBuf, str::FromStr};
 
 pub struct RustServer {
     server: DuniterServer,
@@ -373,11 +383,11 @@ declare_types! {
             let peer = duniter_server::PeerCardDbV1 {
                 version: peer_stringified.version,
                 currency: peer_stringified.currency,
-                pubkey: peer_stringified.pubkey,
-                blockstamp: peer_stringified.blockstamp,
+                pubkey: into_neon_res(&mut cx, PublicKey::from_base58(&peer_stringified.pubkey))?,
+                blockstamp: into_neon_res(&mut cx, Blockstamp::from_str(&peer_stringified.blockstamp))?,
                 endpoints: peer_stringified.endpoints,
-                status: peer_stringified.status,
-                signature: peer_stringified.signature,
+                status: &peer_stringified.status == "UP",
+                signature: into_neon_res(&mut cx, Signature::from_base64(&peer_stringified.signature))?,
             };
 
             let this = cx.this();
@@ -395,11 +405,11 @@ declare_types! {
             let peer = duniter_server::PeerCardDbV1 {
                 version: peer_stringified.version,
                 currency: peer_stringified.currency,
-                pubkey: peer_stringified.pubkey,
-                blockstamp: peer_stringified.blockstamp,
+                pubkey: into_neon_res(&mut cx, PublicKey::from_base58(&peer_stringified.pubkey))?,
+                blockstamp: into_neon_res(&mut cx, Blockstamp::from_str(&peer_stringified.blockstamp))?,
                 endpoints: peer_stringified.endpoints,
-                status: peer_stringified.status,
-                signature: peer_stringified.signature,
+                status: &peer_stringified.status == "UP",
+                signature: into_neon_res(&mut cx, Signature::from_base64(&peer_stringified.signature))?,
             };
 
             let this = cx.this();
diff --git a/rust-libs/duniter-server/src/legacy/dunp.rs b/rust-libs/duniter-server/src/legacy/dunp.rs
index ef720fd4e..59e9e54d6 100644
--- a/rust-libs/duniter-server/src/legacy/dunp.rs
+++ b/rust-libs/duniter-server/src/legacy/dunp.rs
@@ -64,23 +64,13 @@ impl DuniterServer {
             .expect("dbs pool disconnected")
     }
     pub fn save_peer(&self, new_peer_card: PeerCardDbV1) -> anyhow::Result<()> {
-        use dubp::crypto::keys::PublicKey as _;
-        let pubkey = PublicKey::from_base58(&new_peer_card.pubkey)?;
+        let pubkey = new_peer_card.pubkey;
         use duniter_core::dbs::databases::network_v1::NetworkV1DbWritable as _;
         self.dbs_pool
             .execute(move |dbs| {
-                dbs.dunp_db.peers_old_write().upsert(
-                    PubKeyKeyV2(pubkey),
-                    duniter_core::dbs::PeerCardDbV1 {
-                        version: new_peer_card.version,
-                        currency: new_peer_card.currency,
-                        pubkey: new_peer_card.pubkey,
-                        blockstamp: new_peer_card.blockstamp,
-                        endpoints: new_peer_card.endpoints,
-                        status: new_peer_card.status,
-                        signature: new_peer_card.signature,
-                    },
-                )
+                dbs.dunp_db
+                    .peers_old_write()
+                    .upsert(PubKeyKeyV2(pubkey), new_peer_card)
             })
             .expect("dbs pool disconnected")
             .map_err(|e| e.into())
@@ -94,14 +84,14 @@ impl DuniterServer {
 
 #[cfg(test)]
 mod tests {
+    use super::*;
     use dubp::crypto::keys::{
         ed25519::{PublicKey, Signature},
-        PublicKey as _,
+        PublicKey as _, Signature as _,
     };
     use duniter_core::dbs::databases::network_v1::NetworkV1DbReadable;
     use duniter_core::dbs::PeerCardDbV1;
-
-    use super::*;
+    use std::str::FromStr;
 
     #[test]
     fn test_receive_new_heads() -> anyhow::Result<()> {
@@ -140,13 +130,13 @@ mod tests {
         let peer = PeerCardDbV1 {
             version: 0,
             currency: "test".to_owned(),
-            pubkey: "82NdD9eEbXSjRJXeJdqf56xkpu6taTfTeEqtAtmtbyXY".to_owned(),
-            blockstamp: "379922-0000001D97770A8203062F9E618F29FFAA2EF4218649FCE6DD13E01C3932E943".to_owned(),
+            pubkey: PublicKey::from_base58("82NdD9eEbXSjRJXeJdqf56xkpu6taTfTeEqtAtmtbyXY")?,
+            blockstamp: Blockstamp::from_str("379922-0000001D97770A8203062F9E618F29FFAA2EF4218649FCE6DD13E01C3932E943")?,
             endpoints: vec![],
-            status: "UP".to_owned(),
-            signature: "KBaoJuKIfkWJO015BTegUN8l81VYPfleVUfQUwPRPAAF1oB398hDb1bX/QUFe+3CKFz57aGT8bB745mz90x5Ag==".to_owned(),
+            status: true,
+            signature: Signature::from_base64("KBaoJuKIfkWJO015BTegUN8l81VYPfleVUfQUwPRPAAF1oB398hDb1bX/QUFe+3CKFz57aGT8bB745mz90x5Ag==")?,
         };
-        let pubkey = PublicKey::from_base58(&peer.pubkey)?;
+        let pubkey = peer.pubkey;
 
         assert_eq!(dbs.dunp_db.peers_old().count()?, 0);
         server.save_peer(peer.clone())?;
-- 
GitLab