diff --git a/Cargo.lock b/Cargo.lock index 7eefce4..3cf5426 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -273,6 +273,7 @@ dependencies = [ "constant_time_eq", "crypto-mac", "digest 0.9.0", + "rayon", ] [[package]] @@ -687,9 +688,9 @@ checksum = "4bb454f0228b18c7f4c3b0ebbee346ed9c52e7443b0999cd543ff3571205701d" [[package]] name = "dubp" -version = "0.53.1" +version = "0.54.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5cee825e59cde21a3622de781d15f74cbea92f01eb1554a8c73818eb61a5998" +checksum = "c5dca084e135ee5ea38d64e5e665cac6fc23570a66ed22ce5021b5d14c4f9443" dependencies = [ "dubp-block", "dubp-common", @@ -701,9 +702,9 @@ dependencies = [ [[package]] name = "dubp-block" -version = "0.53.1" +version = "0.54.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4b26027dafcf4631bd7d7a2b1b25e54453c475a613b5ef7db4356f51f71c0eb" +checksum = "5fa8e2b1d9728832dd4696f9eff1348085d162d5f98fe025e9c9a2caeffd9c89" dependencies = [ "dubp-documents", "dubp-documents-parser", @@ -716,9 +717,9 @@ dependencies = [ [[package]] name = "dubp-common" -version = "0.53.1" +version = "0.54.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc000f2a3366c1bd985015f95adb3520e8e0b007ca5f77882eea1ea119d84f4" +checksum = "49a12c0842c7c4e61e75755476b782d09e282275cab187376b3cc0da405b6afb" dependencies = [ "dup-crypto", "serde", @@ -729,9 +730,9 @@ dependencies = [ [[package]] name = "dubp-documents" -version = "0.53.1" +version = "0.54.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e96808a8ced0617ba93ed6fee00d88902f33e2f61a36ec9a841e8972ef5cd3a" +checksum = "450f2b268c979264ef098f00532faf0015d281d9c8ebabf227f57ecc35d0076c" dependencies = [ "beef", "dubp-wallet", @@ -743,9 +744,9 @@ dependencies = [ [[package]] name = "dubp-documents-parser" -version = "0.53.1" +version = "0.54.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c60f5c2804a9906777f96a62514c1f9f58abaab4c57f01db4fa7c45624e6fb" +checksum = "067bba5a1e34566871128b7157642a643264e4aeaba1db5034634ef6461f797b" dependencies = [ "dubp-documents", "json-pest-parser", @@ -757,9 +758,9 @@ dependencies = [ [[package]] name = "dubp-wallet" -version = "0.53.1" +version = "0.54.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f277bed6bc228981f76f207f4112051656302b5c50c0a858ab138ae2215d49fe" +checksum = "7552a1c1cca8498dc9266fdb6b10ee98ef841e363a1e3c0cd319ead3fa2aeef4" dependencies = [ "byteorder", "dubp-common", @@ -769,10 +770,22 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "dubp-wot" +version = "0.11.0" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#ce0cb755acd91c2e91fe6fc89ea57ae7d7e3eaef" +dependencies = [ + "log", + "once_cell", + "parking_lot", + "rayon", + "serde", +] + [[package]] name = "duniter-bc-reader" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#ce0cb755acd91c2e91fe6fc89ea57ae7d7e3eaef" dependencies = [ "anyhow", "dubp", @@ -818,7 +831,7 @@ dependencies = [ [[package]] name = "duniter-conf" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#ce0cb755acd91c2e91fe6fc89ea57ae7d7e3eaef" dependencies = [ "anyhow", "dubp", @@ -832,8 +845,9 @@ dependencies = [ [[package]] name = "duniter-core" version = "1.8.1" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#ce0cb755acd91c2e91fe6fc89ea57ae7d7e3eaef" dependencies = [ + "dubp-wot", "duniter-bc-reader", "duniter-conf", "duniter-dbs", @@ -845,7 +859,7 @@ dependencies = [ [[package]] name = "duniter-dbs" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#ce0cb755acd91c2e91fe6fc89ea57ae7d7e3eaef" dependencies = [ "arrayvec 0.7.0", "bincode", @@ -868,7 +882,7 @@ dependencies = [ [[package]] name = "duniter-dbs-write-ops" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#ce0cb755acd91c2e91fe6fc89ea57ae7d7e3eaef" dependencies = [ "chrono", "dubp", @@ -883,7 +897,7 @@ dependencies = [ [[package]] name = "duniter-global" version = "1.8.1" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#ce0cb755acd91c2e91fe6fc89ea57ae7d7e3eaef" dependencies = [ "async-rwlock", "dubp", @@ -1018,7 +1032,7 @@ dependencies = [ [[package]] name = "duniter-mempools" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#ce0cb755acd91c2e91fe6fc89ea57ae7d7e3eaef" dependencies = [ "dubp", "duniter-bc-reader", @@ -1031,7 +1045,7 @@ dependencies = [ [[package]] name = "duniter-module" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#ce0cb755acd91c2e91fe6fc89ea57ae7d7e3eaef" dependencies = [ "anyhow", "async-mutex", @@ -1050,9 +1064,9 @@ dependencies = [ [[package]] name = "dup-crypto" -version = "0.53.1" +version = "0.54.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c530e25cc0a03ae36229401ca322002931b55fc180e6001bdab20a9087f297c" +checksum = "be4b9746489f2564086fffce1cc67de3b867a098eaf4dbcce15dc85f85542c9c" dependencies = [ "arrayvec 0.5.2", "base64", @@ -1602,7 +1616,7 @@ dependencies = [ [[package]] name = "kv_typed" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#ce0cb755acd91c2e91fe6fc89ea57ae7d7e3eaef" dependencies = [ "byteorder", "cfg-if 0.1.10", diff --git a/Cargo.toml b/Cargo.toml index 198045f..333a51c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ async-graphql = { version = "2.8", features = ["log"] } async-mutex = "1.4.0" async-trait = "0.1.41" bytes = "1.0" -dubp = { version = "0.53.1", features = ["duniter"] } +dubp = { version = "0.54.1", features = ["duniter"] } duniter-bca = { path = "./bca" } duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core" } duniter-gva-conf = { path = "./conf" } diff --git a/bca/Cargo.toml b/bca/Cargo.toml index de60e8a..0d98bfa 100644 --- a/bca/Cargo.toml +++ b/bca/Cargo.toml @@ -11,7 +11,7 @@ arrayvec = { version = "0.7", features = ["serde"] } async-bincode = "0.6.1" async_io_stream = { version = "0.3.1", features = [ "tokio_io"] } bincode = "1.3" -dubp = { version = "0.53.1", features = ["duniter"] } +dubp = { version = "0.54.1", features = ["duniter"] } duniter-bca-types = { path = "types", features = ["duniter"] } duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core" } duniter-gva-db = { path = "../db" } diff --git a/bca/types/Cargo.toml b/bca/types/Cargo.toml index 38ba507..a151398 100644 --- a/bca/types/Cargo.toml +++ b/bca/types/Cargo.toml @@ -8,7 +8,7 @@ edition = "2018" [dependencies] arrayvec = { version = "0.7", features = ["serde"] } bincode = "1.3" -dubp = { version = "0.53.1" } +dubp = { version = "0.54.1" } serde = { version = "1.0.105", features = ["derive"] } smallvec = { version = "1.4.0", features = ["serde"] } thiserror = "1.0.20" diff --git a/db/Cargo.toml b/db/Cargo.toml index 04ceb64..24e4e92 100644 --- a/db/Cargo.toml +++ b/db/Cargo.toml @@ -14,7 +14,7 @@ path = "src/lib.rs" bincode = "1.3" chrono = { version = "0.4.15", optional = true } duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core" } -dubp = { version = "0.53.1", features = ["duniter"] } +dubp = { version = "0.54.1", features = ["duniter"] } parking_lot = "0.11.0" paste = "1.0.2" serde = { version = "1.0.105", features = ["derive"] } diff --git a/dbs-reader/Cargo.toml b/dbs-reader/Cargo.toml index 1fe254e..21332a6 100644 --- a/dbs-reader/Cargo.toml +++ b/dbs-reader/Cargo.toml @@ -20,7 +20,7 @@ arrayvec = { version = "0.7", features = ["serde"] } duniter-bca-types = { path = "../bca/types" } duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core" } duniter-gva-db = { path = "../db" } -dubp = { version = "0.53.1", features = ["duniter"] } +dubp = { version = "0.54.1", features = ["duniter"] } mockall = { version = "0.9.1", optional = true } resiter = "0.4.0" diff --git a/gql/Cargo.toml b/gql/Cargo.toml index 1fab7cc..68a1401 100644 --- a/gql/Cargo.toml +++ b/gql/Cargo.toml @@ -10,7 +10,7 @@ anyhow = "1.0.33" arrayvec = { version = "0.7", features = ["serde"] } async-graphql = { version = "2.8", features = ["log"] } async-trait = "0.1.41" -dubp = { version = "0.53.1", features = ["duniter"] } +dubp = { version = "0.54.1", features = ["duniter"] } duniter-bca-types = { path = "../bca/types" } duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core" } duniter-gva-db = { path = "../db" } diff --git a/indexer/Cargo.toml b/indexer/Cargo.toml index 8639130..25d4999 100644 --- a/indexer/Cargo.toml +++ b/indexer/Cargo.toml @@ -16,7 +16,7 @@ anyhow = "1.0.34" bincode = "1.3" duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core" } duniter-gva-db = { path = "../db" } -dubp = { version = "0.53.1", features = ["duniter"] } +dubp = { version = "0.54.1", features = ["duniter"] } lz4_flex = { version = "0.7", default-features = false } once_cell = "1.5.2" resiter = "0.4.0" diff --git a/indexer/src/lib.rs b/indexer/src/lib.rs index c67cfa4..07f8ca9 100644 --- a/indexer/src/lib.rs +++ b/indexer/src/lib.rs @@ -28,13 +28,14 @@ mod tx; mod utxos; use bincode::Options as _; -use dubp::block::prelude::*; -use dubp::common::crypto::hashs::Hash; -use dubp::common::prelude::*; -use dubp::documents::{ - prelude::*, transaction::TransactionDocumentTrait, transaction::TransactionDocumentV10, +use dubp::{ + block::prelude::*, + common::{crypto::hashs::Hash, currency_params::CurrencyParameters, prelude::*}, + documents::{ + prelude::*, transaction::TransactionDocumentTrait, transaction::TransactionDocumentV10, + }, + wallet::prelude::*, }; -use dubp::wallet::prelude::*; use duniter_core::dbs::{ bincode_db, kv_typed::prelude::*, prelude::*, FileBackend, HashKeyV2, PubKeyKeyV2, SourceAmountValV2, WalletConditionsV2, @@ -71,7 +72,11 @@ pub struct UtxoV10<'s> { pub written_block: BlockNumber, } -pub fn apply_block(block: &DubpBlockV10, gva_db: &GvaV1Db) -> KvResult<()> { +pub fn apply_block( + block: &DubpBlockV10, + _currency_params: CurrencyParameters, + gva_db: &GvaV1Db, +) -> KvResult<()> { let blockstamp = Blockstamp { number: block.number(), hash: block.hash(), @@ -103,7 +108,11 @@ pub fn apply_block(block: &DubpBlockV10, gva_db: &GvaV1Db) -> KvR Ok(()) } -pub fn revert_block(block: &DubpBlockV10, gva_db: &GvaV1Db) -> KvResult<()> { +pub fn revert_block( + block: &DubpBlockV10, + _currency_params: CurrencyParameters, + gva_db: &GvaV1Db, +) -> KvResult<()> { gva_db.write(|mut db| { blocks_chunks::revert_block_blocks_chunk::(block, &mut db)?; db.blocks_by_common_time.remove(U64BE(block.common_time())); @@ -269,8 +278,9 @@ mod tests { hash: Some("0000000000000000000000000000000000000000000000000000000000000000".to_owned()), ..Default::default() })?; + let currency_params = CurrencyParameters::default(); - apply_block(&b0, &gva_db)?; + apply_block(&b0, currency_params, &gva_db)?; assert_eq!(gva_db.blocks_by_common_time().count()?, 1); assert_eq!(gva_db.blocks_by_common_time().get(&U64BE(5_243))?, Some(0)); @@ -308,7 +318,7 @@ mod tests { ..Default::default() })?; - apply_block(&b1, &gva_db)?; + apply_block(&b1, currency_params, &gva_db)?; assert_eq!(gva_db.blocks_by_common_time().count()?, 2); assert_eq!(gva_db.blocks_by_common_time().get(&U64BE(5_245))?, Some(1)); @@ -372,7 +382,7 @@ mod tests { ..Default::default() })?; - apply_block(&b2, &gva_db)?; + apply_block(&b2, currency_params, &gva_db)?; assert_eq!(gva_db.blocks_by_common_time().count()?, 3); assert_eq!(gva_db.blocks_by_common_time().get(&U64BE(5_247))?, Some(2)); @@ -439,8 +449,9 @@ mod tests { hash: Some("0000000000000000000000000000000000000000000000000000000000000000".to_owned()), ..Default::default() })?; + let currency_params = CurrencyParameters::default(); - apply_block(&b0, &gva_db)?; + apply_block(&b0, currency_params, &gva_db)?; let b1 = DubpBlockV10::from_string_object(&DubpBlockV10Stringified { number: 1, @@ -467,7 +478,7 @@ mod tests { ..Default::default() })?; - apply_block(&b1, &gva_db)?; + apply_block(&b1, currency_params, &gva_db)?; let b2 = DubpBlockV10::from_string_object(&DubpBlockV10Stringified { number: 2, @@ -493,7 +504,7 @@ mod tests { ..Default::default() })?; - apply_block(&b2, &gva_db)?; + apply_block(&b2, currency_params, &gva_db)?; let b3 = DubpBlockV10::from_string_object(&DubpBlockV10Stringified { number: 3, @@ -519,9 +530,9 @@ mod tests { ..Default::default() })?; - apply_block(&b3, &gva_db)?; + apply_block(&b3, currency_params, &gva_db)?; - revert_block(&b3, &gva_db)?; + revert_block(&b3, currency_params, &gva_db)?; assert_eq!(gva_db.blockchain_time().count()?, 3); assert_eq!(gva_db.blockchain_time().get(&U32BE(2))?, Some(5_247)); @@ -551,7 +562,7 @@ mod tests { ] ); - revert_block(&b2, &gva_db)?; + revert_block(&b2, currency_params, &gva_db)?; assert_eq!(gva_db.blockchain_time().count()?, 2); assert_eq!(gva_db.blockchain_time().get(&U32BE(1))?, Some(5_245)); @@ -581,7 +592,7 @@ mod tests { ] ); - revert_block(&b1, &gva_db)?; + revert_block(&b1, currency_params, &gva_db)?; assert_eq!(gva_db.blockchain_time().count()?, 1); assert_eq!(gva_db.blockchain_time().get(&U32BE(0))?, Some(5_243)); diff --git a/src/lib.rs b/src/lib.rs index 90b5109..c15d587 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -26,7 +26,7 @@ mod anti_spam; mod warp_; use async_graphql::http::GraphQLPlaygroundConfig; -use dubp::common::prelude::*; +use dubp::common::{currency_params::CurrencyParameters, prelude::*}; use dubp::documents::transaction::TransactionDocumentV10; use dubp::{block::DubpBlockV10, crypto::hashs::Hash}; use dubp::{ @@ -73,18 +73,20 @@ impl duniter_core::module::DuniterModule for GvaModule { fn apply_block( block: &DubpBlockV10, _conf: &duniter_core::conf::DuniterCoreConf, + currency_params: CurrencyParameters, profile_path_opt: Option<&Path>, ) -> KvResult<()> { let gva_db = get_gva_db_rw(profile_path_opt); - duniter_gva_indexer::apply_block(&block, gva_db) + duniter_gva_indexer::apply_block(&block, currency_params, gva_db) } fn revert_block( block: &DubpBlockV10, _conf: &duniter_core::conf::DuniterCoreConf, + currency_params: CurrencyParameters, profile_path_opt: Option<&Path>, ) -> KvResult<()> { let gva_db = get_gva_db_rw(profile_path_opt); - duniter_gva_indexer::revert_block(&block, gva_db) + duniter_gva_indexer::revert_block(&block, currency_params, gva_db) } async fn init( conf: Self::Conf,