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 1/6] =?UTF-8?q?deps:=C2=A0upgrade=20core=20&=20gva=20(peer?=
 =?UTF-8?q?s=20db=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


From c494379b4aa44060aae3628763bfe59d69d94ddf Mon Sep 17 00:00:00 2001
From: librelois <c@elo.tf>
Date: Fri, 14 May 2021 17:31:26 +0200
Subject: [PATCH 2/6] feat(peers): add field member for peers v1

---
 Cargo.lock                                  | 36 +++++++++----------
 neon/native/server.d.ts                     |  1 +
 neon/native/src/server.rs                   | 39 +++++++++++----------
 rust-libs/duniter-server/src/legacy/dunp.rs |  1 +
 4 files changed, 41 insertions(+), 36 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index aad889c51..aeff2fb5f 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#193a64f042500c7a0b327fc216db1773a904270c"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
 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#193a64f042500c7a0b327fc216db1773a904270c"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
 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#26602884a286a202c729b1a89a4e00c89152106a"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
 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#26602884a286a202c729b1a89a4e00c89152106a"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
 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#193a64f042500c7a0b327fc216db1773a904270c"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
 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#193a64f042500c7a0b327fc216db1773a904270c"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
 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#193a64f042500c7a0b327fc216db1773a904270c"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
 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#193a64f042500c7a0b327fc216db1773a904270c"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
 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#193a64f042500c7a0b327fc216db1773a904270c"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
 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#26602884a286a202c729b1a89a4e00c89152106a"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
 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#26602884a286a202c729b1a89a4e00c89152106a"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
 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#26602884a286a202c729b1a89a4e00c89152106a"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
 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#26602884a286a202c729b1a89a4e00c89152106a"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
 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#26602884a286a202c729b1a89a4e00c89152106a"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
 dependencies = [
  "anyhow",
  "arrayvec",
@@ -1137,7 +1137,7 @@ dependencies = [
 [[package]]
 name = "duniter-gva-indexer"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#26602884a286a202c729b1a89a4e00c89152106a"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
 dependencies = [
  "anyhow",
  "bincode",
@@ -1169,7 +1169,7 @@ dependencies = [
 [[package]]
 name = "duniter-mempools"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#193a64f042500c7a0b327fc216db1773a904270c"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
 dependencies = [
  "dubp",
  "duniter-bc-reader",
@@ -1182,7 +1182,7 @@ dependencies = [
 [[package]]
 name = "duniter-module"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#193a64f042500c7a0b327fc216db1773a904270c"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
 dependencies = [
  "anyhow",
  "async-mutex",
@@ -1813,7 +1813,7 @@ dependencies = [
 [[package]]
 name = "kv_typed"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#193a64f042500c7a0b327fc216db1773a904270c"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
 dependencies = [
  "byteorder",
  "cfg-if 0.1.10",
diff --git a/neon/native/server.d.ts b/neon/native/server.d.ts
index 8e53fd2b9..763b49308 100644
--- a/neon/native/server.d.ts
+++ b/neon/native/server.d.ts
@@ -63,6 +63,7 @@ export class PeerCard {
     endpoints: string[]
     signature: string
     status: string
+    member: boolean
 }
 
 export class RustDbTx {
diff --git a/neon/native/src/server.rs b/neon/native/src/server.rs
index 3a603784d..ffabe4e94 100644
--- a/neon/native/src/server.rs
+++ b/neon/native/src/server.rs
@@ -380,15 +380,7 @@ declare_types! {
             let peer_js = cx.argument::<JsValue>(0)?;
 
             let peer_stringified: PeerCardStringified = neon_serde::from_value(&mut cx, peer_js)?;
-            let peer = duniter_server::PeerCardDbV1 {
-                version: peer_stringified.version,
-                currency: peer_stringified.currency,
-                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 == "UP",
-                signature: into_neon_res(&mut cx, Signature::from_base64(&peer_stringified.signature))?,
-            };
+            let peer = peer_stringified.into_peer_card_db_v1(&mut cx)?;
 
             let this = cx.this();
             let res = {
@@ -402,15 +394,7 @@ declare_types! {
             let peer_js = cx.argument::<JsValue>(0)?;
 
             let peer_stringified: PeerCardStringified = neon_serde::from_value(&mut cx, peer_js)?;
-            let peer = duniter_server::PeerCardDbV1 {
-                version: peer_stringified.version,
-                currency: peer_stringified.currency,
-                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 == "UP",
-                signature: into_neon_res(&mut cx, Signature::from_base64(&peer_stringified.signature))?,
-            };
+            let peer = peer_stringified.into_peer_card_db_v1(&mut cx)?;
 
             let this = cx.this();
             {
@@ -525,6 +509,25 @@ pub struct PeerCardStringified {
     pub endpoints: Vec<String>,
     pub status: String,
     pub signature: String,
+    pub member: bool,
+}
+
+impl PeerCardStringified {
+    fn into_peer_card_db_v1<'c, C: Context<'c>>(
+        self,
+        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,
+            status: &self.status == "UP",
+            signature: into_neon_res(cx, Signature::from_base64(&self.signature))?,
+            member: self.member,
+        })
+    }
 }
 
 #[derive(Deserialize, Serialize)]
diff --git a/rust-libs/duniter-server/src/legacy/dunp.rs b/rust-libs/duniter-server/src/legacy/dunp.rs
index 59e9e54d6..637474d32 100644
--- a/rust-libs/duniter-server/src/legacy/dunp.rs
+++ b/rust-libs/duniter-server/src/legacy/dunp.rs
@@ -135,6 +135,7 @@ mod tests {
             endpoints: vec![],
             status: true,
             signature: Signature::from_base64("KBaoJuKIfkWJO015BTegUN8l81VYPfleVUfQUwPRPAAF1oB398hDb1bX/QUFe+3CKFz57aGT8bB745mz90x5Ag==")?,
+            member: false,
         };
         let pubkey = peer.pubkey;
 
-- 
GitLab


From a8bccaac2811e7c8bb3681fb8f1685e11cb55756 Mon Sep 17 00:00:00 2001
From: librelois <c@elo.tf>
Date: Fri, 14 May 2021 17:32:17 +0200
Subject: [PATCH 3/6] fix(peers): convert nonWoT to member bool

---
 app/lib/dto/PeerDTO.ts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/lib/dto/PeerDTO.ts b/app/lib/dto/PeerDTO.ts
index 50c9b109c..8f5c14b4f 100644
--- a/app/lib/dto/PeerDTO.ts
+++ b/app/lib/dto/PeerDTO.ts
@@ -346,7 +346,7 @@ export class PeerDTO implements Cloneable {
       p.signature,
       p.status,
       p.statusTS,
-      false
+      !p.nonWoT
     );
   }
 
-- 
GitLab


From 39bd571e57528267d2a1e354cb278ac42cfd3c0a Mon Sep 17 00:00:00 2001
From: librelois <c@elo.tf>
Date: Fri, 14 May 2021 17:33:02 +0200
Subject: [PATCH 4/6] fix(peers): save peer in rust db when edit peer status

---
 app/lib/dal/fileDAL.ts | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/app/lib/dal/fileDAL.ts b/app/lib/dal/fileDAL.ts
index 83c77b46c..8f4848f77 100644
--- a/app/lib/dal/fileDAL.ts
+++ b/app/lib/dal/fileDAL.ts
@@ -1232,6 +1232,7 @@ export class FileDAL implements ServerDAO {
       p.status = "UP";
       p.first_down = null;
       p.last_try = null;
+      this.rustServer.savePeer(PeerDTO.fromDBPeer(p));
       return this.peerDAL.savePeer(p);
     } catch (err) {
       return null;
@@ -1250,6 +1251,7 @@ export class FileDAL implements ServerDAO {
             p.first_down = now;
           }
           p.last_try = now;
+          this.rustServer.savePeer(PeerDTO.fromDBPeer(p));
           await this.peerDAL.savePeer(p);
         }
       }
-- 
GitLab


From c306f371345ecdc75ae5b3a9bed56f87fb59f6a8 Mon Sep 17 00:00:00 2001
From: librelois <c@elo.tf>
Date: Fri, 14 May 2021 21:56:16 +0200
Subject: [PATCH 5/6] build(cargo): add aliases to update core & gva

---
 .cargo/config | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.cargo/config b/.cargo/config
index 1798a5f3a..ff955fe6d 100644
--- a/.cargo/config
+++ b/.cargo/config
@@ -5,4 +5,6 @@ cn = "check --manifest-path neon/native/Cargo.toml"
 dex = "run --release --package duniter-dbex --"
 ta = "test --all"
 rr = "run --release --"
+uc = "update -p duniter-core"
+ug = "update -p duniter-gva"
 xtask = "run --package xtask --"
-- 
GitLab


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

---
 Cargo.lock | 61 ++++++++++++++++++++++++++++++------------------------
 1 file changed, 34 insertions(+), 27 deletions(-)

diff --git a/Cargo.lock b/Cargo.lock
index aeff2fb5f..ecbe5dcd2 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -60,6 +60,12 @@ name = "arrayvec"
 version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b"
+
+[[package]]
+name = "arrayvec"
+version = "0.7.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a2f58b0bb10c380af2b26e57212856b8c9a59e0925b4c20f4a174a49734eaf7"
 dependencies = [
  "serde",
 ]
@@ -281,7 +287,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587"
 dependencies = [
  "arrayref",
- "arrayvec",
+ "arrayvec 0.5.2",
  "constant_time_eq",
 ]
 
@@ -292,7 +298,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "e9ff35b701f3914bdb8fad3368d822c766ef2858b2583198e41639b936f09d3f"
 dependencies = [
  "arrayref",
- "arrayvec",
+ "arrayvec 0.5.2",
  "cc",
  "cfg-if 0.1.10",
  "constant_time_eq",
@@ -864,7 +870,7 @@ dependencies = [
 [[package]]
 name = "dubp-wot"
 version = "0.11.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8"
 dependencies = [
  "log",
  "rayon",
@@ -874,7 +880,7 @@ dependencies = [
 [[package]]
 name = "duniter-bc-reader"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8"
 dependencies = [
  "anyhow",
  "dubp",
@@ -885,10 +891,10 @@ dependencies = [
 [[package]]
 name = "duniter-bca"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#f8c5e0a0afdfeeedcc6bccc18f5c0e517169b892"
 dependencies = [
  "anyhow",
- "arrayvec",
+ "arrayvec 0.7.0",
  "async-bincode",
  "async_io_stream",
  "bincode",
@@ -908,9 +914,9 @@ dependencies = [
 [[package]]
 name = "duniter-bca-types"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#f8c5e0a0afdfeeedcc6bccc18f5c0e517169b892"
 dependencies = [
- "arrayvec",
+ "arrayvec 0.7.0",
  "bincode",
  "dubp",
  "serde",
@@ -940,7 +946,7 @@ dependencies = [
 [[package]]
 name = "duniter-conf"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8"
 dependencies = [
  "anyhow",
  "dubp",
@@ -954,7 +960,7 @@ dependencies = [
 [[package]]
 name = "duniter-core"
 version = "1.8.1"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8"
 dependencies = [
  "duniter-bc-reader",
  "duniter-conf",
@@ -970,7 +976,7 @@ name = "duniter-dbex"
 version = "0.1.0"
 dependencies = [
  "anyhow",
- "arrayvec",
+ "arrayvec 0.5.2",
  "comfy-table",
  "dirs",
  "dubp",
@@ -991,9 +997,9 @@ dependencies = [
 [[package]]
 name = "duniter-dbs"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8"
 dependencies = [
- "arrayvec",
+ "arrayvec 0.7.0",
  "bincode",
  "byteorder",
  "chrono",
@@ -1014,7 +1020,7 @@ dependencies = [
 [[package]]
 name = "duniter-dbs-write-ops"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8"
 dependencies = [
  "chrono",
  "dubp",
@@ -1029,7 +1035,7 @@ dependencies = [
 [[package]]
 name = "duniter-global"
 version = "1.8.1"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8"
 dependencies = [
  "async-rwlock",
  "dubp",
@@ -1042,10 +1048,10 @@ dependencies = [
 [[package]]
 name = "duniter-gva"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#f8c5e0a0afdfeeedcc6bccc18f5c0e517169b892"
 dependencies = [
  "anyhow",
- "arrayvec",
+ "arrayvec 0.7.0",
  "async-graphql",
  "async-mutex",
  "async-trait",
@@ -1073,7 +1079,7 @@ dependencies = [
 [[package]]
 name = "duniter-gva-conf"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#f8c5e0a0afdfeeedcc6bccc18f5c0e517169b892"
 dependencies = [
  "anyhow",
  "duniter-core",
@@ -1085,7 +1091,7 @@ dependencies = [
 [[package]]
 name = "duniter-gva-db"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#f8c5e0a0afdfeeedcc6bccc18f5c0e517169b892"
 dependencies = [
  "bincode",
  "chrono",
@@ -1102,10 +1108,10 @@ dependencies = [
 [[package]]
 name = "duniter-gva-dbs-reader"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#f8c5e0a0afdfeeedcc6bccc18f5c0e517169b892"
 dependencies = [
  "anyhow",
- "arrayvec",
+ "arrayvec 0.7.0",
  "dubp",
  "duniter-bca-types",
  "duniter-core",
@@ -1116,13 +1122,14 @@ dependencies = [
 [[package]]
 name = "duniter-gva-gql"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#f8c5e0a0afdfeeedcc6bccc18f5c0e517169b892"
 dependencies = [
  "anyhow",
- "arrayvec",
+ "arrayvec 0.7.0",
  "async-graphql",
  "async-trait",
  "dubp",
+ "duniter-bca-types",
  "duniter-core",
  "duniter-gva-db",
  "duniter-gva-dbs-reader",
@@ -1137,7 +1144,7 @@ dependencies = [
 [[package]]
 name = "duniter-gva-indexer"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#34836303e693149ffe11439e34cdb049d6a69b83"
+source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#f8c5e0a0afdfeeedcc6bccc18f5c0e517169b892"
 dependencies = [
  "anyhow",
  "bincode",
@@ -1169,7 +1176,7 @@ dependencies = [
 [[package]]
 name = "duniter-mempools"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8"
 dependencies = [
  "dubp",
  "duniter-bc-reader",
@@ -1182,7 +1189,7 @@ dependencies = [
 [[package]]
 name = "duniter-module"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8"
 dependencies = [
  "anyhow",
  "async-mutex",
@@ -1813,7 +1820,7 @@ dependencies = [
 [[package]]
 name = "kv_typed"
 version = "0.1.0"
-source = "git+https://git.duniter.org/nodes/rust/duniter-core#520d3893ec9bc3f4ca523af5de27933a0b0bd52d"
+source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8"
 dependencies = [
  "byteorder",
  "cfg-if 0.1.10",
-- 
GitLab