diff --git a/.cargo/config b/.cargo/config
index 1798a5f3a5bfedd7cba46646e4a6d286ddfb50fd..ff955fe6d91b22f2bd0c3ad0a25cfae05f1a7ea0 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 --"
diff --git a/Cargo.lock b/Cargo.lock
index d78e7b9183d86a7568fe9396cffcd20d4aab024c..ecbe5dcd25b989cc86675b0dc9d8c068c87fda37 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#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+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#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+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#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+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#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+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#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+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#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+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#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+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#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+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#4f26e9e6f687f2c42adf7027bebb34f4ed58e600"
+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#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+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#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+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#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+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#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+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#7fe98256d2775eecaaedf03401f1a0ff9b08a49b"
+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,12 +1144,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#f8c5e0a0afdfeeedcc6bccc18f5c0e517169b892"
 dependencies = [
  "anyhow",
+ "bincode",
  "dubp",
  "duniter-core",
  "duniter-gva-db",
+ "lz4_flex",
  "once_cell",
  "resiter",
 ]
@@ -1167,7 +1176,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#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8"
 dependencies = [
  "dubp",
  "duniter-bc-reader",
@@ -1180,7 +1189,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#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8"
 dependencies = [
  "anyhow",
  "async-mutex",
@@ -1811,7 +1820,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#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8"
 dependencies = [
  "byteorder",
  "cfg-if 0.1.10",
@@ -1886,6 +1895,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/app/lib/dal/fileDAL.ts b/app/lib/dal/fileDAL.ts
index 83c77b46cb2a30bca8fbaf5501f642c6893a1509..8f4848f7728e300f02cde1a83940b6f80d3cb16c 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);
         }
       }
diff --git a/app/lib/dto/PeerDTO.ts b/app/lib/dto/PeerDTO.ts
index 50c9b109ca56623ea955084adced5ef366bb6bb8..8f5c14b4f711a282590d3fd404713b6f6aa5053b 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
     );
   }
 
diff --git a/neon/native/server.d.ts b/neon/native/server.d.ts
index 8e53fd2b907b9d02b5a2bf97d4e0fc2d83a3f824..763b49308348f9587c7870e277cdd2bfa8710631 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 9662c2a90eebe4c60c1e6dd06533c7fe66f7954a..ffabe4e94b62c880e297cbe0cce54dd3e09146b7 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,
@@ -370,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: peer_stringified.pubkey,
-                blockstamp: peer_stringified.blockstamp,
-                endpoints: peer_stringified.endpoints,
-                status: peer_stringified.status,
-                signature: peer_stringified.signature,
-            };
+            let peer = peer_stringified.into_peer_card_db_v1(&mut cx)?;
 
             let this = cx.this();
             let res = {
@@ -392,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: peer_stringified.pubkey,
-                blockstamp: peer_stringified.blockstamp,
-                endpoints: peer_stringified.endpoints,
-                status: peer_stringified.status,
-                signature: peer_stringified.signature,
-            };
+            let peer = peer_stringified.into_peer_card_db_v1(&mut cx)?;
 
             let this = cx.this();
             {
@@ -515,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 ef720fd4e57e55baef29bae32b690442998e7b5c..637474d32c67cfe73b4ecbaa5271ec8f899fceb1 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,14 @@ 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==")?,
+            member: false,
         };
-        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())?;