feat(indexer): add currency_params
This commit is contained in:
parent
8aecd22b91
commit
4a7d3270df
10 changed files with 78 additions and 51 deletions
60
Cargo.lock
generated
60
Cargo.lock
generated
|
@ -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",
|
||||
|
|
|
@ -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" }
|
||||
|
|
|
@ -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" }
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"] }
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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" }
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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::{
|
||||
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));
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Add table
Reference in a new issue