Skip to content
Snippets Groups Projects
Commit e37f55f3 authored by Éloïs's avatar Éloïs
Browse files

feat(indexer): add currency params

parent c7befd83
No related branches found
No related tags found
1 merge request!1395Currency params and main wot access
......@@ -304,6 +304,7 @@ dependencies = [
"constant_time_eq",
"crypto-mac",
"digest 0.9.0",
"rayon",
]
[[package]]
......@@ -785,9 +786,9 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
[[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",
......@@ -799,9 +800,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",
......@@ -814,9 +815,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",
......@@ -827,9 +828,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",
......@@ -841,9 +842,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",
......@@ -855,9 +856,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",
......@@ -870,9 +871,11 @@ dependencies = [
[[package]]
name = "dubp-wot"
version = "0.11.0"
source = "git+https://git.duniter.org/nodes/rust/duniter-core#4ce40a98dbc3cb3241e6d91817a8753a9be95ee8"
source = "git+https://git.duniter.org/nodes/rust/duniter-core#ce0cb755acd91c2e91fe6fc89ea57ae7d7e3eaef"
dependencies = [
"log",
"once_cell",
"parking_lot",
"rayon",
"serde",
]
......@@ -880,7 +883,7 @@ dependencies = [
[[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",
......@@ -891,7 +894,7 @@ dependencies = [
[[package]]
name = "duniter-bca"
version = "0.1.0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#8aecd22b91daf698d0c158bab5ee7cbaa3be1fb0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#4a7d3270dff7cbde9df08bdff30b08cedc24d13b"
dependencies = [
"anyhow",
"arrayvec 0.7.0",
......@@ -914,7 +917,7 @@ dependencies = [
[[package]]
name = "duniter-bca-types"
version = "0.1.0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#8aecd22b91daf698d0c158bab5ee7cbaa3be1fb0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#4a7d3270dff7cbde9df08bdff30b08cedc24d13b"
dependencies = [
"arrayvec 0.7.0",
"bincode",
......@@ -946,7 +949,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",
......@@ -960,8 +963,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",
......@@ -997,7 +1001,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",
......@@ -1020,7 +1024,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",
......@@ -1035,7 +1039,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",
......@@ -1048,7 +1052,7 @@ dependencies = [
[[package]]
name = "duniter-gva"
version = "0.1.0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#8aecd22b91daf698d0c158bab5ee7cbaa3be1fb0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#4a7d3270dff7cbde9df08bdff30b08cedc24d13b"
dependencies = [
"anyhow",
"arrayvec 0.7.0",
......@@ -1079,7 +1083,7 @@ dependencies = [
[[package]]
name = "duniter-gva-conf"
version = "0.1.0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#8aecd22b91daf698d0c158bab5ee7cbaa3be1fb0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#4a7d3270dff7cbde9df08bdff30b08cedc24d13b"
dependencies = [
"anyhow",
"duniter-core",
......@@ -1091,7 +1095,7 @@ dependencies = [
[[package]]
name = "duniter-gva-db"
version = "0.1.0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#8aecd22b91daf698d0c158bab5ee7cbaa3be1fb0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#4a7d3270dff7cbde9df08bdff30b08cedc24d13b"
dependencies = [
"bincode",
"chrono",
......@@ -1108,7 +1112,7 @@ dependencies = [
[[package]]
name = "duniter-gva-dbs-reader"
version = "0.1.0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#8aecd22b91daf698d0c158bab5ee7cbaa3be1fb0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#4a7d3270dff7cbde9df08bdff30b08cedc24d13b"
dependencies = [
"anyhow",
"arrayvec 0.7.0",
......@@ -1122,7 +1126,7 @@ dependencies = [
[[package]]
name = "duniter-gva-gql"
version = "0.1.0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#8aecd22b91daf698d0c158bab5ee7cbaa3be1fb0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#4a7d3270dff7cbde9df08bdff30b08cedc24d13b"
dependencies = [
"anyhow",
"arrayvec 0.7.0",
......@@ -1144,7 +1148,7 @@ dependencies = [
[[package]]
name = "duniter-gva-indexer"
version = "0.1.0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#8aecd22b91daf698d0c158bab5ee7cbaa3be1fb0"
source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#4a7d3270dff7cbde9df08bdff30b08cedc24d13b"
dependencies = [
"anyhow",
"bincode",
......@@ -1176,7 +1180,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",
......@@ -1189,7 +1193,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",
......@@ -1238,15 +1242,16 @@ dependencies = [
"neon",
"neon-build",
"neon-serde",
"parking_lot",
"serde",
"unwrap",
]
[[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 = [
"base64",
"blake3",
......@@ -1820,7 +1825,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",
......
......@@ -17,7 +17,7 @@ neon-build = "0.4.0"
[dependencies]
bincode = "1.2.1"
bs58 = "0.3.0"
dubp = { version = "0.53.1", features = ["duniter"] }
dubp = { version = "0.54.1", features = ["duniter"] }
dubp-wot = { git = "https://git.duniter.org/nodes/rust/duniter-core" }
duniter-server = { path = "../../rust-libs/duniter-server" }
flate2 = "1.0.16"
......
......@@ -22,13 +22,13 @@ anyhow = "1.0.33"
arrayvec = "0.5.1"
comfy-table = "2.1.0"
dirs = "3.0.1"
dubp = { version = "0.53.1", features = ["duniter"] }
dubp = { version = "0.54.1", features = ["duniter"] }
duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core", features = ["bc-writer", "explorer", "leveldb_backend"] }
duniter-gva-db = { git = "https://git.duniter.org/nodes/rust/modules/duniter-gva", default-features = false, features = ["explorer", "leveldb_backend"] }
duniter-gva-indexer = { git = "https://git.duniter.org/nodes/rust/modules/duniter-gva" }
fast-threadpool = "0.2.3"
flume = "0.10.0"
once_cell = "1.5.2"
once_cell = "1.7"
rayon = "1.3.1"
serde_json = "1.0.53"
structopt = "0.3.16"
......
......@@ -101,6 +101,7 @@ fn migrate_inner(
});
let mut current = None;
let mut currency_params = Default::default();
while let Ok(chunk) = r2.recv() {
if !chunk.is_empty() {
println!(
......@@ -108,12 +109,15 @@ fn migrate_inner(
chunk[0].number(),
chunk[chunk.len() - 1].number()
);
if let Some(currency_parameters) = chunk[0].currency_parameters() {
currency_params = currency_parameters;
}
let chunk = Arc::from(chunk);
let chunk_arc_clone = Arc::clone(&chunk);
let gva_handle = dbs_pool
.launch(move |_| {
for block in chunk_arc_clone.deref() {
duniter_gva_indexer::apply_block(block, gva_db)?;
duniter_gva_indexer::apply_block(block, currency_params, gva_db)?;
}
Ok::<_, KvError>(())
})
......
......@@ -8,7 +8,7 @@ edition = "2018"
[dependencies]
anyhow = "1.0.34"
cfg-if = "1.0.0"
dubp = { version = "0.53.1", features = ["duniter"] }
dubp = { version = "0.54.1", features = ["duniter"] }
duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core", features = ["bc-writer"] }
duniter-gva = { git = "https://git.duniter.org/nodes/rust/modules/duniter-gva", optional = true }
fast-threadpool = "0.2.3"
......
......@@ -20,6 +20,12 @@ impl DuniterServer {
let block = Arc::new(
DubpBlockV10::from_string_object(&block).map_err(|e| KvError::DeserError(e.into()))?,
);
// Get currency parameters from genesis block
if let Some(currency_params) = block.currency_parameters() {
self.currency_params = currency_params;
}
self.current = Some(duniter_core::dbs_write_ops::apply_block::apply_block(
&self.bc_db,
block.clone(),
......@@ -28,10 +34,17 @@ impl DuniterServer {
&self.global_sender,
false,
)?);
apply_block_modules(block, Arc::new(self.conf.clone()), &self.dbs_pool, None)
apply_block_modules(
block,
Arc::new(self.conf.clone()),
self.currency_params,
&self.dbs_pool,
None,
)
}
pub fn apply_chunk_of_blocks(&mut self, blocks: Vec<DubpBlockV10Stringified>) -> KvResult<()> {
log::debug!("apply_chunk(#{})", blocks[0].number);
let blocks = Arc::from(
blocks
.into_iter()
......@@ -39,6 +52,12 @@ impl DuniterServer {
.collect::<Result<Vec<_>, _>>()
.map_err(|e| KvError::DeserError(e.into()))?,
);
// Get currency parameters from genesis block
if let Some(currency_params) = blocks[0].currency_parameters() {
self.currency_params = currency_params;
}
self.current = Some(duniter_core::dbs_write_ops::apply_block::apply_chunk(
&self.bc_db,
self.current,
......@@ -46,7 +65,13 @@ impl DuniterServer {
blocks.clone(),
Some(&self.global_sender),
)?);
apply_chunk_of_blocks_modules(blocks, Arc::new(self.conf.clone()), &self.dbs_pool, None)
apply_chunk_of_blocks_modules(
blocks,
Arc::new(self.conf.clone()),
self.currency_params,
&self.dbs_pool,
None,
)
}
pub fn revert_block(&mut self, block: DubpBlockV10Stringified) -> KvResult<()> {
let block = Arc::new(
......@@ -64,6 +89,12 @@ impl DuniterServer {
.expect("dbs pool disconnected");
self.current = duniter_core::dbs_write_ops::bc::revert_block(&self.bc_db, &block)?;
txs_mp_job_handle.join().expect("dbs pool disconnected")?;
revert_block_modules(block, Arc::new(self.conf.clone()), &self.dbs_pool, None)
revert_block_modules(
block,
Arc::new(self.conf.clone()),
self.currency_params,
&self.dbs_pool,
None,
)
}
}
......@@ -26,7 +26,7 @@ mod fill_cm;
mod legacy;
pub use duniter_core::conf::{DuniterCoreConf, DuniterMode};
use duniter_core::dbs::databases::network_v1::NetworkV1DbWritable;
use duniter_core::dbs::databases::{bc_v2::BcV2DbReadable, network_v1::NetworkV1DbWritable};
pub use duniter_core::dbs::{
kv_typed::prelude::KvResult, smallvec, DunpHeadDbV1, DunpNodeIdV1Db, PeerCardDbV1,
};
......@@ -34,8 +34,8 @@ pub use duniter_core::dbs::{
pub use duniter_gva::GvaModule;
use anyhow::Context;
use dubp::common::crypto::keys::ed25519::PublicKey;
use dubp::common::prelude::*;
use dubp::common::{crypto::keys::ed25519::PublicKey, currency_params::CurrencyParameters};
use dubp::documents::{prelude::*, transaction::TransactionDocumentV10};
use dubp::{
block::prelude::*, common::crypto::hashs::Hash, documents_parser::prelude::FromStringObject,
......@@ -72,6 +72,7 @@ cfg_if::cfg_if! {
pub struct DuniterServer {
bc_db: BcV2Db<FileBackend>,
conf: DuniterCoreConf,
currency_params: CurrencyParameters,
current: Option<BlockMetaV2>,
dbs_pool: fast_threadpool::ThreadPoolSyncHandler<SharedDbs<FileBackend>>,
global_sender: flume::Sender<GlobalBackGroundTaskMsg>,
......@@ -108,6 +109,9 @@ impl DuniterServer {
let current = fill_cm::fill_and_get_current_meta(&bc_db, &global_sender)?;
log::info!("Databases successfully opened.");
// Get currency parameters
let currency_params = bc_db.currency_params().get(&())?.unwrap_or_default().0;
if let Some(current) = current {
log::info!("Current block: #{}-{}", current.number, current.hash);
} else {
......@@ -157,6 +161,7 @@ impl DuniterServer {
bc_db,
conf,
current,
currency_params,
dbs_pool: threadpool.into_sync_handler(),
global_sender,
pending_txs_subscriber,
......
......@@ -8,7 +8,7 @@ edition = "2018"
[dependencies]
anyhow = "1.0.34"
chrono = "0.4"
dubp = { version = "0.53.1", features = ["duniter"] }
dubp = { version = "0.54.1", features = ["duniter"] }
duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core", features = ["bc-writer"] }
duniter-server = { path = "../../duniter-server", features = ["gva"] }
fast-threadpool = "0.2.3"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment