feat(indexer): add currency_params

This commit is contained in:
librelois 2021-05-17 15:13:14 +02:00
parent 8aecd22b91
commit 4a7d3270df
10 changed files with 78 additions and 51 deletions

60
Cargo.lock generated
View file

@ -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",

View file

@ -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" }

View file

@ -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" }

View file

@ -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"

View file

@ -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"] }

View file

@ -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"

View file

@ -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" }

View file

@ -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"

View file

@ -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<B: Backend>(block: &DubpBlockV10, gva_db: &GvaV1Db<B>) -> KvResult<()> {
pub fn apply_block<B: Backend>(
block: &DubpBlockV10,
_currency_params: CurrencyParameters,
gva_db: &GvaV1Db<B>,
) -> KvResult<()> {
let blockstamp = Blockstamp {
number: block.number(),
hash: block.hash(),
@ -103,7 +108,11 @@ pub fn apply_block<B: Backend>(block: &DubpBlockV10, gva_db: &GvaV1Db<B>) -> KvR
Ok(())
}
pub fn revert_block<B: Backend>(block: &DubpBlockV10, gva_db: &GvaV1Db<B>) -> KvResult<()> {
pub fn revert_block<B: Backend>(
block: &DubpBlockV10,
_currency_params: CurrencyParameters,
gva_db: &GvaV1Db<B>,
) -> KvResult<()> {
gva_db.write(|mut db| {
blocks_chunks::revert_block_blocks_chunk::<B>(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));

View file

@ -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,