diff --git a/Cargo.lock b/Cargo.lock index d78e7b9183d86a7568fe9396cffcd20d4aab024c..aad889c5155d6e39c95b5a9430911a70072a204d 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 9662c2a90eebe4c60c1e6dd06533c7fe66f7954a..3a603784d55ea22d60199aa3f3d00b0b70f6b77d 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 ef720fd4e57e55baef29bae32b690442998e7b5c..59e9e54d6537a9bdbb6b562698110a222676e36e 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())?;