From 20ae27d995b9552c5b5d26b36ef3d5cf42552099 Mon Sep 17 00:00:00 2001 From: Sebastien Guillemot Date: Mon, 29 Apr 2024 18:33:58 +0900 Subject: [PATCH 01/12] Custom network support --- .../indexer/cardano_node_docker.mainnet.yml | 2 +- .../config/indexer/oura_docker.mainnet.yml | 2 +- docs/docs/indexer/run.md | 2 +- indexer/configs/cardano_node.yml | 2 +- indexer/configs/default.yml | 2 +- indexer/configs/oura.yml | 2 +- indexer/src/genesis.rs | 23 ++---------- indexer/src/main.rs | 33 ++++++++++++++++- indexer/src/sinks/cardano.rs | 35 +++++++++++++++++-- 9 files changed, 73 insertions(+), 30 deletions(-) diff --git a/deployment/config/indexer/cardano_node_docker.mainnet.yml b/deployment/config/indexer/cardano_node_docker.mainnet.yml index f0f45eec..b58884d3 100644 --- a/deployment/config/indexer/cardano_node_docker.mainnet.yml +++ b/deployment/config/indexer/cardano_node_docker.mainnet.yml @@ -15,6 +15,6 @@ sink: db: type: postgres database_url: postgresql://carp:1234@postgres:5432/carp_mainnet - network: mainnet # preview / preprod / testnet + network: mainnet # preview / preprod / testnet / custom start_block: diff --git a/deployment/config/indexer/oura_docker.mainnet.yml b/deployment/config/indexer/oura_docker.mainnet.yml index 6f7ce7fb..5a87b8e0 100644 --- a/deployment/config/indexer/oura_docker.mainnet.yml +++ b/deployment/config/indexer/oura_docker.mainnet.yml @@ -8,6 +8,6 @@ sink: db: type: postgres database_url: postgresql://carp:1234@postgres:5432/carp_mainnet - network: mainnet # preview / preprod / testnet + network: mainnet # preview / preprod / testnet / custom start_block: diff --git a/docs/docs/indexer/run.md b/docs/docs/indexer/run.md index 30f0cb49..bfa3793a 100644 --- a/docs/docs/indexer/run.md +++ b/docs/docs/indexer/run.md @@ -22,7 +22,7 @@ sink: db: type: postgres database_url: postgresql://carp:1234@localhost:5432/carp_mainnet - network: mainnet # preview / preprod / testnet + network: mainnet # preview / preprod / testnet / custom start_block: ``` diff --git a/indexer/configs/cardano_node.yml b/indexer/configs/cardano_node.yml index e83d5e3a..413d6f12 100644 --- a/indexer/configs/cardano_node.yml +++ b/indexer/configs/cardano_node.yml @@ -13,6 +13,6 @@ sink: db: type: postgres database_url: postgresql://carp:1234@localhost:5432/carp_mainnet - network: mainnet # preview / preprod / testnet + network: mainnet # preview / preprod / testnet / custom start_block: diff --git a/indexer/configs/default.yml b/indexer/configs/default.yml index 4990df99..272c7321 100644 --- a/indexer/configs/default.yml +++ b/indexer/configs/default.yml @@ -8,6 +8,6 @@ sink: db: type: postgres database_url: postgresql://carp:1234@localhost:5432/carp_mainnet - network: mainnet # preview / preprod / testnet + network: mainnet # preview / preprod / testnet / custom start_block: diff --git a/indexer/configs/oura.yml b/indexer/configs/oura.yml index 4990df99..272c7321 100644 --- a/indexer/configs/oura.yml +++ b/indexer/configs/oura.yml @@ -8,6 +8,6 @@ sink: db: type: postgres database_url: postgresql://carp:1234@localhost:5432/carp_mainnet - network: mainnet # preview / preprod / testnet + network: mainnet # preview / preprod / testnet / custom start_block: diff --git a/indexer/src/genesis.rs b/indexer/src/genesis.rs index 8d5ed3cc..feb442ce 100644 --- a/indexer/src/genesis.rs +++ b/indexer/src/genesis.rs @@ -13,36 +13,19 @@ use migration::DbErr; use tasks::utils::TaskPerfAggregator; use tasks::{execution_plan::ExecutionPlan, genesis::genesis_executor::process_genesis_block}; -const GENESIS_MAINNET: &str = "./genesis/mainnet-byron-genesis.json"; -const GENESIS_PREVIEW: &str = "./genesis/preview-byron-genesis.json"; -const GENESIS_PREPROD: &str = "./genesis/preprod-byron-genesis.json"; -const GENESIS_TESTNET: &str = "./genesis/testnet-byron-genesis.json"; - pub async fn process_genesis( conn: &DatabaseConnection, network: &str, + genesis_folder: &str, exec_plan: Arc, ) -> anyhow::Result<()> { - // https://github.com/txpipe/oura/blob/67b01e8739ed2927ced270e08daea74b03bcc7f7/src/sources/common.rs#L91 - let genesis_path = match dbg!(network) { - "mainnet" => GENESIS_MAINNET, - "testnet" => GENESIS_TESTNET, - "preview" => GENESIS_PREVIEW, - "preprod" => GENESIS_PREPROD, - rest => { - return Err(anyhow!( - "{} is invalid. NETWORK must be either mainnet/preview/preprod/testnet", - rest - )) - } - }; - let task_perf_aggregator = Arc::new(Mutex::new(TaskPerfAggregator::default())); tracing::info!("Parsing genesis file..."); let mut time_counter = std::time::Instant::now(); - let file = fs::File::open(genesis_path).expect("Failed to open genesis file"); + let file = fs::File::open(format!("{}/{}-byron-genesis.json", genesis_folder, network)) + .expect("Failed to open genesis file"); let genesis_file: Box = Box::new( parse_genesis_data(file).map_err(|err| anyhow!("can't parse genesis data: {:?}", err))?, ); diff --git a/indexer/src/main.rs b/indexer/src/main.rs index 05bc965d..a9b12f2f 100644 --- a/indexer/src/main.rs +++ b/indexer/src/main.rs @@ -52,7 +52,11 @@ pub enum DbConfig { #[serde(tag = "type", rename_all = "snake_case")] #[serde(deny_unknown_fields)] pub enum SinkConfig { - Cardano { db: DbConfig, network: String }, + Cardano { + db: DbConfig, + network: String, + genesis_folder: Option, + }, } pub enum Network {} @@ -184,6 +188,33 @@ async fn main() -> anyhow::Result<()> { "mainnet" => dcspark_blockchain_source::cardano::NetworkConfiguration::mainnet(), "preprod" => dcspark_blockchain_source::cardano::NetworkConfiguration::preprod(), "preview" => dcspark_blockchain_source::cardano::NetworkConfiguration::preview(), + "custom" => dcspark_blockchain_source::cardano::NetworkConfiguration { + // TODO: dynamically fill in all of this + chain_info: dcspark_blockchain_source::cardano::ChainInfo::Custom { + protocol_magic: 0, + network_id: 0, + }, + relay: (Cow::Borrowed("preprod-node.world.dev.cardano.org."), 30000), + from: dcspark_blockchain_source::cardano::Point::BlockHeader { + slot_nb: dcspark_core::SlotNumber::new(86400), + hash: dcspark_core::BlockId::new( + "c4a1595c5cc7a31eda9e544986fe9387af4e3491afe0ca9a80714f01951bbd5c", + ), + }, + genesis_parent: dcspark_core::BlockId::new( + "d4b8de7a11d929a323373cbab6c1a9bdc931beffff11db111cf9d57356ee1937", + ), + genesis: dcspark_core::BlockId::new( + "9ad7ff320c9cf74e0f5ee78d22a85ce42bb0a487d0506bf60cfb5a91ea4497d2", + ), + shelley_era_config: dcspark_blockchain_source::cardano::time::Era { + first_slot: 4492800, + start_epoch: 208, + known_time: 1596059091, + slot_length: 1, + epoch_length_seconds: 432000, + }, + }, _ => return Err(anyhow::anyhow!("network not supported by source")), }; diff --git a/indexer/src/sinks/cardano.rs b/indexer/src/sinks/cardano.rs index 7b45cc64..31689c0a 100644 --- a/indexer/src/sinks/cardano.rs +++ b/indexer/src/sinks/cardano.rs @@ -3,6 +3,7 @@ use crate::perf_aggregator::PerfAggregator; use crate::sink::Sink; use crate::types::{MultiEraBlock, StoppableService}; use crate::{genesis, DbConfig, SinkConfig}; +use anyhow::anyhow; use async_trait::async_trait; use dcspark_blockchain_source::cardano::Point; @@ -28,6 +29,7 @@ use tasks::utils::TaskPerfAggregator; pub struct CardanoSink { db: DatabaseConnection, network: String, + genesis_folder: Option, exec_plan: Arc, last_epoch: i128, @@ -38,8 +40,12 @@ pub struct CardanoSink { impl CardanoSink { #[allow(unreachable_patterns)] pub async fn new(config: SinkConfig, exec_plan: Arc) -> anyhow::Result { - let (db_config, network) = match config { - SinkConfig::Cardano { db, network } => (db, network), + let (db_config, network, genesis_folder) = match config { + SinkConfig::Cardano { + db, + network, + genesis_folder, + } => (db, network, genesis_folder), _ => todo!("Invalid sink config provided"), }; match db_config { @@ -49,6 +55,7 @@ impl CardanoSink { Ok(Self { db: conn, network, + genesis_folder, exec_plan, last_epoch: -1, epoch_start_time: std::time::Instant::now(), @@ -118,6 +125,8 @@ impl CardanoSink { } } +const KNOWN_GENESIS_FOLDER: &str = "./genesis"; + #[async_trait] impl Sink for CardanoSink { type From = Point; @@ -130,7 +139,27 @@ impl Sink for CardanoSink { }; if start.is_empty() { - genesis::process_genesis(&self.db, &self.network, self.exec_plan.clone()).await?; + // https://github.com/txpipe/oura/blob/67b01e8739ed2927ced270e08daea74b03bcc7f7/src/sources/common.rs#L91 + let genesis_folder: &str = match dbg!(&self.network[..]) { + "mainnet" | "testnet" | "preview" | "preprod" => KNOWN_GENESIS_FOLDER, + "custom" => &self + .genesis_folder + .as_ref() + .expect("genesis_folder should be specified for custom networks")[..], + rest => { + return Err(anyhow!( + "{} is invalid. NETWORK must be either mainnet/preview/preprod/testnet or a 'custom' network", + rest + )) + } + }; + genesis::process_genesis( + &self.db, + &self.network, + genesis_folder, + self.exec_plan.clone(), + ) + .await?; return self.get_latest_point().await; } From 59dddc47a6f48a4d04df62a11a01f15defda87b1 Mon Sep 17 00:00:00 2001 From: rooooooooob Date: Tue, 6 Aug 2024 23:45:08 -0700 Subject: [PATCH 02/12] Dynamically load custom network configs --- indexer/Cargo.toml | 10 ++++--- indexer/configs/custom.yml | 38 ++++++++++++++++++++++++++ indexer/src/main.rs | 52 +++++++++++------------------------- indexer/src/sinks/cardano.rs | 1 + 4 files changed, 60 insertions(+), 41 deletions(-) create mode 100644 indexer/configs/custom.yml diff --git a/indexer/Cargo.toml b/indexer/Cargo.toml index 049cd77b..45dbb979 100644 --- a/indexer/Cargo.toml +++ b/indexer/Cargo.toml @@ -9,10 +9,12 @@ strip = true [dependencies] # [core] -dcspark-core = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "572af17e3e22101dee64e0999049a571aea26e0f" } -dcspark-blockchain-source = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "572af17e3e22101dee64e0999049a571aea26e0f" } -multiverse = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "572af17e3e22101dee64e0999049a571aea26e0f" } - +dcspark-core = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "98c21b8d6c4f72a1c1813eaec3b9ccf1ff67106e" } +dcspark-blockchain-source = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "98c21b8d6c4f72a1c1813eaec3b9ccf1ff67106e" } +#dcspark-core = { path = "../../dcspark-core/core" } +#dcspark-blockchain-source = { path = "../../dcspark-core/blockchain-source" } +#multiverse = { path = "../../dcspark-core/multiverse" } +multiverse = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "98c21b8d6c4f72a1c1813eaec3b9ccf1ff67106e" } # [local] entity = { path = "entity" } migration = { path = "migration" } diff --git a/indexer/configs/custom.yml b/indexer/configs/custom.yml new file mode 100644 index 00000000..9ab0870f --- /dev/null +++ b/indexer/configs/custom.yml @@ -0,0 +1,38 @@ +source: + type: cardano_net + relay: + - localhost + - 3001 + +sink: + type: cardano + db: + type: postgres + database_url: postgresql://carp:1234@localhost:5432/carp_custom5 + network: custom # preview / preprod / testnet / custom + genesis_folder: /home/user/Cardano/carp/indexer/genesis/ + custom_config: + chain_info: + network_id: 1 + protocol_magic: 42 + relay: + - "localhost" + - 3001 + from: + BlockHeader: + slot_nb: 1 + hash: "ba8066f73eb9cf4ad9adf38051c54d3a51d92cb98561cffc1f202b1b97739cd5" + genesis_parent: "0ded594a3411f6d3236228abc1e2ef8c2a21e09d859ea23bfc2182f92853cba8" + genesis: + BlockHeader: + slot_nb: 0 + hash: "7a32184d9e0068b0fa75fd0ecaad798f9bc573d4921c519b12968e26ff0747a3" + shelley_era_config: + first_slot: 0 + start_epoch: 0 + known_time: 1722355346 + slot_length: 1 + epoch_length_seconds: 500 + +start_block: + diff --git a/indexer/src/main.rs b/indexer/src/main.rs index a9b12f2f..3e6f444d 100644 --- a/indexer/src/main.rs +++ b/indexer/src/main.rs @@ -55,6 +55,8 @@ pub enum SinkConfig { Cardano { db: DbConfig, network: String, + /// Custom configuration. If not present it will be inferred from the network name + custom_config: Option, genesis_folder: Option, }, } @@ -158,10 +160,20 @@ async fn main() -> anyhow::Result<()> { config }; - let (network, mut sink) = match config.sink { - SinkConfig::Cardano { ref network, .. } => ( + let (network, base_config, mut sink) = match &config.sink { + SinkConfig::Cardano { network, custom_config, .. } => ( network.clone(), - CardanoSink::new(config.sink, exec_plan) + match custom_config { + Some(custom_config) => custom_config.clone(), + None => match network.as_ref() { + "mainnet" => dcspark_blockchain_source::cardano::NetworkConfiguration::mainnet(), + "preprod" => dcspark_blockchain_source::cardano::NetworkConfiguration::preprod(), + "preview" => dcspark_blockchain_source::cardano::NetworkConfiguration::preview(), + "custom" => panic!("sink.custom_config is mandatory when setting network to custom"), + unknown_network => return Err(anyhow::anyhow!("network {unknown_network} not supported by source")), + } + }, + CardanoSink::new(config.sink.clone(), exec_plan) .await .context("Can't create cardano sink")?, ), @@ -184,40 +196,6 @@ async fn main() -> anyhow::Result<()> { main_loop(source, sink, start_from, running, processing_finished).await } SourceConfig::CardanoNet { relay } => { - let base_config = match network.as_ref() { - "mainnet" => dcspark_blockchain_source::cardano::NetworkConfiguration::mainnet(), - "preprod" => dcspark_blockchain_source::cardano::NetworkConfiguration::preprod(), - "preview" => dcspark_blockchain_source::cardano::NetworkConfiguration::preview(), - "custom" => dcspark_blockchain_source::cardano::NetworkConfiguration { - // TODO: dynamically fill in all of this - chain_info: dcspark_blockchain_source::cardano::ChainInfo::Custom { - protocol_magic: 0, - network_id: 0, - }, - relay: (Cow::Borrowed("preprod-node.world.dev.cardano.org."), 30000), - from: dcspark_blockchain_source::cardano::Point::BlockHeader { - slot_nb: dcspark_core::SlotNumber::new(86400), - hash: dcspark_core::BlockId::new( - "c4a1595c5cc7a31eda9e544986fe9387af4e3491afe0ca9a80714f01951bbd5c", - ), - }, - genesis_parent: dcspark_core::BlockId::new( - "d4b8de7a11d929a323373cbab6c1a9bdc931beffff11db111cf9d57356ee1937", - ), - genesis: dcspark_core::BlockId::new( - "9ad7ff320c9cf74e0f5ee78d22a85ce42bb0a487d0506bf60cfb5a91ea4497d2", - ), - shelley_era_config: dcspark_blockchain_source::cardano::time::Era { - first_slot: 4492800, - start_epoch: 208, - known_time: 1596059091, - slot_length: 1, - epoch_length_seconds: 432000, - }, - }, - _ => return Err(anyhow::anyhow!("network not supported by source")), - }; - // try to find a confirmed point. // // this way the multiverse can be temporary, which saves setting up the extra db diff --git a/indexer/src/sinks/cardano.rs b/indexer/src/sinks/cardano.rs index 31689c0a..cbffbe39 100644 --- a/indexer/src/sinks/cardano.rs +++ b/indexer/src/sinks/cardano.rs @@ -44,6 +44,7 @@ impl CardanoSink { SinkConfig::Cardano { db, network, + custom_config: _, genesis_folder, } => (db, network, genesis_folder), _ => todo!("Invalid sink config provided"), From aa0738d7e8e042320fa206889decdac2cac17952 Mon Sep 17 00:00:00 2001 From: rooooooooob Date: Wed, 7 Aug 2024 17:36:48 -0700 Subject: [PATCH 03/12] fmt --- indexer/src/main.rs | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/indexer/src/main.rs b/indexer/src/main.rs index 744872ed..7e743437 100644 --- a/indexer/src/main.rs +++ b/indexer/src/main.rs @@ -173,17 +173,33 @@ async fn main() -> anyhow::Result<()> { }; let (network, base_config, mut sink) = match &config.sink { - SinkConfig::Cardano { network, custom_config, .. } => ( + SinkConfig::Cardano { + network, + custom_config, + .. + } => ( network.clone(), match custom_config { Some(custom_config) => custom_config.clone(), None => match network.as_ref() { - "mainnet" => dcspark_blockchain_source::cardano::NetworkConfiguration::mainnet(), - "preprod" => dcspark_blockchain_source::cardano::NetworkConfiguration::preprod(), - "preview" => dcspark_blockchain_source::cardano::NetworkConfiguration::preview(), - "custom" => panic!("sink.custom_config is mandatory when setting network to custom"), - unknown_network => return Err(anyhow::anyhow!("network {unknown_network} not supported by source")), - } + "mainnet" => { + dcspark_blockchain_source::cardano::NetworkConfiguration::mainnet() + } + "preprod" => { + dcspark_blockchain_source::cardano::NetworkConfiguration::preprod() + } + "preview" => { + dcspark_blockchain_source::cardano::NetworkConfiguration::preview() + } + "custom" => { + panic!("sink.custom_config is mandatory when setting network to custom") + } + unknown_network => { + return Err(anyhow::anyhow!( + "network {unknown_network} not supported by source" + )) + } + }, }, CardanoSink::new(config.sink.clone(), exec_plan) .await From 2ce031a844151510eb00b59a072c8423845f1887 Mon Sep 17 00:00:00 2001 From: rooooooooob Date: Wed, 7 Aug 2024 17:41:25 -0700 Subject: [PATCH 04/12] cargo.lock to fix dep issues in CI --- Cargo.lock | 1053 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 627 insertions(+), 426 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7b0ea9dd..80bd80f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,9 +10,9 @@ checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -25,9 +25,9 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "ahash" -version = "0.7.7" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ "getrandom", "once_cell", @@ -36,9 +36,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -75,9 +75,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.79" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "arrayvec" @@ -120,12 +120,11 @@ dependencies = [ [[package]] name = "async-channel" -version = "2.1.1" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" dependencies = [ "concurrent-queue", - "event-listener 4.0.3", "event-listener-strategy", "futures-core", "pin-project-lite", @@ -133,15 +132,14 @@ dependencies = [ [[package]] name = "async-executor" -version = "1.8.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ae5ebefcc48e7452b4987947920dac9450be1110cadf34d1b8c116bdbaf97c" +checksum = "d7ebdfa2ebdab6b1760375fa7d6f382b9f486eac35fc994625a00e89280bdbb7" dependencies = [ - "async-lock 3.3.0", "async-task", "concurrent-queue", - "fastrand 2.0.1", - "futures-lite 2.2.0", + "fastrand 2.1.0", + "futures-lite 2.3.0", "slab", ] @@ -151,12 +149,12 @@ version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "async-channel 2.1.1", + "async-channel 2.3.1", "async-executor", - "async-io 2.3.1", - "async-lock 3.3.0", + "async-io 2.3.3", + "async-lock 3.4.0", "blocking", - "futures-lite 2.2.0", + "futures-lite 2.3.0", "once_cell", "tokio", ] @@ -183,18 +181,18 @@ dependencies = [ [[package]] name = "async-io" -version = "2.3.1" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f97ab0c5b00a7cdbe5a371b9a782ee7be1316095885c8a4ea1daf490eb0ef65" +checksum = "0d6baa8f0178795da0e71bc42c9e5d13261aac7ee549853162e66a241ba17964" dependencies = [ - "async-lock 3.3.0", + "async-lock 3.4.0", "cfg-if 1.0.0", "concurrent-queue", "futures-io", - "futures-lite 2.2.0", + "futures-lite 2.3.0", "parking", - "polling 3.3.2", - "rustix 0.38.30", + "polling 3.7.2", + "rustix 0.38.34", "slab", "tracing", "windows-sys 0.52.0", @@ -211,11 +209,11 @@ dependencies = [ [[package]] name = "async-lock" -version = "3.3.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 4.0.3", + "event-listener 5.3.1", "event-listener-strategy", "pin-project-lite", ] @@ -266,24 +264,24 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] name = "async-task" -version = "4.7.0" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbb36e985947064623dbd357f727af08ffd077f93d696782f3c56365fa2e2799" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.77" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] @@ -314,15 +312,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", @@ -384,13 +382,13 @@ checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" [[package]] name = "bigdecimal" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9324c8014cd04590682b34f1e9448d38f0674d0f7b2dc553331016ef0e4e9ebc" +checksum = "51d712318a27c7150326677b321a5fa91b55f6d9034ffd67f20319e147d40cee" dependencies = [ "autocfg", "libm", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-integer", "num-traits", ] @@ -412,15 +410,15 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.2" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bitmaps" -version = "3.2.0" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703642b98a00b3b90513279a8ede3fcfa479c126c5fb46e78f3051522f021403" +checksum = "a1d084b0137aaa901caf9f1e8b21daa6aa24d41cd806e111335541eff9683bd6" [[package]] name = "bitvec" @@ -454,55 +452,52 @@ dependencies = [ [[package]] name = "blocking" -version = "1.5.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ - "async-channel 2.1.1", - "async-lock 3.3.0", + "async-channel 2.3.1", "async-task", - "fastrand 2.0.1", "futures-io", - "futures-lite 2.2.0", + "futures-lite 2.3.0", "piper", - "tracing", ] [[package]] name = "borsh" -version = "1.3.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f58b559fd6448c6e2fd0adb5720cd98a2506594cafa4737ff98c396f3e82f667" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" dependencies = [ "borsh-derive", - "cfg_aliases", + "cfg_aliases 0.2.1", ] [[package]] name = "borsh-derive" -version = "1.3.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aadb5b6ccbd078890f6d7003694e33816e6b784358f18e15e7e6d9f065a57cd" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" dependencies = [ "once_cell", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", "syn_derive", ] [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytecheck" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6372023ac861f6e6dc89c8344a8f398fb42aaba2b5dbc649ca0c0e9dbcb627" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" dependencies = [ "bytecheck_derive", "ptr_meta", @@ -511,9 +506,9 @@ dependencies = [ [[package]] name = "bytecheck_derive" -version = "0.6.11" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" dependencies = [ "proc-macro2", "quote", @@ -528,9 +523,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "cardano-net" @@ -586,10 +581,10 @@ dependencies = [ "anyhow", "async-trait", "clap 3.2.25", - "cml-chain 5.3.1", - "cml-core 5.3.1", - "cml-crypto 5.3.1", - "cml-multi-era", + "cml-chain 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-core 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-crypto 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-multi-era 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "ctrlc", "dcspark-blockchain-source", "dcspark-core", @@ -636,12 +631,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] +checksum = "504bdec147f2cc13c8b57ed9401fd8a147cc66b67ad5cb241394244f2c947549" [[package]] name = "cfg-if" @@ -661,11 +653,17 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + [[package]] name = "chrono" -version = "0.4.33" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", @@ -673,7 +671,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] @@ -711,7 +709,7 @@ dependencies = [ "once_cell", "strsim 0.10.0", "termcolor", - "textwrap 0.16.0", + "textwrap 0.16.1", ] [[package]] @@ -753,8 +751,8 @@ dependencies = [ "hex", "itertools", "linked-hash-map", - "num 0.4.1", - "num-bigint 0.4.4", + "num 0.4.3", + "num-bigint 0.4.6", "num-integer", "rand", "schemars", @@ -774,16 +772,16 @@ dependencies = [ "base64 0.21.7", "bech32 0.7.3", "cbor_event", - "cml-core 5.3.1", - "cml-crypto 5.3.1", + "cml-core 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-crypto 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "derivative", "fraction", "getrandom", "hex", "itertools", "linked-hash-map", - "num 0.4.1", - "num-bigint 0.4.4", + "num 0.4.3", + "num-bigint 0.4.6", "num-integer", "rand", "schemars", @@ -794,6 +792,36 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "cml-chain" +version = "5.3.1" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=01081ee0a6381cfecf6562c78095e8fb9acf74e3#01081ee0a6381cfecf6562c78095e8fb9acf74e3" +dependencies = [ + "base64 0.21.7", + "bech32 0.7.3", + "cbor_event", + "chrono", + "cml-core 5.3.1 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=01081ee0a6381cfecf6562c78095e8fb9acf74e3)", + "cml-crypto 5.3.1 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=01081ee0a6381cfecf6562c78095e8fb9acf74e3)", + "derivative", + "fraction", + "getrandom", + "hex", + "itertools", + "linked-hash-map", + "noop_proc_macro", + "num 0.4.3", + "num-bigint 0.4.6", + "num-integer", + "rand", + "schemars", + "serde", + "serde-aux", + "serde_json", + "thiserror", + "unicode-segmentation", +] + [[package]] name = "cml-core" version = "0.1.0" @@ -810,7 +838,7 @@ dependencies = [ "hex", "itertools", "linked-hash-map", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-integer", "rand", "schemars", @@ -836,7 +864,7 @@ dependencies = [ "hex", "itertools", "linked-hash-map", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-integer", "rand", "schemars", @@ -846,6 +874,30 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "cml-core" +version = "5.3.1" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=01081ee0a6381cfecf6562c78095e8fb9acf74e3#01081ee0a6381cfecf6562c78095e8fb9acf74e3" +dependencies = [ + "base64 0.13.1", + "bech32 0.7.3", + "cbor_event", + "cfg-if 1.0.0", + "derivative", + "fraction", + "getrandom", + "hex", + "itertools", + "linked-hash-map", + "num-bigint 0.4.6", + "num-integer", + "rand", + "schemars", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "cml-crypto" version = "0.1.0" @@ -880,7 +932,30 @@ dependencies = [ "bech32 0.7.3", "cbor_event", "cfg-if 1.0.0", - "cml-core 5.3.1", + "cml-core 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cryptoxide", + "derivative", + "digest 0.9.0", + "ed25519-bip32", + "hex", + "rand", + "schemars", + "serde", + "serde_json", + "sha2 0.9.9", + "thiserror", +] + +[[package]] +name = "cml-crypto" +version = "5.3.1" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=01081ee0a6381cfecf6562c78095e8fb9acf74e3#01081ee0a6381cfecf6562c78095e8fb9acf74e3" +dependencies = [ + "base64 0.21.7", + "bech32 0.7.3", + "cbor_event", + "cfg-if 1.0.0", + "cml-core 5.3.1 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=01081ee0a6381cfecf6562c78095e8fb9acf74e3)", "cryptoxide", "derivative", "digest 0.9.0", @@ -902,9 +977,9 @@ checksum = "75cc5d28fb86d39504d36437f8a6607c94294ad4a27a57a47d7d2c2176df778e" dependencies = [ "bech32 0.7.3", "cbor_event", - "cml-chain 5.3.1", - "cml-core 5.3.1", - "cml-crypto 5.3.1", + "cml-chain 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-core 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-crypto 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "derivative", "hex", "linked-hash-map", @@ -914,11 +989,30 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "cml-multi-era" +version = "5.3.1" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=01081ee0a6381cfecf6562c78095e8fb9acf74e3#01081ee0a6381cfecf6562c78095e8fb9acf74e3" +dependencies = [ + "bech32 0.7.3", + "cbor_event", + "cml-chain 5.3.1 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=01081ee0a6381cfecf6562c78095e8fb9acf74e3)", + "cml-core 5.3.1 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=01081ee0a6381cfecf6562c78095e8fb9acf74e3)", + "cml-crypto 5.3.1 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=01081ee0a6381cfecf6562c78095e8fb9acf74e3)", + "derivative", + "hex", + "linked-hash-map", + "noop_proc_macro", + "schemars", + "serde", + "serde_json", +] + [[package]] name = "concurrent-queue" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] @@ -941,9 +1035,9 @@ dependencies = [ [[package]] name = "const_fn" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" +checksum = "373e9fafaa20882876db20562275ff58d50e0caa2590077fe7ce7bef90211d0d" [[package]] name = "core-foundation-sys" @@ -977,9 +1071,9 @@ checksum = "ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403" [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if 1.0.0", ] @@ -1014,9 +1108,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crossterm" @@ -1027,8 +1121,8 @@ dependencies = [ "bitflags 1.3.2", "crossterm_winapi", "libc", - "mio", - "parking_lot 0.12.1", + "mio 0.8.11", + "parking_lot 0.12.3", "signal-hook", "signal-hook-mio", "winapi", @@ -1071,9 +1165,9 @@ dependencies = [ [[package]] name = "ctrlc" -version = "3.4.2" +version = "3.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b467862cc8610ca6fc9a1532d7777cee0804e678ab45410897b9396495994a0b" +checksum = "672465ae37dc1bc6380a6547a8883d5dd397b0f1faaad4f265726cc7042a5345" dependencies = [ "nix", "windows-sys 0.52.0", @@ -1081,14 +1175,14 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" [[package]] name = "dcspark-blockchain-source" version = "0.1.0" -source = "git+https://github.com/dcSpark/dcspark-core.git?rev=b891d8757b598db2fc8013ba76414739e8ab1678#b891d8757b598db2fc8013ba76414739e8ab1678" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=98c21b8d6c4f72a1c1813eaec3b9ccf1ff67106e#98c21b8d6c4f72a1c1813eaec3b9ccf1ff67106e" dependencies = [ "anyhow", "async-trait", @@ -1096,9 +1190,9 @@ dependencies = [ "cardano-sdk", "cbored", "cbored-derive", - "cml-chain 5.3.1", - "cml-core 5.3.1", - "cml-multi-era", + "cml-chain 5.3.1 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=01081ee0a6381cfecf6562c78095e8fb9acf74e3)", + "cml-core 5.3.1 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=01081ee0a6381cfecf6562c78095e8fb9acf74e3)", + "cml-multi-era 5.3.1 (git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=01081ee0a6381cfecf6562c78095e8fb9acf74e3)", "cryptoxide", "dcspark-core", "deps", @@ -1113,7 +1207,7 @@ dependencies = [ [[package]] name = "dcspark-core" version = "0.1.0" -source = "git+https://github.com/dcSpark/dcspark-core.git?rev=b891d8757b598db2fc8013ba76414739e8ab1678#b891d8757b598db2fc8013ba76414739e8ab1678" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=98c21b8d6c4f72a1c1813eaec3b9ccf1ff67106e#98c21b8d6c4f72a1c1813eaec3b9ccf1ff67106e" dependencies = [ "anyhow", "async-trait", @@ -1130,7 +1224,7 @@ dependencies = [ [[package]] name = "deps" version = "0.1.0" -source = "git+https://github.com/dcSpark/dcspark-core.git?rev=b891d8757b598db2fc8013ba76414739e8ab1678#b891d8757b598db2fc8013ba76414739e8ab1678" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=98c21b8d6c4f72a1c1813eaec3b9ccf1ff67106e#98c21b8d6c4f72a1c1813eaec3b9ccf1ff67106e" dependencies = [ "bigdecimal", "serde_json", @@ -1215,9 +1309,9 @@ checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" [[package]] name = "dyn-clone" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "ed25519-bip32" @@ -1230,9 +1324,9 @@ dependencies = [ [[package]] name = "either" -version = "1.9.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "entity" @@ -1275,9 +1369,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1291,9 +1385,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "4.0.3" +version = "5.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" dependencies = [ "concurrent-queue", "parking", @@ -1302,11 +1396,11 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.4.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" dependencies = [ - "event-listener 4.0.3", + "event-listener 5.3.1", "pin-project-lite", ] @@ -1321,15 +1415,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" - -[[package]] -name = "finl_unicode" -version = "1.2.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "fnv" @@ -1448,11 +1536,11 @@ dependencies = [ [[package]] name = "futures-lite" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445ba825b27408685aaecefd65178908c36c6e96aaf6d8599419d46e624192ba" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" dependencies = [ - "fastrand 2.0.1", + "fastrand 2.1.0", "futures-core", "futures-io", "parking", @@ -1467,7 +1555,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] @@ -1521,9 +1609,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if 1.0.0", "js-sys", @@ -1540,14 +1628,14 @@ checksum = "b0e085ded9f1267c32176b40921b9754c474f7dd96f7e808d4a982e48aa1e854" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] name = "gimli" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "gloo-timers" @@ -1563,9 +1651,9 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" [[package]] name = "hashbrown" @@ -1587,9 +1675,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "hashlink" @@ -1629,9 +1717,15 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.4" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "hex" @@ -1676,9 +1770,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "iana-time-zone" -version = "0.1.59" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -1752,19 +1846,19 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433de089bd45971eecf4668ee0ee8f4cec17db4f8bd8f7bc3197a6ce37aa7d9b" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", ] [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if 1.0.0", ] @@ -1785,7 +1879,7 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.4", + "hermit-abi 0.3.9", "libc", "windows-sys 0.48.0", ] @@ -1796,7 +1890,7 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.5.5", + "socket2 0.5.7", "widestring", "windows-sys 0.48.0", "winreg", @@ -1810,12 +1904,12 @@ checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "is-terminal" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ - "hermit-abi 0.3.4", - "rustix 0.38.30", + "hermit-abi 0.3.9", + "libc", "windows-sys 0.52.0", ] @@ -1830,9 +1924,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" @@ -1854,15 +1948,15 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.152" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13e3bf6590cbc649f4d1a3eefc9d5d6eb746f5200ffb04e5e142700b8faa56e7" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] name = "libm" @@ -1872,13 +1966,12 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libredox" -version = "0.0.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "libc", - "redox_syscall 0.4.1", ] [[package]] @@ -1895,15 +1988,15 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -1911,9 +2004,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" dependencies = [ "value-bag", ] @@ -1965,9 +2058,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "merge" @@ -2028,18 +2121,18 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", @@ -2047,6 +2140,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mio" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "wasi", + "windows-sys 0.52.0", +] + [[package]] name = "mopa" version = "0.2.2" @@ -2056,7 +2161,7 @@ checksum = "a785740271256c230f57462d3b83e52f998433a7062fc18f96d5999474a9f915" [[package]] name = "multiverse" version = "0.1.0" -source = "git+https://github.com/dcSpark/dcspark-core.git?rev=b891d8757b598db2fc8013ba76414739e8ab1678#b891d8757b598db2fc8013ba76414739e8ab1678" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=98c21b8d6c4f72a1c1813eaec3b9ccf1ff67106e#98c21b8d6c4f72a1c1813eaec3b9ccf1ff67106e" dependencies = [ "dcspark-core", "deps", @@ -2085,12 +2190,13 @@ dependencies = [ [[package]] name = "nix" -version = "0.27.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053" +checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "cfg-if 1.0.0", + "cfg_aliases 0.1.1", "libc", ] @@ -2104,6 +2210,12 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + [[package]] name = "nu-ansi-term" version = "0.46.0" @@ -2130,15 +2242,15 @@ dependencies = [ [[package]] name = "num" -version = "0.4.1" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ - "num-bigint 0.4.4", - "num-complex 0.4.4", + "num-bigint 0.4.6", + "num-complex 0.4.6", "num-integer", "num-iter", - "num-rational 0.4.1", + "num-rational 0.4.2", "num-traits", ] @@ -2166,11 +2278,10 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ - "autocfg", "num-integer", "num-traits", ] @@ -2187,28 +2298,33 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.43" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -2229,40 +2345,29 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", - "num-bigint 0.4.4", + "num-bigint 0.4.6", "num-integer", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.4", - "libc", -] - [[package]] name = "object" -version = "0.32.2" +version = "0.36.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" dependencies = [ "memchr", ] @@ -2275,9 +2380,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "opaque-debug" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "os_str_bytes" @@ -2469,12 +2574,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", - "parking_lot_core 0.9.9", + "parking_lot_core 0.9.10", ] [[package]] @@ -2493,22 +2598,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.4.1", + "redox_syscall 0.5.3", "smallvec", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pathdiff" @@ -2524,9 +2629,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -2536,12 +2641,12 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "ae1d5c74c9876f070d3e8fd503d748c7d974c3e48da8f41350fa5222ef9b4391" dependencies = [ "atomic-waker", - "fastrand 2.0.1", + "fastrand 2.1.0", "futures-io", ] @@ -2555,7 +2660,7 @@ dependencies = [ "strum 0.25.0", "strum_macros 0.25.3", "tasks", - "toml 0.8.8", + "toml 0.8.19", "tracing", "tracing-subscriber", ] @@ -2578,14 +2683,15 @@ dependencies = [ [[package]] name = "polling" -version = "3.3.2" +version = "3.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "545c980a3880efd47b2e262f6a4bb6daad6555cf3367aa9c4e52895f69537a41" +checksum = "a3ed00ed3fbf728b5816498ecd316d1716eecaced9c0c8d2c5a6740ca214985b" dependencies = [ "cfg-if 1.0.0", "concurrent-queue", + "hermit-abi 0.4.0", "pin-project-lite", - "rustix 0.38.30", + "rustix 0.38.34", "tracing", "windows-sys 0.52.0", ] @@ -2598,9 +2704,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro-crate" @@ -2608,7 +2717,7 @@ version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" dependencies = [ - "toml_edit", + "toml_edit 0.21.1", ] [[package]] @@ -2643,24 +2752,24 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.78" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "prometheus" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" dependencies = [ "cfg-if 1.0.0", "fnv", "lazy_static", "memchr", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "thiserror", ] @@ -2704,9 +2813,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -2758,9 +2867,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -2794,11 +2903,20 @@ dependencies = [ "bitflags 1.3.2", ] +[[package]] +name = "redox_syscall" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", "libredox", @@ -2807,14 +2925,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.3" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.5", - "regex-syntax 0.8.2", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -2828,13 +2946,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.5" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.2", + "regex-syntax 0.8.4", ] [[package]] @@ -2845,15 +2963,15 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "rend" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" dependencies = [ "bytecheck", ] @@ -2863,10 +2981,10 @@ name = "reparse" version = "0.1.0" dependencies = [ "anyhow", - "cml-chain 5.3.1", - "cml-core 5.3.1", - "cml-crypto 5.3.1", - "cml-multi-era", + "cml-chain 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-core 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-crypto 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-multi-era 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "dotenv", "entity", "futures", @@ -2904,9 +3022,9 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.43" +version = "0.7.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "527a97cdfef66f65998b5f3b637c26f5a5ec09cc52a3f9932313ac645f4190f5" +checksum = "5cba464629b3394fc4dbc6f940ff8f5b4ff5c7aef40f29166fd4ad12acbc99c0" dependencies = [ "bitvec", "bytecheck", @@ -2917,14 +3035,14 @@ dependencies = [ "rkyv_derive", "seahash", "tinyvec", - "uuid 1.7.0", + "uuid 1.10.0", ] [[package]] name = "rkyv_derive" -version = "0.7.43" +version = "0.7.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5c462a1328c8e67e4d6dbad1eb0355dd43e8ab432c6e227a43657f16ade5033" +checksum = "a7dddfff8de25e6f62b9d64e6e432bf1c6736c57d20323e15ee10435fbda7c65" dependencies = [ "proc-macro2", "quote", @@ -2947,9 +3065,9 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.33.1" +version = "1.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06676aec5ccb8fc1da723cc8c0f9a46549f21ebb8753d3915c6c41db1e7f1dc4" +checksum = "1790d1c4c0ca81211399e0e0af16333276f375209e71a37b67698a373db5b47a" dependencies = [ "arrayvec 0.7.4", "borsh", @@ -2963,9 +3081,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc_version" @@ -2992,14 +3110,14 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.30" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322394588aaf33c24007e8bb3238ee3e4c5c09c084ab32bc73890b99ff326bca" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.4.2", + "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys 0.4.13", + "linux-raw-sys 0.4.14", "windows-sys 0.52.0", ] @@ -3018,21 +3136,21 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "schemars" -version = "0.8.16" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" dependencies = [ "dyn-clone", "schemars_derive", @@ -3042,14 +3160,14 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.16" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 1.0.109", + "syn 2.0.72", ] [[package]] @@ -3217,62 +3335,74 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.196" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] +[[package]] +name = "serde-aux" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d2e8bfba469d06512e11e3311d4d051a4a387a5b42d010404fecf3200321c95" +dependencies = [ + "chrono", + "serde", + "serde_json", +] + [[package]] name = "serde_derive" -version = "1.0.196" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] name = "serde_derive_internals" -version = "0.26.0" +version = "0.29.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.72", ] [[package]] name = "serde_json" -version = "1.0.113" +version = "1.0.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69801b70b1c3dac963ecb03a364ba0ceda9cf60c71cfe475e99864759c8b8a79" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] [[package]] name = "serde_spanned" -version = "0.6.5" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ "serde", ] [[package]] name = "serde_yaml" -version = "0.9.31" +version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adf8a49373e98a4c5f0ceb5d05aa7c648d75f63774981ed95b7c7443bbd50c6e" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.2.1", + "indexmap 2.3.0", "itoa", "ryu", "serde", @@ -3301,9 +3431,9 @@ dependencies = [ [[package]] name = "sha1_smol" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" [[package]] name = "sha2" @@ -3374,20 +3504,20 @@ dependencies = [ [[package]] name = "signal-hook-mio" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" dependencies = [ "libc", - "mio", + "mio 0.8.11", "signal-hook", ] [[package]] name = "signal-hook-registry" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" dependencies = [ "libc", ] @@ -3425,9 +3555,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" @@ -3441,12 +3571,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -3624,13 +3754,13 @@ checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" [[package]] name = "stringprep" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" dependencies = [ - "finl_unicode", "unicode-bidi", "unicode-normalization", + "unicode-properties", ] [[package]] @@ -3683,14 +3813,14 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -3705,9 +3835,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", @@ -3723,7 +3853,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] @@ -3752,10 +3882,10 @@ dependencies = [ "anyhow", "cardano-projected-nft", "cfg-if 1.0.0", - "cml-chain 5.3.1", - "cml-core 5.3.1", - "cml-crypto 5.3.1", - "cml-multi-era", + "cml-chain 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-core 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-crypto 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "cml-multi-era 5.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "cryptoxide", "entity", "hex", @@ -3769,7 +3899,7 @@ dependencies = [ "serde_json", "shred", "tokio", - "toml 0.8.8", + "toml 0.8.19", "tracing", "tracing-subscriber", "urlencoding", @@ -3795,35 +3925,35 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] name = "thread_local" -version = "1.1.7" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ "cfg-if 1.0.0", "once_cell", @@ -3846,16 +3976,17 @@ dependencies = [ [[package]] name = "time" -version = "0.3.31" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", + "num-conv", "powerfmt", "serde", "time-core", - "time-macros 0.2.16", + "time-macros 0.2.18", ] [[package]] @@ -3876,10 +4007,11 @@ dependencies = [ [[package]] name = "time-macros" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ + "num-conv", "time-core", ] @@ -3905,15 +4037,15 @@ dependencies = [ "ascii", "chunked_transfer", "log", - "time 0.3.31", + "time 0.3.36", "url", ] [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -3926,32 +4058,31 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.1" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" dependencies = [ "backtrace", "bytes", "libc", - "mio", - "num_cpus", - "parking_lot 0.12.1", + "mio 1.0.1", + "parking_lot 0.12.3", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.5", + "socket2 0.5.7", "tokio-macros", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "tokio-macros" -version = "2.2.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] @@ -3967,9 +4098,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", @@ -3987,37 +4118,48 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.8" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a195ec8c9da26928f773888e0742ca3ca1040c6cd859c919c9f59c1954ab35" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ - "indexmap 2.2.1", + "indexmap 2.3.0", "serde", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_edit 0.22.20", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] [[package]] name = "toml_edit" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" +checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ - "indexmap 2.2.1", + "indexmap 2.3.0", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +dependencies = [ + "indexmap 2.3.0", "serde", "serde_spanned", "toml_datetime", - "winnow", + "winnow 0.6.18", ] [[package]] @@ -4040,7 +4182,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.72", ] [[package]] @@ -4119,7 +4261,7 @@ dependencies = [ "lazy_static", "log", "lru-cache", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "resolv-conf", "smallvec", "thiserror", @@ -4129,9 +4271,9 @@ dependencies = [ [[package]] name = "tynm" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc08441e69e42a4695d4dde68282419a9fc8379723aa7e51a67c52cedd992069" +checksum = "bd30d05e69d1478e13fe3e7a853409cfec82cebc2cf9b8d613b3c6b0081781ed" dependencies = [ "nom", ] @@ -4156,18 +4298,24 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-properties" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291" + [[package]] name = "unicode-segmentation" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-truncate" @@ -4180,9 +4328,9 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode_categories" @@ -4192,9 +4340,9 @@ checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" [[package]] name = "unsafe-libyaml" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" [[package]] name = "untrusted" @@ -4204,9 +4352,9 @@ checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna 0.5.0", @@ -4231,9 +4379,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.7.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f00cc9702ca12d3c81455259621e676d0f7251cec66a21e98fe2e9a37db93b2a" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" [[package]] name = "valuable" @@ -4243,9 +4391,9 @@ checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" -version = "1.7.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "126e423afe2dd9ac52142e7e9d5ce4135d7e13776c529d27fd6bc49f19e3280b" +checksum = "5a84c137d37ab0142f0f2ddfe332651fdbf252e7b7dbb4e67b6c1f1b2e925101" [[package]] name = "vec_map" @@ -4255,15 +4403,15 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "waker-fn" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" +checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7" [[package]] name = "wasi" @@ -4271,6 +4419,12 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + [[package]] name = "wasm-bindgen" version = "0.2.83" @@ -4370,19 +4524,20 @@ dependencies = [ [[package]] name = "whoami" -version = "1.4.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" +checksum = "a44ab49fad634e88f55bf8f9bb3abd2f27d7204172a112c7c9987e01c1c94ea9" dependencies = [ - "wasm-bindgen", + "redox_syscall 0.4.1", + "wasite", "web-sys", ] [[package]] name = "widestring" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" [[package]] name = "winapi" @@ -4402,11 +4557,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -4421,7 +4576,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] @@ -4439,7 +4594,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -4459,17 +4623,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -4480,9 +4645,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -4492,9 +4657,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -4504,9 +4669,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -4516,9 +4687,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -4528,9 +4699,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -4540,9 +4711,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -4552,15 +4723,24 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.5.35" +version = "0.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1931d78a9c73861da0134f453bb1f790ce49b2e30eba8410b4b79bac72b46a2d" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -4592,3 +4772,24 @@ checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" dependencies = [ "linked-hash-map", ] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.72", +] From 93043cd85ec392637abf9d45b455ed841d05240e Mon Sep 17 00:00:00 2001 From: rooooooooob Date: Tue, 10 Sep 2024 10:18:39 -0700 Subject: [PATCH 05/12] fixes after github merge --- Cargo.lock | 4697 +++++++++++++++++++++++++++++++++++++++++++ indexer/src/main.rs | 3 + 2 files changed, 4700 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index e69de29b..d38ec075 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -0,0 +1,4697 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" + +[[package]] +name = "addr2line" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "aliasable" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anyhow" +version = "1.0.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10f00e1f6e58a40e807377c75c6a7f97bf9044fab57816f2414e6f5f4499d7b8" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "ascii" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" + +[[package]] +name = "async-attributes" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3203e79f4dd9bdda415ed03cf14dae5a2bf775c683a00f94e9cd1faf0f596e5" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-executor" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" +dependencies = [ + "async-channel 2.3.1", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "once_cell", + "tokio", +] + +[[package]] +name = "async-io" +version = "2.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" +dependencies = [ + "async-lock", + "cfg-if 1.0.0", + "concurrent-queue", + "futures-io", + "futures-lite", + "parking", + "polling", + "rustix", + "slab", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "async-lock" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" +dependencies = [ + "event-listener 5.3.1", + "event-listener-strategy", + "pin-project-lite", +] + +[[package]] +name = "async-std" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615" +dependencies = [ + "async-attributes", + "async-channel 1.9.0", + "async-global-executor", + "async-io", + "async-lock", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "async-task" +version = "4.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" + +[[package]] +name = "async-trait" +version = "0.1.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "atoi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616896e05fc0e2649463a93a15183c6a16bf03413a7af88ef1285ddedfa9cda5" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi 0.1.19", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if 1.0.0", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets 0.52.6", +] + +[[package]] +name = "bae" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33b8de67cc41132507eeece2584804efcb15f85ba516e34c944b7667f480397a" +dependencies = [ + "heck 0.3.3", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + +[[package]] +name = "base58" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "bech32" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dabbe35f96fb9507f7330793dc490461b2962659ac5d427181e451a623751d1" + +[[package]] +name = "bech32" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d86b93f97252c47b41663388e6d155714a9d0c398b99f1005cbc5f978b29f445" + +[[package]] +name = "bigdecimal" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d712318a27c7150326677b321a5fa91b55f6d9034ffd67f20319e147d40cee" +dependencies = [ + "autocfg", + "libm", + "num-bigint 0.4.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "bip39-dict" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29f1d227703899f704884cb6dfe1dc6a1bd447ea9f91418539989618ebf01685" +dependencies = [ + "cryptoxide", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" + +[[package]] +name = "bitmaps" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d084b0137aaa901caf9f1e8b21daa6aa24d41cd806e111335541eff9683bd6" + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "blocking" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" +dependencies = [ + "async-channel 2.3.1", + "async-task", + "futures-io", + "futures-lite", + "piper", +] + +[[package]] +name = "borsh" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.77", + "syn_derive", +] + +[[package]] +name = "bumpalo" +version = "3.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" + +[[package]] +name = "bytecheck" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" + +[[package]] +name = "cardano-net" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e272ed83035e509fa204c1cf59833c9384cbd4d15d4e303a5abd529b1bd024" +dependencies = [ + "cardano-sdk", + "cbored", + "cryptoxide", + "thiserror", + "tokio", + "tracing", + "trust-dns-resolver", +] + +[[package]] +name = "cardano-projected-nft" +version = "0.1.0" +source = "git+https://github.com/dcSpark/projected-nft-whirlpool.git?rev=13f81e8666743fefd14c5e1affb1cd828d8c473b#13f81e8666743fefd14c5e1affb1cd828d8c473b" +dependencies = [ + "cbor_event", + "cml-chain 0.1.0", + "cml-core 0.1.0", + "cml-crypto 0.1.0", + "hex", + "schemars", + "serde", + "serde_derive", + "serde_json", +] + +[[package]] +name = "cardano-sdk" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67795439ca871ba2b0d67f7805248f00fd0e6f6b40014a07a9693568e9c54a6" +dependencies = [ + "bech32 0.9.1", + "bip39-dict", + "cbored", + "cryptoxide", + "ed25519-bip32", + "hex", + "strum 0.24.1", + "thiserror", +] + +[[package]] +name = "carp" +version = "3.2.1" +dependencies = [ + "anyhow", + "async-trait", + "clap 3.2.25", + "cml-chain 6.0.1", + "cml-core 6.0.1", + "cml-crypto 6.0.1", + "cml-multi-era 6.0.1", + "ctrlc", + "dcspark-blockchain-source", + "dcspark-core", + "dotenv", + "entity", + "hex", + "migration", + "multiverse", + "oura", + "serde", + "serde_json", + "serde_yaml", + "tasks", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "cbor_event" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "089a0261d1bc59e54e8e11860031efd88593f0e61b921172c474f1f38c2f2d3c" + +[[package]] +name = "cbored" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54198fe95600b062b9f0129b871b8e8df90b33a41cf2ccbae64b4ae08dbba9c1" +dependencies = [ + "cbored-derive", +] + +[[package]] +name = "cbored-derive" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b6c2917d304b928214344fdbda3cfe5ccaea066ef3fc047e6fabb65cce982d1" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "cc" +version = "1.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" +dependencies = [ + "shlex", +] + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits", + "serde", + "wasm-bindgen", + "windows-targets 0.52.6", +] + +[[package]] +name = "chunked_transfer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e4de3bc4ea267985becf712dc6d9eed8b04c953b3fcfb339ebc87acd9804901" + +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "ansi_term", + "atty", + "bitflags 1.3.2", + "strsim 0.8.0", + "textwrap 0.11.0", + "unicode-width", + "vec_map", +] + +[[package]] +name = "clap" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" +dependencies = [ + "atty", + "bitflags 1.3.2", + "clap_derive", + "clap_lex", + "indexmap 1.9.3", + "once_cell", + "strsim 0.10.0", + "termcolor", + "textwrap 0.16.1", +] + +[[package]] +name = "clap_derive" +version = "3.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" +dependencies = [ + "heck 0.4.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "cml-chain" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d07a94cfb4c3837a0cc97323ec281cc6ede491279f8d80faf69005902023807d" +dependencies = [ + "base64 0.21.7", + "bech32 0.7.3", + "cbor_event", + "cml-core 0.1.0", + "cml-crypto 0.1.0", + "derivative", + "fraction", + "getrandom", + "hex", + "itertools 0.10.5", + "linked-hash-map", + "num 0.4.3", + "num-bigint 0.4.6", + "num-integer", + "rand", + "schemars", + "serde", + "serde_json", + "thiserror", + "unicode-segmentation", + "wasm-bindgen", +] + +[[package]] +name = "cml-chain" +version = "6.0.0" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98#25ff92b4f6cf0f5dc98f0df3ab812a23af467e98" +dependencies = [ + "base64 0.21.7", + "bech32 0.7.3", + "cbor_event", + "chrono", + "cml-core 6.0.0", + "cml-crypto 6.0.0", + "derivative", + "fraction", + "getrandom", + "hex", + "itertools 0.10.5", + "linked-hash-map", + "noop_proc_macro", + "num 0.4.3", + "num-bigint 0.4.6", + "num-integer", + "rand", + "schemars", + "serde", + "serde-aux", + "serde_json", + "thiserror", + "unicode-segmentation", +] + +[[package]] +name = "cml-chain" +version = "6.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "148c24010a72a0d8cb4f65ddfe9e38bc3a31ddb5699a7b7ca90408d9c858aaa5" +dependencies = [ + "base64 0.21.7", + "bech32 0.7.3", + "cbor_event", + "chrono", + "cml-core 6.0.1", + "cml-crypto 6.0.1", + "derivative", + "fraction", + "getrandom", + "hex", + "itertools 0.10.5", + "linked-hash-map", + "noop_proc_macro", + "num 0.4.3", + "num-bigint 0.4.6", + "num-integer", + "rand", + "schemars", + "serde", + "serde-aux", + "serde_json", + "thiserror", + "unicode-segmentation", +] + +[[package]] +name = "cml-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34899789d0bf57c079c0a77f7f6bdd6428d52bdeb1ec466b132802dbd46ebc15" +dependencies = [ + "base64 0.13.1", + "bech32 0.7.3", + "cbor_event", + "cfg-if 1.0.0", + "derivative", + "fraction", + "getrandom", + "hex", + "itertools 0.10.5", + "linked-hash-map", + "num-bigint 0.4.6", + "num-integer", + "rand", + "schemars", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", +] + +[[package]] +name = "cml-core" +version = "6.0.0" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98#25ff92b4f6cf0f5dc98f0df3ab812a23af467e98" +dependencies = [ + "base64 0.13.1", + "bech32 0.7.3", + "cbor_event", + "cfg-if 1.0.0", + "derivative", + "fraction", + "getrandom", + "hex", + "itertools 0.10.5", + "linked-hash-map", + "num-bigint 0.4.6", + "num-integer", + "rand", + "schemars", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cml-core" +version = "6.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0275489215ce6de487151721b7fe79c52a52d0d9e8d75fd7609b7e818b85b4a0" +dependencies = [ + "base64 0.13.1", + "bech32 0.7.3", + "cbor_event", + "cfg-if 1.0.0", + "derivative", + "fraction", + "getrandom", + "hex", + "itertools 0.10.5", + "linked-hash-map", + "num-bigint 0.4.6", + "num-integer", + "rand", + "schemars", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cml-crypto" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02775162430e97004d49882d64a095b055dd28052bc88fc8978e7155ee7ec603" +dependencies = [ + "base64 0.21.7", + "bech32 0.7.3", + "cbor_event", + "cfg-if 1.0.0", + "cml-core 0.1.0", + "cryptoxide", + "derivative", + "digest 0.9.0", + "ed25519-bip32", + "hex", + "rand", + "schemars", + "serde", + "serde_json", + "sha2 0.9.9", + "thiserror", +] + +[[package]] +name = "cml-crypto" +version = "6.0.0" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98#25ff92b4f6cf0f5dc98f0df3ab812a23af467e98" +dependencies = [ + "base64 0.21.7", + "bech32 0.7.3", + "cbor_event", + "cfg-if 1.0.0", + "cml-core 6.0.0", + "cryptoxide", + "derivative", + "digest 0.9.0", + "ed25519-bip32", + "hex", + "rand", + "schemars", + "serde", + "serde_json", + "sha2 0.9.9", + "thiserror", +] + +[[package]] +name = "cml-crypto" +version = "6.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bebc51fce7179a5a272a589fb41bd5a8c029b204182640d651d4beb06e65fd64" +dependencies = [ + "base64 0.21.7", + "bech32 0.7.3", + "cbor_event", + "cfg-if 1.0.0", + "cml-core 6.0.1", + "cryptoxide", + "derivative", + "digest 0.9.0", + "ed25519-bip32", + "hex", + "rand", + "schemars", + "serde", + "serde_json", + "sha2 0.9.9", + "thiserror", +] + +[[package]] +name = "cml-multi-era" +version = "6.0.0" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=25ff92b4f6cf0f5dc98f0df3ab812a23af467e98#25ff92b4f6cf0f5dc98f0df3ab812a23af467e98" +dependencies = [ + "bech32 0.7.3", + "cbor_event", + "cml-chain 6.0.0", + "cml-core 6.0.0", + "cml-crypto 6.0.0", + "derivative", + "hex", + "linked-hash-map", + "noop_proc_macro", + "schemars", + "serde", + "serde_json", +] + +[[package]] +name = "cml-multi-era" +version = "6.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f250aedb4c53625d6c3c5cb80340c7a4b78383821b97854097eab7a84c8e79" +dependencies = [ + "bech32 0.7.3", + "cbor_event", + "cml-chain 6.0.1", + "cml-core 6.0.1", + "cml-crypto 6.0.1", + "derivative", + "hex", + "linked-hash-map", + "noop_proc_macro", + "schemars", + "serde", + "serde_json", +] + +[[package]] +name = "concurrent-queue" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "config" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23738e11972c7643e4ec947840fc463b6a571afcd3e735bdfce7d03c7a784aca" +dependencies = [ + "async-trait", + "lazy_static", + "nom", + "pathdiff", + "serde", + "serde_json", + "toml 0.5.11", + "yaml-rust", +] + +[[package]] +name = "const_fn" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373e9fafaa20882876db20562275ff58d50e0caa2590077fe7ce7bef90211d0d" + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "cpufeatures" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +dependencies = [ + "libc", +] + +[[package]] +name = "crc" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49fc9a695bca7f35f5f4c15cddc84415f66a74ea78eef08e90c5024f2b540e23" +dependencies = [ + "crc-catalog 1.1.1", +] + +[[package]] +name = "crc" +version = "3.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69e6e4d7b33a94f0991c26729976b10ebde1d34c3ee82408fb536164fa10d636" +dependencies = [ + "crc-catalog 2.4.0", +] + +[[package]] +name = "crc-catalog" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccaeedb56da03b09f598226e25e80088cb4cd25f316e6e4df7d695f0feeb1403" + +[[package]] +name = "crc-catalog" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" + +[[package]] +name = "crc32fast" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crossterm" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64e6c0fbe2c17357405f7c758c1ef960fce08bdfb2c03d88d2a18d7e09c4b67" +dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi", + "libc", + "mio 0.8.11", + "parking_lot 0.12.3", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cryptoxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382ce8820a5bb815055d3553a610e8cb542b2d767bbacea99038afda96cd760d" + +[[package]] +name = "ctor" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d2301688392eb071b0bf1a37be05c469d3cc4dbbd95df672fe28ab021e6a096" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ctrlc" +version = "3.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" +dependencies = [ + "nix", + "windows-sys 0.59.0", +] + +[[package]] +name = "data-encoding" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + +[[package]] +name = "dcspark-blockchain-source" +version = "0.1.0" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=176ea4830d7c3d00eca1c0a4246e9b364b889851#176ea4830d7c3d00eca1c0a4246e9b364b889851" +dependencies = [ + "anyhow", + "async-trait", + "cardano-net", + "cardano-sdk", + "cbored", + "cbored-derive", + "cml-chain 6.0.0", + "cml-core 6.0.0", + "cml-multi-era 6.0.0", + "cryptoxide", + "dcspark-core", + "deps", + "hex", + "multiverse", + "serde", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "dcspark-core" +version = "0.1.0" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=176ea4830d7c3d00eca1c0a4246e9b364b889851#176ea4830d7c3d00eca1c0a4246e9b364b889851" +dependencies = [ + "anyhow", + "async-trait", + "bech32 0.9.1", + "cryptoxide", + "deps", + "hex", + "imbl", + "rand", + "serde", + "thiserror", +] + +[[package]] +name = "deps" +version = "0.1.0" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=176ea4830d7c3d00eca1c0a4246e9b364b889851#176ea4830d7c3d00eca1c0a4246e9b364b889851" +dependencies = [ + "bigdecimal", + "serde_json", +] + +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "4.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + +[[package]] +name = "dot" +version = "0.1.4-dev" +source = "git+https://github.com/dcSpark/dot-rust?branch=subgraph#ae56f3bfe74e6743f0ee27f96c5f22395ab75993" + +[[package]] +name = "dotenv" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" + +[[package]] +name = "dyn-clone" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" + +[[package]] +name = "ed25519-bip32" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb588f93c0d91b2f668849fd6d030cddb0b2e31f105963be189da5acdf492a21" +dependencies = [ + "cryptoxide", +] + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "entity" +version = "0.0.0" +dependencies = [ + "sea-orm", + "serde", +] + +[[package]] +name = "enum-as-inner" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "env_logger" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580" +dependencies = [ + "humantime", + "is-terminal", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener 5.3.1", + "pin-project-lite", +] + +[[package]] +name = "fastrand" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "fraction" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb65943183b6b3cbf00f64c181e8178217e30194381b150e4f87ec59864c803" +dependencies = [ + "lazy_static", + "num 0.2.1", +] + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-intrusive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a604f7a68fbf8103337523b1fadc8ade7361ee3f112f7c680ad179651616aed5" +dependencies = [ + "futures-core", + "lock_api", + "parking_lot 0.11.2", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-lite" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "parking", + "pin-project-lite", +] + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi", + "wasm-bindgen", +] + +[[package]] +name = "ghost" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0e085ded9f1267c32176b40921b9754c474f7dd96f7e808d4a982e48aa1e854" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "gimli" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" + +[[package]] +name = "gloo-timers" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "half" +version = "1.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + +[[package]] +name = "hashbrown" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hashlink" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7249a3129cbc1ffccd74857f81464a323a152173cdb134e0fd81bc803b29facf" +dependencies = [ + "hashbrown 0.11.2", +] + +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +dependencies = [ + "unicode-segmentation", +] + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi", +] + +[[package]] +name = "humantime" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" + +[[package]] +name = "iana-time-zone" +version = "0.1.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "idna" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "imbl" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978d142c8028edf52095703af2fad11d6f611af1246685725d6b850634647085" +dependencies = [ + "bitmaps", + "imbl-sized-chunks", + "rand_core", + "rand_xoshiro", + "version_check", +] + +[[package]] +name = "imbl-sized-chunks" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "144006fb58ed787dcae3f54575ff4349755b00ccc99f4b4873860b654be1ed63" +dependencies = [ + "bitmaps", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "indexmap" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" +dependencies = [ + "equivalent", + "hashbrown 0.14.5", +] + +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "inventory" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84344c6e0b90a9e2b6f3f9abe5cc74402684e348df7b32adca28747e0cef091a" +dependencies = [ + "ctor", + "ghost", +] + +[[package]] +name = "ipconfig" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" +dependencies = [ + "socket2", + "widestring", + "windows-sys 0.48.0", + "winreg", +] + +[[package]] +name = "ipnet" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" + +[[package]] +name = "is-terminal" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +dependencies = [ + "hermit-abi 0.4.0", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "libc" +version = "0.2.158" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" + +[[package]] +name = "libm" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.6.0", + "libc", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +dependencies = [ + "value-bag", +] + +[[package]] +name = "lru-cache" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "markdown-gen" +version = "1.2.1" +source = "git+https://github.com/dcSpark/markdown-gen-rs?branch=hbina-add-ability-to-write-raw-str#06342df71812111825ab8030b77fe8726e082252" + +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "md-5" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" +dependencies = [ + "cfg-if 1.0.0", + "digest 0.10.7", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "merge" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10bbef93abb1da61525bbc45eeaff6473a41907d19f8f9aa5168d214e10693e9" +dependencies = [ + "merge_derive", + "num-traits", +] + +[[package]] +name = "merge_derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "209d075476da2e63b4b29e72a2ef627b840589588e71400a25e3565c4f849d07" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "migration" +version = "0.1.0" +dependencies = [ + "entity", + "sea-schema", +] + +[[package]] +name = "minicbor" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7005aaf257a59ff4de471a9d5538ec868a21586534fff7f85dd97d4043a6139" +dependencies = [ + "half", + "minicbor-derive", +] + +[[package]] +name = "minicbor" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d15f4203d71fdf90903c2696e55426ac97a363c67b218488a73b534ce7aca10" +dependencies = [ + "half", + "minicbor-derive", +] + +[[package]] +name = "minicbor-derive" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1154809406efdb7982841adb6311b3d095b46f78342dd646736122fe6b19e267" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "log", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "mio" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +dependencies = [ + "hermit-abi 0.3.9", + "libc", + "wasi", + "windows-sys 0.52.0", +] + +[[package]] +name = "mopa" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a785740271256c230f57462d3b83e52f998433a7062fc18f96d5999474a9f915" + +[[package]] +name = "multiverse" +version = "0.1.0" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=176ea4830d7c3d00eca1c0a4246e9b364b889851#176ea4830d7c3d00eca1c0a4246e9b364b889851" +dependencies = [ + "dcspark-core", + "deps", + "serde", + "sled", + "thiserror", + "tracing", +] + +[[package]] +name = "nameof" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce8b389a86cabeb0d8b33a61e60f3cbb4de38914342fe274e69111f3b5d9c44" + +[[package]] +name = "net2" +version = "0.2.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b13b648036a2339d06de780866fbdfda0dde886de7b3af2ddeba8b14f4ee34ac" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "winapi", +] + +[[package]] +name = "nix" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" +dependencies = [ + "bitflags 2.6.0", + "cfg-if 1.0.0", + "cfg_aliases", + "libc", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "noop_proc_macro" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8536030f9fea7127f841b45bb6243b27255787fb4eb83958aa1ef9d2fdc0c36" +dependencies = [ + "num-bigint 0.2.6", + "num-complex 0.2.4", + "num-integer", + "num-iter", + "num-rational 0.2.4", + "num-traits", +] + +[[package]] +name = "num" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" +dependencies = [ + "num-bigint 0.4.6", + "num-complex 0.4.6", + "num-integer", + "num-iter", + "num-rational 0.4.2", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6b19411a9719e753aff12e5187b74d60d3dc449ec3f4dc21e3989c3f554bc95" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c000134b5dbf44adc5cb772486d335293351644b801551abe8f75c84cfa4aef" +dependencies = [ + "autocfg", + "num-bigint 0.2.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" +dependencies = [ + "num-bigint 0.4.6", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "object" +version = "0.36.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "os_str_bytes" +version = "6.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" + +[[package]] +name = "oura" +version = "1.9.1" +source = "git+https://github.com/txpipe/oura.git?rev=e1b971394a394bde13fb601ad3f6d4ad343b02f0#e1b971394a394bde13fb601ad3f6d4ad343b02f0" +dependencies = [ + "bech32 0.9.1", + "clap 3.2.25", + "config", + "crossterm", + "env_logger", + "hex", + "log", + "merge", + "net2", + "pallas-addresses", + "pallas-codec 0.30.2", + "pallas-crypto", + "pallas-miniprotocols", + "pallas-multiplexer", + "pallas-primitives", + "pallas-traverse", + "prometheus_exporter", + "serde", + "serde_json", + "strum 0.24.1", + "strum_macros 0.24.3", + "time 0.3.36", + "unicode-truncate", +] + +[[package]] +name = "ouroboros" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1358bd1558bd2a083fed428ffeda486fbfb323e698cdda7794259d592ca72db" +dependencies = [ + "aliasable", + "ouroboros_macro", +] + +[[package]] +name = "ouroboros_macro" +version = "0.15.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" +dependencies = [ + "Inflector", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pallas-addresses" +version = "0.30.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84460293bb3323066e9ce608702750c14f02bc36d41c469e44b3eef5ec0fdbf6" +dependencies = [ + "base58", + "bech32 0.9.1", + "crc 3.2.1", + "cryptoxide", + "hex", + "pallas-codec 0.30.2", + "pallas-crypto", + "thiserror", +] + +[[package]] +name = "pallas-codec" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b6e03d05d42a663526d78c8b1d4f2554f09bbf4cc846e1a9e839c558bf6103c" +dependencies = [ + "hex", + "minicbor 0.19.1", + "serde", +] + +[[package]] +name = "pallas-codec" +version = "0.30.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "747279d1bc612986035619a3eaded8f9f4ceae29668aa7a5feae83681a0e93f4" +dependencies = [ + "hex", + "minicbor 0.20.0", + "serde", + "thiserror", +] + +[[package]] +name = "pallas-crypto" +version = "0.30.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b6f8b08e32c7dbb50302222701ae15ef9ac1a7cc39225ce29c253f6ddab2aa7" +dependencies = [ + "cryptoxide", + "hex", + "pallas-codec 0.30.2", + "rand_core", + "serde", + "thiserror", +] + +[[package]] +name = "pallas-miniprotocols" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8a4754676d92ae351ad524d98bc32d70835856ee0623a45288bb50a5ee4b161" +dependencies = [ + "hex", + "itertools 0.10.5", + "pallas-codec 0.18.2", + "pallas-multiplexer", + "thiserror", + "tracing", +] + +[[package]] +name = "pallas-multiplexer" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4b8c7f48cd3b41ce1fac3e829c723d2e76f1cee77b864446d65b2d12ee0aa3" +dependencies = [ + "byteorder", + "hex", + "log", + "pallas-codec 0.18.2", + "rand", + "thiserror", + "tracing", +] + +[[package]] +name = "pallas-primitives" +version = "0.30.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24929d461308626183d5bf15290e6315f4cc67fa38a1a66469425919683cceb2" +dependencies = [ + "base58", + "bech32 0.9.1", + "hex", + "log", + "pallas-codec 0.30.2", + "pallas-crypto", + "serde", + "serde_json", +] + +[[package]] +name = "pallas-traverse" +version = "0.30.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ca94c2278a160c226d6f5bb1756ea5f355421158aaa697445f59f09477a6a4" +dependencies = [ + "hex", + "itertools 0.13.0", + "pallas-addresses", + "pallas-codec 0.30.2", + "pallas-crypto", + "pallas-primitives", + "paste", + "serde", + "thiserror", +] + +[[package]] +name = "parking" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" + +[[package]] +name = "parking_lot" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core 0.8.6", +] + +[[package]] +name = "parking_lot" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.10", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +dependencies = [ + "cfg-if 1.0.0", + "instant", + "libc", + "redox_syscall 0.2.16", + "smallvec", + "winapi", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall 0.5.3", + "smallvec", + "windows-targets 0.52.6", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project-lite" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "piper" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" +dependencies = [ + "atomic-waker", + "fastrand", + "futures-io", +] + +[[package]] +name = "plan-visualizer" +version = "0.1.0" +dependencies = [ + "anyhow", + "clap 3.2.25", + "dot", + "strum 0.25.0", + "strum_macros 0.25.3", + "tasks", + "toml 0.8.19", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "polling" +version = "3.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" +dependencies = [ + "cfg-if 1.0.0", + "concurrent-queue", + "hermit-abi 0.4.0", + "pin-project-lite", + "rustix", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro-crate" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +dependencies = [ + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "prometheus" +version = "0.13.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1" +dependencies = [ + "cfg-if 1.0.0", + "fnv", + "lazy_static", + "memchr", + "parking_lot 0.12.3", + "thiserror", +] + +[[package]] +name = "prometheus_exporter" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caf17cbebe0bfdf4f279ef84eeefe0d50468b0b7116f078acf41d456e48fe81a" +dependencies = [ + "ascii", + "prometheus", + "thiserror", + "tiny_http", +] + +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_xoshiro" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f97cdb2a36ed4183de61b2f824cc45c9f1037f28afe0a322e9fff4c108b5aaa" +dependencies = [ + "rand_core", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +dependencies = [ + "bitflags 2.6.0", +] + +[[package]] +name = "redox_users" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" +dependencies = [ + "getrandom", + "libredox", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.4", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" + +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + +[[package]] +name = "reparse" +version = "0.1.0" +dependencies = [ + "anyhow", + "cml-chain 6.0.1", + "cml-core 6.0.1", + "cml-crypto 6.0.1", + "cml-multi-era 6.0.1", + "dotenv", + "entity", + "futures", + "hex", + "sea-schema", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "resolv-conf" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" +dependencies = [ + "hostname", + "quick-error", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "rkyv" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid 1.10.0", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rollback" +version = "0.1.0" +dependencies = [ + "anyhow", + "clap 3.2.25", + "dotenv", + "entity", + "sea-schema", + "tokio", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "rust_decimal" +version = "1.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" +dependencies = [ + "arrayvec 0.7.6", + "borsh", + "bytes", + "num-traits", + "rand", + "rkyv", + "serde", + "serde_json", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "rustix" +version = "0.38.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f55e80d50763938498dd5ebb18647174e0c76dc38c5505294bb224624f30f36" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls" +version = "0.19.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" +dependencies = [ + "base64 0.13.1", + "log", + "ring", + "sct", + "webpki", +] + +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "schemars" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +dependencies = [ + "dyn-clone", + "schemars_derive", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.77", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "sct" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "sea-orm" +version = "0.7.1" +source = "git+https://github.com/dcSpark/sea-orm?branch=insert-many-returning#eedbaaa035bb0576508b270fb9bb82230d61d714" +dependencies = [ + "async-stream", + "async-trait", + "chrono", + "futures", + "futures-util", + "once_cell", + "ouroboros", + "rust_decimal", + "sea-orm-macros", + "sea-query", + "sea-strum", + "serde", + "serde_json", + "sqlx", + "time 0.2.27", + "tracing", + "url", + "uuid 0.8.2", +] + +[[package]] +name = "sea-orm-macros" +version = "0.7.0" +source = "git+https://github.com/dcSpark/sea-orm?branch=insert-many-returning#eedbaaa035bb0576508b270fb9bb82230d61d714" +dependencies = [ + "bae", + "heck 0.3.3", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sea-query" +version = "0.24.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b0fa62db5ae33dfc61e805b0b0c9d579c3733f1ed90326b3779f5b38f30fa2a" +dependencies = [ + "chrono", + "rust_decimal", + "sea-query-derive", + "sea-query-driver", + "serde_json", + "time 0.2.27", + "uuid 0.8.2", +] + +[[package]] +name = "sea-query-derive" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34cdc022b4f606353fe5dc85b09713a04e433323b70163e81513b141c6ae6eb5" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "syn 1.0.109", + "thiserror", +] + +[[package]] +name = "sea-query-driver" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3953baee94dcb90f0e19e8b4b91b91e9394867b0fc1886d0221cfc6d0439f5" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sea-schema" +version = "0.7.1" +source = "git+https://github.com/dcSpark/sea-schema?branch=bump-sea-x#f6d44ddc883a2b12dc76e10795e9476d921c779f" +dependencies = [ + "async-std", + "async-trait", + "clap 2.34.0", + "dotenv", + "log", + "sea-orm", + "sea-query", + "sea-schema-derive", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "sea-schema-derive" +version = "0.1.0" +source = "git+https://github.com/dcSpark/sea-schema?branch=bump-sea-x#f6d44ddc883a2b12dc76e10795e9476d921c779f" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sea-strum" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391d06a6007842cfe79ac6f7f53911b76dfd69fc9a6769f1cf6569d12ce20e1b" +dependencies = [ + "sea-strum_macros", +] + +[[package]] +name = "sea-strum_macros" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69b4397b825df6ccf1e98bcdabef3bbcfc47ff5853983467850eeab878384f21" +dependencies = [ + "heck 0.3.3", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-aux" +version = "4.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d2e8bfba469d06512e11e3311d4d051a4a387a5b42d010404fecf3200321c95" +dependencies = [ + "chrono", + "serde", + "serde_json", +] + +[[package]] +name = "serde_derive" +version = "1.0.210" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "serde_json" +version = "1.0.128" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.5.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha-1" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5058ada175748e33390e40e872bd0fe59a19f265d0158daa551c5a88a76009c" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + +[[package]] +name = "sha1_smol" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "shred" +version = "0.12.0" +source = "git+https://github.com/dcSpark/shred?branch=builder-getters#1b4cdd1d8e2349dfc005c1db8aa720e730a8a2e2" +dependencies = [ + "arrayvec 0.5.2", + "hashbrown 0.11.2", + "mopa", + "rayon", + "shred-derive", + "smallvec", + "tynm", +] + +[[package]] +name = "shred-derive" +version = "0.6.3" +source = "git+https://github.com/dcSpark/shred?branch=builder-getters#1b4cdd1d8e2349dfc005c1db8aa720e730a8a2e2" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34db1a06d485c9142248b7a054f034b349b212551f3dfd19c94d45a754a217cd" +dependencies = [ + "libc", + "mio 0.8.11", + "signal-hook", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +dependencies = [ + "libc", +] + +[[package]] +name = "simdutf8" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "sled" +version = "0.34.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f96b4737c2ce5987354855aed3797279def4ebf734436c6aa4552cf8e169935" +dependencies = [ + "crc32fast", + "crossbeam-epoch", + "crossbeam-utils", + "fs2", + "fxhash", + "libc", + "log", + "parking_lot 0.11.2", +] + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "sqlformat" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4b7922be017ee70900be125523f38bdd644f4f06a1b16e8fa5a8ee8c34bffd4" +dependencies = [ + "itertools 0.10.5", + "nom", + "unicode_categories", +] + +[[package]] +name = "sqlx" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "551873805652ba0d912fec5bbb0f8b4cdd96baf8e2ebf5970e5671092966019b" +dependencies = [ + "sqlx-core", + "sqlx-macros", +] + +[[package]] +name = "sqlx-core" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48c61941ccf5ddcada342cd59e3e5173b007c509e1e8e990dafc830294d9dc5" +dependencies = [ + "ahash", + "atoi", + "base64 0.13.1", + "bitflags 1.3.2", + "byteorder", + "bytes", + "chrono", + "crc 2.1.0", + "crossbeam-queue", + "dirs", + "either", + "event-listener 2.5.3", + "futures-channel", + "futures-core", + "futures-intrusive", + "futures-util", + "hashlink", + "hex", + "hkdf", + "hmac", + "indexmap 1.9.3", + "itoa", + "libc", + "log", + "md-5", + "memchr", + "num-bigint 0.3.3", + "once_cell", + "paste", + "percent-encoding", + "rand", + "rust_decimal", + "rustls", + "serde", + "serde_json", + "sha-1", + "sha2 0.10.8", + "smallvec", + "sqlformat", + "sqlx-rt", + "stringprep", + "thiserror", + "time 0.2.27", + "tokio-stream", + "url", + "uuid 0.8.2", + "webpki", + "webpki-roots", + "whoami", +] + +[[package]] +name = "sqlx-macros" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0fba2b0cae21fc00fe6046f8baa4c7fcb49e379f0f592b04696607f69ed2e1" +dependencies = [ + "dotenv", + "either", + "heck 0.4.1", + "once_cell", + "proc-macro2", + "quote", + "serde_json", + "sha2 0.10.8", + "sqlx-core", + "sqlx-rt", + "syn 1.0.109", + "url", +] + +[[package]] +name = "sqlx-rt" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4db708cd3e459078f85f39f96a00960bd841f66ee2a669e90bf36907f5a79aae" +dependencies = [ + "once_cell", + "tokio", + "tokio-rustls", +] + +[[package]] +name = "standback" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" +dependencies = [ + "version_check", +] + +[[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + +[[package]] +name = "stringprep" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" +dependencies = [ + "unicode-bidi", + "unicode-normalization", + "unicode-properties", +] + +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros 0.24.3", +] + +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.25.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" +dependencies = [ + "heck 0.4.1", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.77", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "task-docgen" +version = "0.1.0" +dependencies = [ + "anyhow", + "clap 3.2.25", + "inventory", + "markdown-gen", + "tasks", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "tasks" +version = "0.0.0" +dependencies = [ + "anyhow", + "cardano-projected-nft", + "cfg-if 1.0.0", + "cml-chain 6.0.1", + "cml-core 6.0.1", + "cml-crypto 6.0.1", + "cml-multi-era 6.0.1", + "cryptoxide", + "entity", + "hex", + "inventory", + "markdown-gen", + "nameof", + "paste", + "schemars", + "sea-orm", + "serde", + "serde_json", + "shred", + "tokio", + "toml 0.8.19", + "tracing", + "tracing-subscriber", + "urlencoding", +] + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "textwrap" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" + +[[package]] +name = "thiserror" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.63" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + +[[package]] +name = "time" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" +dependencies = [ + "const_fn", + "libc", + "standback", + "stdweb", + "time-macros 0.1.1", + "version_check", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros 0.2.18", +] + +[[package]] +name = "time-core" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + +[[package]] +name = "time-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" +dependencies = [ + "proc-macro-hack", + "time-macros-impl", +] + +[[package]] +name = "time-macros" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "time-macros-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "standback", + "syn 1.0.109", +] + +[[package]] +name = "tiny_http" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f8734c6d6943ad6df6b588d228a87b4af184998bcffa268ceddf05c2055a8c" +dependencies = [ + "ascii", + "chunked_transfer", + "log", + "time 0.3.36", + "url", +] + +[[package]] +name = "tinyvec" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2b070231665d27ad9ec9b8df639893f46727666c6767db40317fbe920a5d998" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio 1.0.2", + "parking_lot 0.12.3", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-macros" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "tokio-rustls" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" +dependencies = [ + "rustls", + "tokio", + "webpki", +] + +[[package]] +name = "tokio-stream" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "toml" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +dependencies = [ + "indexmap 2.5.0", + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" +dependencies = [ + "indexmap 2.5.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "trust-dns-proto" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d" +dependencies = [ + "async-trait", + "cfg-if 1.0.0", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna 0.2.3", + "ipnet", + "lazy_static", + "log", + "rand", + "smallvec", + "thiserror", + "tinyvec", + "tokio", + "url", +] + +[[package]] +name = "trust-dns-resolver" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558" +dependencies = [ + "cfg-if 1.0.0", + "futures-util", + "ipconfig", + "lazy_static", + "log", + "lru-cache", + "parking_lot 0.12.3", + "resolv-conf", + "smallvec", + "thiserror", + "tokio", + "trust-dns-proto", +] + +[[package]] +name = "tynm" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd30d05e69d1478e13fe3e7a853409cfec82cebc2cf9b8d613b3c6b0081781ed" +dependencies = [ + "nom", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-bidi" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "unicode-normalization" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-properties" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ea75f83c0137a9b98608359a5f1af8144876eb67bcb1ce837368e906a9f524" + +[[package]] +name = "unicode-segmentation" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" + +[[package]] +name = "unicode-truncate" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a04be5ca5f7a4a7270ffea82bc41c59b87c611ed04f20e77c338e8d3c2348e42" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "unicode-width" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" + +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "unsafe-libyaml" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +dependencies = [ + "form_urlencoded", + "idna 0.5.0", + "percent-encoding", +] + +[[package]] +name = "urlencoding" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", + "serde", +] + +[[package]] +name = "uuid" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "value-bag" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a84c137d37ab0142f0f2ddfe332651fdbf252e7b7dbb4e67b6c1f1b2e925101" + +[[package]] +name = "vec_map" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + +[[package]] +name = "wasm-bindgen" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +dependencies = [ + "cfg-if 1.0.0", + "serde", + "serde_json", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" + +[[package]] +name = "web-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" +dependencies = [ + "webpki", +] + +[[package]] +name = "whoami" +version = "1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" +dependencies = [ + "redox_syscall 0.5.3", + "wasite", + "web-sys", +] + +[[package]] +name = "widestring" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.50.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if 1.0.0", + "windows-sys 0.48.0", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yaml-rust" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] diff --git a/indexer/src/main.rs b/indexer/src/main.rs index 7e743437..43024167 100644 --- a/indexer/src/main.rs +++ b/indexer/src/main.rs @@ -191,6 +191,9 @@ async fn main() -> anyhow::Result<()> { "preview" => { dcspark_blockchain_source::cardano::NetworkConfiguration::preview() } + "sanchonet" => { + dcspark_blockchain_source::cardano::NetworkConfiguration::sancho() + } "custom" => { panic!("sink.custom_config is mandatory when setting network to custom") } From 2fa8e1077c16de871716031e3d87dce0399e466b Mon Sep 17 00:00:00 2001 From: Sebastien Guillemot Date: Sun, 15 Sep 2024 02:13:02 +0900 Subject: [PATCH 06/12] push some old code --- indexer/genesis/mainnet-shelley-genesis.json | 68 +++ indexer/genesis/preprod-shelley-genesis.json | 72 +++ indexer/genesis/preview-shelley-genesis.json | 68 +++ .../genesis/sanchonet-shelley-genesis.json | 56 ++ indexer/genesis/test-byron-genesis.json | 94 ++++ indexer/genesis/test-shelley-genesis.json | 116 +++++ indexer/genesis/testnet-byron-genesis.json | 481 ------------------ indexer/src/engine.rs | 8 +- indexer/src/genesis.rs | 87 +++- indexer/src/sink.rs | 2 + indexer/src/sinks/cardano.rs | 129 +++-- 11 files changed, 656 insertions(+), 525 deletions(-) create mode 100644 indexer/genesis/mainnet-shelley-genesis.json create mode 100644 indexer/genesis/preprod-shelley-genesis.json create mode 100644 indexer/genesis/preview-shelley-genesis.json create mode 100644 indexer/genesis/sanchonet-shelley-genesis.json create mode 100644 indexer/genesis/test-byron-genesis.json create mode 100644 indexer/genesis/test-shelley-genesis.json delete mode 100644 indexer/genesis/testnet-byron-genesis.json diff --git a/indexer/genesis/mainnet-shelley-genesis.json b/indexer/genesis/mainnet-shelley-genesis.json new file mode 100644 index 00000000..e8cc20dc --- /dev/null +++ b/indexer/genesis/mainnet-shelley-genesis.json @@ -0,0 +1,68 @@ +{ + "activeSlotsCoeff": 0.05, + "protocolParams": { + "protocolVersion": { + "minor": 0, + "major": 2 + }, + "decentralisationParam": 1, + "eMax": 18, + "extraEntropy": { + "tag": "NeutralNonce" + }, + "maxTxSize": 16384, + "maxBlockBodySize": 65536, + "maxBlockHeaderSize": 1100, + "minFeeA": 44, + "minFeeB": 155381, + "minUTxOValue": 1000000, + "poolDeposit": 500000000, + "minPoolCost": 340000000, + "keyDeposit": 2000000, + "nOpt": 150, + "rho": 0.003, + "tau": 0.20, + "a0": 0.3 + }, + "genDelegs": { + "ad5463153dc3d24b9ff133e46136028bdc1edbb897f5a7cf1b37950c": { + "delegate": "d9e5c76ad5ee778960804094a389f0b546b5c2b140a62f8ec43ea54d", + "vrf": "64fa87e8b29a5b7bfbd6795677e3e878c505bc4a3649485d366b50abadec92d7" + }, + "b9547b8a57656539a8d9bc42c008e38d9c8bd9c8adbb1e73ad529497": { + "delegate": "855d6fc1e54274e331e34478eeac8d060b0b90c1f9e8a2b01167c048", + "vrf": "66d5167a1f426bd1adcc8bbf4b88c280d38c148d135cb41e3f5a39f948ad7fcc" + }, + "60baee25cbc90047e83fd01e1e57dc0b06d3d0cb150d0ab40bbfead1": { + "delegate": "7f72a1826ae3b279782ab2bc582d0d2958de65bd86b2c4f82d8ba956", + "vrf": "c0546d9aa5740afd569d3c2d9c412595cd60822bb6d9a4e8ce6c43d12bd0f674" + }, + "f7b341c14cd58fca4195a9b278cce1ef402dc0e06deb77e543cd1757": { + "delegate": "69ae12f9e45c0c9122356c8e624b1fbbed6c22a2e3b4358cf0cb5011", + "vrf": "6394a632af51a32768a6f12dac3485d9c0712d0b54e3f389f355385762a478f2" + }, + "162f94554ac8c225383a2248c245659eda870eaa82d0ef25fc7dcd82": { + "delegate": "4485708022839a7b9b8b639a939c85ec0ed6999b5b6dc651b03c43f6", + "vrf": "aba81e764b71006c515986bf7b37a72fbb5554f78e6775f08e384dbd572a4b32" + }, + "2075a095b3c844a29c24317a94a643ab8e22d54a3a3a72a420260af6": { + "delegate": "6535db26347283990a252313a7903a45e3526ec25ddba381c071b25b", + "vrf": "fcaca997b8105bd860876348fc2c6e68b13607f9bbd23515cd2193b555d267af" + }, + "268cfc0b89e910ead22e0ade91493d8212f53f3e2164b2e4bef0819b": { + "delegate": "1d4f2e1fda43070d71bb22a5522f86943c7c18aeb4fa47a362c27e23", + "vrf": "63ef48bc5355f3e7973100c371d6a095251c80ceb40559f4750aa7014a6fb6db" + } + }, + "updateQuorum": 5, + "networkId": "Mainnet", + "initialFunds": {}, + "maxLovelaceSupply": 45000000000000000, + "networkMagic": 764824073, + "epochLength": 432000, + "systemStart": "2017-09-23T21:44:51Z", + "slotsPerKESPeriod": 129600, + "slotLength": 1, + "maxKESEvolutions": 62, + "securityParam": 2160 +} diff --git a/indexer/genesis/preprod-shelley-genesis.json b/indexer/genesis/preprod-shelley-genesis.json new file mode 100644 index 00000000..24862eb8 --- /dev/null +++ b/indexer/genesis/preprod-shelley-genesis.json @@ -0,0 +1,72 @@ +{ + "activeSlotsCoeff": 0.05, + "epochLength": 432000, + "genDelegs": { + "637f2e950b0fd8f8e3e811c5fbeb19e411e7a2bf37272b84b29c1a0b": { + "delegate": "aae9293510344ddd636364c2673e34e03e79e3eefa8dbaa70e326f7d", + "vrf": "227116365af2ed943f1a8b5e6557bfaa34996f1578eec667a5e2b361c51e4ce7" + }, + "8a4b77c4f534f8b8cc6f269e5ebb7ba77fa63a476e50e05e66d7051c": { + "delegate": "d15422b2e8b60e500a82a8f4ceaa98b04e55a0171d1125f6c58f8758", + "vrf": "0ada6c25d62db5e1e35d3df727635afa943b9e8a123ab83785e2281605b09ce2" + }, + "b00470cd193d67aac47c373602fccd4195aad3002c169b5570de1126": { + "delegate": "b3b539e9e7ed1b32fbf778bf2ebf0a6b9f980eac90ac86623d11881a", + "vrf": "0ff0ce9b820376e51c03b27877cd08f8ba40318f1a9f85a3db0b60dd03f71a7a" + }, + "b260ffdb6eba541fcf18601923457307647dce807851b9d19da133ab": { + "delegate": "7c64eb868b4ef566391a321c85323f41d2b95480d7ce56ad2abcb022", + "vrf": "7fb22abd39d550c9a022ec8104648a26240a9ff9c88b8b89a6e20d393c03098e" + }, + "ced1599fd821a39593e00592e5292bdc1437ae0f7af388ef5257344a": { + "delegate": "de7ca985023cf892f4de7f5f1d0a7181668884752d9ebb9e96c95059", + "vrf": "c301b7fc4d1b57fb60841bcec5e3d2db89602e5285801e522fce3790987b1124" + }, + "dd2a7d71a05bed11db61555ba4c658cb1ce06c8024193d064f2a66ae": { + "delegate": "1e113c218899ee7807f4028071d0e108fc790dade9fd1a0d0b0701ee", + "vrf": "faf2702aa4893c877c622ab22dfeaf1d0c8aab98b837fe2bf667314f0d043822" + }, + "f3b9e74f7d0f24d2314ea5dfbca94b65b2059d1ff94d97436b82d5b4": { + "delegate": "fd637b08cc379ef7b99c83b416458fcda8a01a606041779331008fb9", + "vrf": "37f2ea7c843a688159ddc2c38a2f997ab465150164a9136dca69564714b73268" + } + }, + "initialFunds": {}, + "maxKESEvolutions": 62, + "maxLovelaceSupply": 45000000000000000, + "networkId": "Testnet", + "networkMagic": 1, + "protocolParams": { + "protocolVersion": { + "minor": 0, + "major": 2 + }, + "decentralisationParam": 1, + "eMax": 18, + "extraEntropy": { + "tag": "NeutralNonce" + }, + "maxTxSize": 16384, + "maxBlockBodySize": 65536, + "maxBlockHeaderSize": 1100, + "minFeeA": 44, + "minFeeB": 155381, + "minUTxOValue": 1000000, + "poolDeposit": 500000000, + "minPoolCost": 340000000, + "keyDeposit": 2000000, + "nOpt": 150, + "rho": 0.003, + "tau": 0.20, + "a0": 0.3 + }, + "securityParam": 2160, + "slotLength": 1, + "slotsPerKESPeriod": 129600, + "staking": { + "pools": {}, + "stake": {} + }, + "systemStart": "2022-06-01T00:00:00Z", + "updateQuorum": 5 +} diff --git a/indexer/genesis/preview-shelley-genesis.json b/indexer/genesis/preview-shelley-genesis.json new file mode 100644 index 00000000..20abba3f --- /dev/null +++ b/indexer/genesis/preview-shelley-genesis.json @@ -0,0 +1,68 @@ +{ + "activeSlotsCoeff": 0.05, + "epochLength": 86400, + "genDelegs": { + "12b0f443d02861948a0fce9541916b014e8402984c7b83ad70a834ce": { + "delegate": "7c54a168c731f2f44ced620f3cca7c2bd90731cab223d5167aa994e6", + "vrf": "62d546a35e1be66a2b06e29558ef33f4222f1c466adbb59b52d800964d4e60ec" + }, + "3df542796a64e399b60c74acfbdb5afa1e114532fa36b46d6368ef3a": { + "delegate": "c44bc2f3cc7e98c0f227aa399e4035c33c0d775a0985875fff488e20", + "vrf": "4f9d334decadff6eba258b2df8ae1f02580a2628bce47ae7d957e1acd3f42a3c" + }, + "93fd5083ff20e7ab5570948831730073143bea5a5d5539852ed45889": { + "delegate": "82a02922f10105566b70366b07c758c8134fa91b3d8ae697dfa5e8e0", + "vrf": "8a57e94a9b4c65ec575f35d41edb1df399fa30fdf10775389f5d1ef670ca3f9f" + }, + "a86cab3ea72eabb2e8aafbbf4abbd2ba5bdfd04eea26a39b126a78e4": { + "delegate": "10257f6d3bae913514bdc96c9170b3166bf6838cca95736b0e418426", + "vrf": "1b54aad6b013145a0fc74bb5c2aa368ebaf3999e88637d78e09706d0cc29874a" + }, + "b799804a28885bd49c0e1b99d8b3b26de0fac17a5cf651ecf0c872f0": { + "delegate": "ebe606e22d932d51be2c1ce87e7d7e4c9a7d1f7df4a5535c29e23d22", + "vrf": "b3fc06a1f8ee69ff23185d9af453503be8b15b2652e1f9fb7c3ded6797a2d6f9" + }, + "d125812d6ab973a2c152a0525b7fd32d36ff13555a427966a9cac9b1": { + "delegate": "e302198135fb5b00bfe0b9b5623426f7cf03179ab7ba75f945d5b79b", + "vrf": "b45ca2ed95f92248fa0322ce1fc9f815a5a5aa2f21f1adc2c42c4dccfc7ba631" + }, + "ef27651990a26449a40767d5e06cdef1670a3f3ff4b951d385b51787": { + "delegate": "0e0b11e80d958732e587585d30978d683a061831d1b753878f549d05", + "vrf": "b860ec844f6cd476c4fabb4aa1ca72d5c74d82f3835aed3c9515a35b6e048719" + } + }, + "initialFunds": {}, + "maxKESEvolutions": 62, + "maxLovelaceSupply": 45000000000000000, + "networkId": "Testnet", + "networkMagic": 2, + "protocolParams": { + "protocolVersion": { + "minor": 0, + "major": 6 + }, + "decentralisationParam": 1, + "eMax": 18, + "extraEntropy": { + "tag": "NeutralNonce" + }, + "maxTxSize": 16384, + "maxBlockBodySize": 65536, + "maxBlockHeaderSize": 1100, + "minFeeA": 44, + "minFeeB": 155381, + "minUTxOValue": 1000000, + "poolDeposit": 500000000, + "minPoolCost": 340000000, + "keyDeposit": 2000000, + "nOpt": 150, + "rho": 0.003, + "tau": 0.20, + "a0": 0.3 + }, + "securityParam": 432, + "slotLength": 1, + "slotsPerKESPeriod": 129600, + "systemStart": "2022-10-25T00:00:00Z", + "updateQuorum": 5 +} diff --git a/indexer/genesis/sanchonet-shelley-genesis.json b/indexer/genesis/sanchonet-shelley-genesis.json new file mode 100644 index 00000000..54458599 --- /dev/null +++ b/indexer/genesis/sanchonet-shelley-genesis.json @@ -0,0 +1,56 @@ +{ + "activeSlotsCoeff": 5.0e-2, + "epochLength": 86400, + "genDelegs": { + "c1ad22cabb342cbb83ce3859708232f4945ccb669e9b5f932cffc0ed": { + "delegate": "405357b552c397e81f73dcb5a0da0828fe29610bd25197d86130df34", + "vrf": "458215df6c07abc66e80082caa7a189dc2f4995ad4b4b5f09481a55d8d0692d2" + }, + "c264bca994a3a5deee5a1d9b92a3d7e9d6cbdb81f2f6989bb7f7b437": { + "delegate": "d9d9d0f0e1f25c4af4d80cb2d62878b611d8b3a8e1ef548d01f246d7", + "vrf": "624f1bf3b2f978e0c95644f26228b307d7acca7fc7eb3d88fb6f107e0aa1198c" + }, + "d4bf7eb45b72dffa5ac33d5c902fe409e4e611f2e9a52fb0d09784c3": { + "delegate": "806eb0c17d9b0fe6d99acbabe7be76ef72bf9de96c5b58435e50837f", + "vrf": "57e52289207a7128c29e0b7e96a02c731a961a5944329b363bed751ad8f377ee" + } + }, + "initialFunds": {}, + "maxKESEvolutions": 62, + "maxLovelaceSupply": 45000000000000000, + "networkId": "Testnet", + "networkMagic": 4, + "protocolParams": { + "a0": 0.3, + "decentralisationParam": 1.0, + "eMax": 18, + "extraEntropy": { + "tag": "NeutralNonce" + }, + "keyDeposit": 2000000, + "maxBlockBodySize": 65536, + "maxBlockHeaderSize": 1100, + "maxTxSize": 16384, + "minFeeA": 44, + "minFeeB": 155381, + "minPoolCost": 340000000, + "minUTxOValue": 1000000, + "nOpt": 150, + "poolDeposit": 500000000, + "protocolVersion": { + "major": 6, + "minor": 0 + }, + "rho": 3.0e-3, + "tau": 0.2 + }, + "securityParam": 432, + "slotLength": 1, + "slotsPerKESPeriod": 129600, + "staking": { + "pools": {}, + "stake": {} + }, + "systemStart": "2023-06-15T00:30:00Z", + "updateQuorum": 3 +} \ No newline at end of file diff --git a/indexer/genesis/test-byron-genesis.json b/indexer/genesis/test-byron-genesis.json new file mode 100644 index 00000000..74d18498 --- /dev/null +++ b/indexer/genesis/test-byron-genesis.json @@ -0,0 +1,94 @@ +{ + "bootStakeholders": { + "05d1c10e4bf3cdd4de54712531c53be75a1609b25f396ffbbe5becf1": 1, + "3bf1193b19be416283b8c0516d2f8b80939ffccb1c9b05946f54c83a": 1, + "7bdd769bd872e8e6336c23f1e566c19a96e72137174b891fad9f4b99": 1, + "9ddc1e29c59df0ddd9347fe8b8a736d247f286414684eddc02885348": 1, + "a118c0d2737c8a77c0d982a0d299bc42614cea4e0c23614ba24a05ca": 1, + "b0b2df3c9cf4dfe2ae04409913b3c3125509acbbfa0722449570aaeb": 1, + "e0a65f21229e44c2bf6eec5b14e2775003b674ae53de18d22814346a": 1 + }, + "heavyDelegation": { + "05d1c10e4bf3cdd4de54712531c53be75a1609b25f396ffbbe5becf1": { + "omega": 0, + "issuerPk": "UFsjehyxQAIMxEL25RxqD0itM0RCdzWprVt1W+zopM5b7U9ru9AMr/zf9lAjWaFlNOpRgrrbz7r5tRbt8wUmSg==", + "delegatePk": "iwlg0jS9pn1SQyxdGiasor+1uaCflm2Vkqe/DHKKHs2EDqxcP+in7doCSnQDttN3BZkIKLNUgzKj+FAiHCCYvw==", + "cert": "633fc347138ee155d038b9d1040ee1e45cea5b1e8627046c95f7fe4ba949b0569437962568eadef9d49e22becbf30192425c008d10e03004612633dbc307340b" + }, + "3bf1193b19be416283b8c0516d2f8b80939ffccb1c9b05946f54c83a": { + "omega": 0, + "issuerPk": "pAIACMG6WCa4mz0tVoeekLXYuWkdxk/rgDuZ/x7ugh3CvEuhpGf2LRRRWilaGdraH1sCbnuMCmAHrBTbPDFmxA==", + "delegatePk": "0ajebKqP2bF1xZhi7N1avNBHe4S4Kg5S+uzGs8hRAKR1IW/7ZOp0U3AhQFuzKLD3BuSq1xV3leMWeBzKEg2slg==", + "cert": "eb5c4d76c7bfca2ab790a76f7dc4c6d9f7d0956d4af3b8c649804ef98beeb138d8916982c9142747b7a07e69f52b2c3776d64a7d74494e0f72eefaebf6bf5d07" + }, + "7bdd769bd872e8e6336c23f1e566c19a96e72137174b891fad9f4b99": { + "omega": 0, + "issuerPk": "P7JjeSPHjexNW5MsCaySrURaqV2gCgXttEe0CgfFnVZFGHaS9A4xEUrQ83VTLPjk+HV0Di19DjQ+DhS1M6Mf7A==", + "delegatePk": "jvMgwt9mVKYYjEXpxjnApoa/WoZSlVh9OZ3+sF/nSrZ5YaaWsmjIvOyTcrxzqpsTZewAez36BTnqwA0VSjFRjA==", + "cert": "9ef9f0e5ca23cd9365ec7a23f1b2d159da0d58e0242cb817c3bc946ba1c9e3629f1976f09a88370247bbc458c810d21a889e3ff6dd189ceea784bc9ab6dc9b0a" + }, + "9ddc1e29c59df0ddd9347fe8b8a736d247f286414684eddc02885348": { + "omega": 0, + "issuerPk": "Xro6BbV6hMh3RTZnst4ABhtQ2vr83YPXoLfQ8JWeunvvcuudGBQvLeqwVfGXrBWoMOOKroFV48ygfSEq2xhREA==", + "delegatePk": "mq5iXU0VvLNzPUIOBk8c0zjzhuCvBJ/NQrRVpp0orTZkg9F3uiuAG0E24NZmLl6eCiTyyAoOeNTCNbTAjyAfTA==", + "cert": "939dcfe5555ee661b9db5d817a70d5c3fa9d1d97c2ae5849696d915606b530f7e9edda5d02a01e61524a766f9c356084616ba058a3de70ea51bf29cd187a5f07" + }, + "a118c0d2737c8a77c0d982a0d299bc42614cea4e0c23614ba24a05ca": { + "omega": 0, + "issuerPk": "eqAAtu1X79MxCSa/i/RSApLGsnhDYqLJLu93f3wSzR5/M7calZS8DHFrAtJgzYbkg9nwKF1HQQ8bO/1LOJ9O4w==", + "delegatePk": "lCuzqqsPZEK5BrZbpt2/eWnKpmLZCWiSYhGj1WUy8R2OjLStw/UDT7xiV/pbEIZoncfQJN9yJqpQH8KOui0fYw==", + "cert": "b96ad354a6989df5de8d0888414843736d0a4a6626a1e595e8785a70b10a38eb4632159aabf84959983e8852fd4d390eba6c423fac8ea117913cec46353bd90e" + }, + "b0b2df3c9cf4dfe2ae04409913b3c3125509acbbfa0722449570aaeb": { + "omega": 0, + "issuerPk": "Y+Vaj0IaMeq0+oWjQr5hiEl4Ek+cWsKq7mufTO4wue2R6A6AMlqEDIV7vYsd3NZWomG5DGcwSAw2Ev1Mz26LIA==", + "delegatePk": "YYtiXfMN5TiV/ynno3cNylbC/wZtSqBaaXGQXe7O9tu33RDqH5F15Sk+reyXvxaxZ683mns+1K8DLNB7mezB6g==", + "cert": "ca38e688e759183b57d08ca6568248b91c8ddd81e56d0d31c3f3a26eca35754387c5f301ef017dafae453a93757d39a0e2d326ebe59cf31d5c1b22fc8616ac00" + }, + "e0a65f21229e44c2bf6eec5b14e2775003b674ae53de18d22814346a": { + "omega": 0, + "issuerPk": "vynbl3q/BFvwehgMzpp3NoWOuN5RwDUYCbNop0RR0jlEXomgPOrlXCwMTrwrI8Dcfzq5q1fK/1hOfv9IwDMPAA==", + "delegatePk": "1N1ppBBxvC3I5kqX9L1jeVJM4MK2ZXKAQ6Bn400+IYr4mh4zTYciCsTJTyvY8IKIBBEcT3GYW6ZlaYy7XbY5kg==", + "cert": "82b10bbea2dd80441315230354e3e4af0ac87d02c9e6424fc9432be21a6183c81555d3a1b373566aef7a8065a126d57c42629be780becc61bc1b8f3ce5b5170d" + } + }, + "startTime": 1654041600, + "nonAvvmBalances": { + "FHnt4NL7yPXhCzCHVywZLqVsvwuG3HvwmjKXQJBrXh3h2aigv6uxkePbpzRNV8q": "0", + "FHnt4NL7yPXuJGViM3KwSPwrwECD9q5vNetX3QJDYRWgiX3RHi5i5VV32dnETDK": "0", + "FHnt4NL7yPXuYUxBF33VX5dZMBDAab2kvSNLRzCskvuKNCSDknzrQvKeQhGUw5a": "30000000000000000", + "FHnt4NL7yPY8exfnuJ8ACyoU7xCN93tKXSv357UrTp1nddGbkWxJpQfrt62xYFX": "0", + "FHnt4NL7yPYFpVcAXZADrKdsqCAFvcRFYkTcqkn2guGmj8akQMiMVjhSUECvD1F": "0", + "FHnt4NL7yPYH2vP2FLEfH2pt3K6meM7fgtjRiLBidaqpP5ogPzxLNsZy68e1KdW": "0", + "FHnt4NL7yPYHrcxPtPufYYFWLhqvHGnZ5NFSz2KZpWQgSq4VLsUgWnkEmfUtd1E": "0", + "FHnt4NL7yPYJiN5Y8VsQr6LP6YgN51BHBPegNjVwKkq6AooCkbTpfZ2bqkVkfXU": "0" + }, + "blockVersionData": { + "scriptVersion": 0, + "slotDuration": "20000", + "maxBlockSize": "2000000", + "maxHeaderSize": "2000000", + "maxTxSize": "4096", + "maxProposalSize": "700", + "mpcThd": "20000000000000", + "heavyDelThd": "300000000000", + "updateVoteThd": "1000000000000", + "updateProposalThd": "100000000000000", + "updateImplicit": "10000", + "softforkRule": { + "initThd": "900000000000000", + "minThd": "600000000000000", + "thdDecrement": "50000000000000" + }, + "txFeePolicy": { + "summand": "155381000000000", + "multiplier": "43946000000" + }, + "unlockStakeEpoch": "18446744073709551615" + }, + "protocolConsts": { + "k": 2160, + "protocolMagic": 1 + }, + "avvmDistr": {} +} diff --git a/indexer/genesis/test-shelley-genesis.json b/indexer/genesis/test-shelley-genesis.json new file mode 100644 index 00000000..aa71a7f4 --- /dev/null +++ b/indexer/genesis/test-shelley-genesis.json @@ -0,0 +1,116 @@ +{ + "activeSlotsCoeff": 0.05, + "epochLength": 432000, + "genDelegs": { + "637f2e950b0fd8f8e3e811c5fbeb19e411e7a2bf37272b84b29c1a0b": { + "delegate": "aae9293510344ddd636364c2673e34e03e79e3eefa8dbaa70e326f7d", + "vrf": "227116365af2ed943f1a8b5e6557bfaa34996f1578eec667a5e2b361c51e4ce7" + }, + "8a4b77c4f534f8b8cc6f269e5ebb7ba77fa63a476e50e05e66d7051c": { + "delegate": "d15422b2e8b60e500a82a8f4ceaa98b04e55a0171d1125f6c58f8758", + "vrf": "0ada6c25d62db5e1e35d3df727635afa943b9e8a123ab83785e2281605b09ce2" + }, + "b00470cd193d67aac47c373602fccd4195aad3002c169b5570de1126": { + "delegate": "b3b539e9e7ed1b32fbf778bf2ebf0a6b9f980eac90ac86623d11881a", + "vrf": "0ff0ce9b820376e51c03b27877cd08f8ba40318f1a9f85a3db0b60dd03f71a7a" + }, + "b260ffdb6eba541fcf18601923457307647dce807851b9d19da133ab": { + "delegate": "7c64eb868b4ef566391a321c85323f41d2b95480d7ce56ad2abcb022", + "vrf": "7fb22abd39d550c9a022ec8104648a26240a9ff9c88b8b89a6e20d393c03098e" + }, + "ced1599fd821a39593e00592e5292bdc1437ae0f7af388ef5257344a": { + "delegate": "de7ca985023cf892f4de7f5f1d0a7181668884752d9ebb9e96c95059", + "vrf": "c301b7fc4d1b57fb60841bcec5e3d2db89602e5285801e522fce3790987b1124" + }, + "dd2a7d71a05bed11db61555ba4c658cb1ce06c8024193d064f2a66ae": { + "delegate": "1e113c218899ee7807f4028071d0e108fc790dade9fd1a0d0b0701ee", + "vrf": "faf2702aa4893c877c622ab22dfeaf1d0c8aab98b837fe2bf667314f0d043822" + }, + "f3b9e74f7d0f24d2314ea5dfbca94b65b2059d1ff94d97436b82d5b4": { + "delegate": "fd637b08cc379ef7b99c83b416458fcda8a01a606041779331008fb9", + "vrf": "37f2ea7c843a688159ddc2c38a2f997ab465150164a9136dca69564714b73268" + } + }, + "initialFunds": { + "007290ea8fa9433c1045a4c8473959ad608e6c03a58c7de33bdbd3ce6f295b987135610616f3c74e11c94d77b6ced5ccc93a7d719cfb135062": 300000000000, + "605276322ac7882434173dcc6441905f6737689bd309b68ad8b3614fd8": 3000000000000000, + "60a0f1aa7dca95017c11e7e373aebcf0c4568cf47ec12b94f8eb5bba8b": 3000000000000000, + "60ba957a0fff6816021b2afa7900beea68fd10f2d78fb5b64de0d2379c": 3000000000000000, + "00c8c47610a36034aac6fc58848bdae5c278d994ff502c05455e3b3ee8f8ed3a0eea0ef835ffa7bbfcde55f7fe9d2cc5d55ea62cecb42bab3c": 10000000000, + "004048ff89ca4f88e66598e620aa0c7128c2145d9a181ae9a4a81ca8e3e849af38840c5562dd382be37c9e76545c8191f9d8f6df1d20cfcee0": 10000000000, + "00ca6e1b1f320d543a24adeabc0aa4627635c7349b639f86f74bdfdd78d31b28c9619a58b3792a7394ab85deb36889c4d7b0632c8167b855d2": 10000000000, + "0007d781fe8e33883e371f9550c2f1087321fc32e06e80b65e349ccb027702d6880e86e77a0520efa37ede45002a1de43b68692e175b742e67": 10000000000, + "00627b2598dd71129167825160c564067d1d245e79cc237094815c5cb2b125e30ec2f4ce4059a069e08c3cd82cdfc9451bfb22487f8a25ceef": 10000000000, + "00c6cf7bd50f37f7e4cc161fc00f07e9b2226ba5552ccaf30d315fa0135bbc8cbd9ab5379f368fc8d3500c37a9d14074cc6ddad89e3686f0e0": 10000000000, + "005164ab186715c86378020956d892cf72f67636b78967d67cfe7360479130dc89cf7a9bc89109f939956b66f93293ade4c3920b72fd40beea": 10000000000, + "003dd38742e9848c6f12c13ddb1f9464fc0ce0bb92102768087975317e5a9f869fcd913562c9b0e0f01f77e5359ea780d37f9355f9702eff8b": 10000000000, + "0088e7e670b45cab2322b518ef7b6f66d30aec0d923dc463e467091a790f67796b9fa71224f2846cebbcf4950c11e040ee124d30f6e164bcd5": 10000000000, + "00c70b8421617802d3f23956cab1957e1d306cd4808589b41760e97927ebfd6053ba12b38288b2b6d5d4c4618d6a8ce59d50580e9c6f704af5": 10000000000, + "00c0933b8238f6f3332e48c34cf1a8e0555943b33cd4abc53aefb7d6124b7ce40dd496bdc02b34602f3a773ff7cccee873991e4c8866f3a70b": 10000000000, + "0069f7d7289de2f01cd1e0265ac5be943b41775abae0ce6b3eac0edee0ce9cadb7cdec2bded3ef8a7bbe3352869bfc1387754c9ee6b1782d9c": 10000000000, + "00709a7070005c652c27df73dbbde3319a90b127bea96aded1c5fb87a59c51dbcf90fa890174497f3f66a0dad06eb7f131e06567995e9c50a5": 10000000000, + "00fc576df3a279885a7a4d0fc500372daa1d96f26c6763542ecd2ad8551753024adea37c134edebb68dc0cfaed5a7009e8305fe1fed8d0ccd1": 10000000000, + "003346a630e6972bf38cce87219db1d63061e7cd324cad88c18e504f2990cac68e973f51256ca938683fa4ea12173d7d047d940fbb883bd0e8": 10000000000, + "0028b862d001e6a64a02b3560cbc532eab4557593477c39cc523e0b9fc527100898c11e731194171b908aad463770d6cbf7ec8871c4cb1e518": 10000000000, + "005e0e57040b06e9d71e0f28f126262838a68db0b52b4fd1b3877dda2203d5d7d4f19c5ee3a1ed51bb670779de19d40aaff2e5e9468cc05c5e": 10000000000, + "00367f65ab69b1e6715c8d5a14964214c9505ed17032266b3209a2c40dcbae9a2a881e603ff39d36e987bacfb87ee98051f222c5fe3efd350c": 10000000000, + "00c5c4ca287f3b53948b5468e5e23b1c87fe61ce52c0d9afd65d070795038751a619d463e91eaed0a774ebdb2f8e12a01a378a153bc3627323": 10000000000, + "00ef198fb7c35e1968308a0b75cfee54a46e13e86dd3354283300831d624165c357b5a0413906a0bfea8ba57587331f0836a186d632ed041b8": 10000000000 + }, + "maxKESEvolutions": 62, + "maxLovelaceSupply": 45000000000000000, + "networkId": "Testnet", + "networkMagic": 1, + "protocolParams": { + "protocolVersion": { + "minor": 0, + "major": 2 + }, + "decentralisationParam": 1, + "eMax": 18, + "extraEntropy": { + "tag": "NeutralNonce" + }, + "maxTxSize": 16384, + "maxBlockBodySize": 65536, + "maxBlockHeaderSize": 1100, + "minFeeA": 44, + "minFeeB": 155381, + "minUTxOValue": 1000000, + "poolDeposit": 500000000, + "minPoolCost": 340000000, + "keyDeposit": 2000000, + "nOpt": 150, + "rho": 0.003, + "tau": 0.20, + "a0": 0.3 + }, + "securityParam": 2160, + "slotLength": 1, + "slotsPerKESPeriod": 129600, + "staking": { + "pools": { + "7301761068762f5900bde9eb7c1c15b09840285130f5b0f53606cc57": { + "cost": 340000000, + "margin": 0, + "metadata": null, + "owners": [], + "pledge": 0, + "publicKey": "7301761068762f5900bde9eb7c1c15b09840285130f5b0f53606cc57", + "relays": [], + "rewardAccount": { + "credential": { + "key hash": "11a14edf73b08a0a27cb98b2c57eb37c780df18fcfcf6785ed5df84a" + }, + "network": "Testnet" + }, + "vrf": "c2b62ffa92ad18ffc117ea3abeb161a68885000a466f9c71db5e4731d6630061" + } + }, + "stake": { + "295b987135610616f3c74e11c94d77b6ced5ccc93a7d719cfb135062": "7301761068762f5900bde9eb7c1c15b09840285130f5b0f53606cc57" + } + }, + "systemStart": "2022-06-01T00:00:00Z", + "updateQuorum": 5 +} diff --git a/indexer/genesis/testnet-byron-genesis.json b/indexer/genesis/testnet-byron-genesis.json deleted file mode 100644 index 79fde9c2..00000000 --- a/indexer/genesis/testnet-byron-genesis.json +++ /dev/null @@ -1,481 +0,0 @@ -{ "bootStakeholders": - { "182822494f30b89a5cb9a6d845d9733a1831eb4e5ebc8faca89becc4": 1 - , "37ec19ad6c732dea93f8b39e0dcbef7d45044983d99195eb7034901c": 1 - , "3c1c3b43032f1f7a346cb8070c75474715ec8f1d301411a69def9ab2": 1 - , "6275f793595cae0761f13ecd054a0f01d0f57726ade0933e88a05749": 1 - , "9a804607ce670b2d5e60e9b4fdc54b99acf6d66837132e6bdc621ba5": 1 - , "9bfb38ba283fb3c8e552b440c17d0ef32725c39219565e9190454a57": 1 - , "e471e138c71dfff3d326b75548a1c518e694d13e85a3b0ae91df9941": 1 - } -, "heavyDelegation": - { "9bfb38ba283fb3c8e552b440c17d0ef32725c39219565e9190454a57": - { "omega": 0 - , "issuerPk": - "y1HSmrlOUNmhRNT0JlZM7HAN7k2ehXqs+R07aJN02B90KkUoGM8kicFt/Bhvbpx2t99AhFt8RQeF8C2ICXZ1dQ==" - , "delegatePk": - "fsJJ2JDQqvmoEgeWDBY64tasXnFcprltWGDlDZ8rKyodVo+qh8nMi/1DOjIkqW7F0QG0tunbAI24hX9JuuKUsg==" - , "cert": - "a304bf45b44fbccc78f54b9014a6b2d4354631ebff235aebb2e71a15bdd582be3794384c1ba713b99ef05766e92b8f438b2fc5af349f2bb16e85e3780aa84c07" - } - , "37ec19ad6c732dea93f8b39e0dcbef7d45044983d99195eb7034901c": - { "omega": 0 - , "issuerPk": - "nw+fw9f3biUiBZVS6H4G2vlAtFgaF5rsd/OQVmKkGGWv2lr820QVemFc7G/xmtOZ2bAyjcgrx/NRPUCRC3+TSg==" - , "delegatePk": - "MqlUtSHAsZUUQIllgx72g5Y33noaYWi8+EVcUEupO5yFNJi9rgYKb8mUXXIxrgjRMXq7szMGyTRl5e8RjuvHGA==" - , "cert": - "3fbff2edf71960355b30d89b946d4732c88e66dfb859bb143d2cd368b923cdf7d9bd22c4901cb47bade479a7c0eda08470cc9f3a2cb20c92b3a20974fc066900" - } - , "9a804607ce670b2d5e60e9b4fdc54b99acf6d66837132e6bdc621ba5": - { "omega": 0 - , "issuerPk": - "KedfHXp2SA8aETBEmrXZoOAUwJiFDKFSA3gq3rdWGoG7Mid0F0kSWzK3C6Y8QDIvRnao1lfZpXmghht8L0wCcg==" - , "delegatePk": - "52SwNA17NT9fdFiRAzd05L6raqFFilT/KaEyTAW7mHa1dM9ZKg+G/dH7+vvt3p4izpUiWy8RhRYpOszYygswFg==" - , "cert": - "06682af4df67b2037337187f9397bb8042e37308da1429ec9063e42480f9da60379d929f705140f05f1d014f19c668071824c0d86b616794e544d935e379c80e" - } - , "182822494f30b89a5cb9a6d845d9733a1831eb4e5ebc8faca89becc4": - { "omega": 0 - , "issuerPk": - "U6JXlR27xStIbWOjpfzqVVy5rp73La1i5znqNsI94+xYpOzGmlOVYiYF88N5OZ82wDBtl1UB9A+bWXNa0oCapg==" - , "delegatePk": - "5bwhqDYWvMz+ND7Da53EwGyQ6RPfHYoLBGAIZR9CyqlKrob7/cRYbavVR6fpLQdwLjMrzJ5911MjncgNAzxZwg==" - , "cert": - "d173106bfaab665a30e71633719754e0416927cfdadd6fbf7013590ddc9843083e18efcd08e4c7c366f4c4fff257177c87a502913f35bb1a07e45607c5d1fa0a" - } - , "e471e138c71dfff3d326b75548a1c518e694d13e85a3b0ae91df9941": - { "omega": 0 - , "issuerPk": - "HISQWQHTy1IdXEM7sTpZDNIQO0alFI++YFE6sAD5lN1BNDzTDSzDfUeaoAVWBvT/L5LcHdRzsjRgnPcOOm28gg==" - , "delegatePk": - "T011I+QeBYpsve+1U4ZU/8KlNBan9buZ9+rGmdQtXB8TdXbpwo6fFLPG4IIS8jjYbW4BrPJpf3teR9qWOSZeMQ==" - , "cert": - "018a7ee167602da08bf7d6903c37d2524ebe2a5daad83f9bf25f6011622932e72fc7c48027b9d4efaef521c911ec9eebaa38ddf88e6ae27c9bb823770fcd2600" - } - , "3c1c3b43032f1f7a346cb8070c75474715ec8f1d301411a69def9ab2": - { "omega": 0 - , "issuerPk": - "276WEVFXba36w7tXnsKxwUfACqTO4Dx+vvSVoOo4KUCqBgPahpnaCca9yjIPzWhVC6iyrHkZ570z7VjF2drNRA==" - , "delegatePk": - "c65B7KK+N/wVxVpQ1mjIZH4QvyIhcsLVir+m6TEOWWI/jyb47cHOj2mL1dyf6qMay8Nkv/b7gdND/zgm692NVQ==" - , "cert": - "b2c8e6ff8fc380c4a4c4e16f909803e786ccfbf4267e5016e24a34a843093b4d81736939500fb6fdd358d2be2b255858ea1abc35f62d381d6c62d111d1f0c80d" - } - , "6275f793595cae0761f13ecd054a0f01d0f57726ade0933e88a05749": - { "omega": 0 - , "issuerPk": - "bO9W1q+IRfMXlJvN/5I1jxOU/hG0XAKyjh1YVMD6E/jgeWRN/FBBr7D8vR9H7HzgZPN7fsXAcMeEpWGeuuKqYA==" - , "delegatePk": - "37YVphVo1oZ/RahcMiJ/JwJRgNc4qKPX/TySn2JNcjkpgBs0NkHxSAh7EX6H6WlfIV28+DD/DVigZmgsdgP2QQ==" - , "cert": - "a9c6e4abf95755084a86625a98e185de75d4d33d557284d3aa67ecff3dcfd8e77994fc8b3fc4c2762879ca0c15458ade936db0977ae10dd01291cf3241b9530e" - } - } -, "startTime": 1563999616 -, "vssCerts": - { "60214fff2df8faabc7da2dc99c07d2e3ade761b6bfe6a5a94b44c3dc": - { "vssKey": "WCECGkF8Ipu3QuaaTiSnA/wmf//wmVhFM2rIVUupnP9fdGM=" - , "expiryEpoch": 3 - , "signature": - "ff0972de56a180ae5a452680f7c6c464d07cd539804930b1d2f815b9a9bcc652c8d7adf875e4435ee116b16d194e35acfc752cc14c2e9c46bd00f74ec363a502" - , "signingKey": - "fsJJ2JDQqvmoEgeWDBY64tasXnFcprltWGDlDZ8rKyodVo+qh8nMi/1DOjIkqW7F0QG0tunbAI24hX9JuuKUsg==" - } - , "e0c9e75ffe8065e50563f9ec256c2b442a121d602c495cd305fb3cc4": - { "vssKey": "WCEDBRKTUNRUx1VFORWuoqqMSwPYKXgkeO2e+LTbc8jxm7U=" - , "expiryEpoch": 4 - , "signature": - "4d0aa42d1a15decec74c117b9b3e76178155c58ec373d2535005b4a3b0fae0ca4dd1c089b5272036f642aea27dc835e91de73d12fc25c027a8ef73991c139407" - , "signingKey": - "5bwhqDYWvMz+ND7Da53EwGyQ6RPfHYoLBGAIZR9CyqlKrob7/cRYbavVR6fpLQdwLjMrzJ5911MjncgNAzxZwg==" - } - , "fe299fde9afe6467393772f49e1f8d646d6788400c0acffdfb5eea24": - { "vssKey": "WCEDT9Z69y24Jbc4x/MlaC33mB/yaZ4ljIMNAfl9l7njWFE=" - , "expiryEpoch": 1 - , "signature": - "0efc47d2ed049a72896a4db314a3b00b31b849c753eaa2e3172337a8439a9160eba6bc164f57819df6580140fe3c7f52cec98161596c452d7ced3b0881638a09" - , "signingKey": - "MqlUtSHAsZUUQIllgx72g5Y33noaYWi8+EVcUEupO5yFNJi9rgYKb8mUXXIxrgjRMXq7szMGyTRl5e8RjuvHGA==" - } - , "837bd45aa9cdb656f538a4e46236ba9eb4c89890bc9191df096e30ba": - { "vssKey": "WCEDKi5sm8Wu7tUrjSehtCBsEMXSpX+h87zNRJcE4Mx/Nj4=" - , "expiryEpoch": 1 - , "signature": - "991e11c37f235c8c8d4aa846a564da38027f739f34ab97087ab436cce84d9297b2951455d5a8e2a562ab11db6a321c36d7498de3a1f776ad8eeb4dc5293b2b0f" - , "signingKey": - "52SwNA17NT9fdFiRAzd05L6raqFFilT/KaEyTAW7mHa1dM9ZKg+G/dH7+vvt3p4izpUiWy8RhRYpOszYygswFg==" - } - , "304889400de0859e03daea8bcf42779a14540b7c067f42f04ee1284e": - { "vssKey": "WCEDOgMx00aA40zA9oi0rN61TB6OxUcTvYq+8CyJjrObO3s=" - , "expiryEpoch": 5 - , "signature": - "10eca6d26d44eb52ed11ae633c410866bd6e01411ad64068331c7b8f92da9c8b9a7bed1772b6bf00910d322e659e23f2f867c4cf4e757cdbfbfb1fc97ba5a004" - , "signingKey": - "c65B7KK+N/wVxVpQ1mjIZH4QvyIhcsLVir+m6TEOWWI/jyb47cHOj2mL1dyf6qMay8Nkv/b7gdND/zgm692NVQ==" - } - , "73c89ad521f5786011201377e1ec8305e82aa985998f40307fa927d1": - { "vssKey": "WCEDLPG8x46r/wCR3hoHLeS+h/1Bu5x0MWXHDoJhM++fEfw=" - , "expiryEpoch": 2 - , "signature": - "98b48773afad287dbcd25915ee6b297b09d1204feb3a5793e91e438a1cce31a226f28b0c5b5ccdcde6a11f64665cbd867213cadbc57ec722c242def811f6e806" - , "signingKey": - "37YVphVo1oZ/RahcMiJ/JwJRgNc4qKPX/TySn2JNcjkpgBs0NkHxSAh7EX6H6WlfIV28+DD/DVigZmgsdgP2QQ==" - } - , "06216081b85063b2c7e33172b87663511fb7be35b23bc383881d60bc": - { "vssKey": "WCEDExIpntsz081SiKqeAg2o9W+wLy6lmD0dfp1sesQMj/E=" - , "expiryEpoch": 5 - , "signature": - "2b7fb3aab3a23d72cac699c4ef97d7f90ca4dd0b06c2413962b6430583b9814b6549806e90ecfd44da05819b655ff975797a6df23dde2aa1c625ab5079825f03" - , "signingKey": - "T011I+QeBYpsve+1U4ZU/8KlNBan9buZ9+rGmdQtXB8TdXbpwo6fFLPG4IIS8jjYbW4BrPJpf3teR9qWOSZeMQ==" - } - } -, "nonAvvmBalances": - { "2cWKMJemoBajGgvgVVziaKmUFa4LwJnAHffmuaSJBMDqethwJVQsyBsTSfFhp5jFpkVQM": - "5428571428571429" - , "37btjrVyb4KEg6anTcJ9E4EAvYtNV9xXL6LNpA15YLhgvm9zJ1D2jwme574HikZ36rKdTwaUmpEicCoL1bDw4CtH5PNcFnTRGQNaFd5ai6Wvo6CZsi": - "19999999999999" - , "37btjrVyb4KCRtni6YrG77RLPosnDqtEYoAD5xLdKYkWgnLqGa8yuXDUQd3psHrfxqaRcvNTsAW4ngUe6bzstbzSUJtwoaKbYaL8zjFAJJsZkQ42ti": - "19999999999999" - , "37btjrVyb4KGDMix4Uj5opvbMDgjZYUjeARAqTEFEbgLUH3qyju9gkBpcm2fVWgkcNgK3xFsQgWm1w8zxqvm9P6xJj9mHqLeMJPwDMUKUGPcDyUaDS": - "19999999999999" - , "37btjrVyb4KEkSeCVx985rXc38DCud2AW4LdasNmyoPLbtDGcDCyYVdf8BzxvDnzPehv4kyVBkzThjVEkSpGTv8PGQs4yRUgiCaKa7PTtBY4ohNGqR": - "19999999999999" - , "37btjrVyb4KFGS7upvgJHtmp7y7EFB67utzaHf7PM8y8U4tNkpmARNwiD7seN4NSAceHmj64KLGgh9qn1BpYF49NyWxocBHn1N533qBUYfhQar9ceu": - "19999999999999" - , "37btjrVyb4KCfir7GrvC6Y5kBNjeakZNd5po62AzQQ85SGkBB4QfXibC4fSNK5YvNeVgmPc8WbEeSUHRjoiqhJ4HDtinK2deBHSdCH6Cw8k2u92rdh": - "19999999999999" - , "37btjrVyb4KGAExHTQjLUHJBksSXGTomjgNsw8a4KepCgQYk4gxacKb84vGpPSv9Pjt3gdgMjA1nB67Pq3XyJpTDk8kLcXpJawCe6SCJf5jUowvAz8": - "19999999999999" - , "37btjrVyb4KCE1qeEoUh9b8CpcZcJ794Di14AxAELGoppJNVdB79nnuKcgRut566MdDkxTqravFaDSD9iwAvDByUHi59xocCY3ButEjmCQeLTLZXQ7": - "19999999999999" - , "37btjrVyb4KGGSGD8KgQD6qUBaSjxy5JRtsmMSHEGGAZqA29ULGwci8TcM16vBhywuBw54izQtpAqXeyUnbjh56hCgoqGZp9tHTMLLkEgLzwxVCZ4N": - "19999999999999" - , "37btjrVyb4KG5ZZfwwiQuhAGWiNJ2FhXP3oAuiq75qknCz4CZWNMVY4B9BmiHRHnWfhUbkLHUqfabCYASUk2V1qGuDw97x1gdf871aFY7Lpz3N1NvT": - "19999999999999" - , "37btjrVyb4KFtDHT2vDtMvQbLBgfH5hnpyVTTqqpPsieykukuxrDShHNccAEEj7M87UuV2GJ5pPA7YJ4JPjSokA99XaDgLmeaAumhZPHMwzg2Laspr": - "19999999999999" - , "37btjrVyb4KDHFyvvKb29RD53ebt6N8kpbL41J4VxWpiFC4FnxxybP33M9tBbdqfMXvSvyTQpv4dULXf5B838kEWXSJ24bpHtFgcbRkiHQwqWFQ5du": - "19999999999999" - , "37btjrVyb4KFh7jhHCtWxW942ceq7Xhxay8FZ7GkEBezGyFm3wJcVBGy1YYJDZ4Z7GbrFZmHLSe47zFs8Rjxk8rveoRpo1s43HXrMrhd4ijim4jJVP": - "19999999999999" - , "37btjrVyb4KFhYgC9Lr4Se7C1gL39d5WBVADyUyQZz2BfG4BZxczyW827JRQR5enyWaoj6NnA5NyKsheV6Eb7WvQtbN8D6116HTknHhEb5jh1yUU6Z": - "19999999999999" - , "37btjrVyb4KDLtM8HUJsBwergjZUj4DcMfkFmbV4bXUFGJk815o9nowX9ndPPVAeSNjAFYqJeFwTiMa9Ka8LqBnqFZgPpacyx9LrQLoXVMjvvLB7DK": - "19999999999999" - , "37btjrVyb4KDec7E64byKc4XjmmCRDaTGQYgHJTPDijZVr7NwZSP8g7ienzTLx5Z1quaQRhJqqAyV8Z2QdkzXvjTTRiVDCqps78uGp3uuth4wEJKP9": - "19999999999999" - , "37btjrVyb4KF5R1LEsaQgjWFWXwbgJ51naDEaCRG23KiAN3UtGzaT5PvUANtFBgjmcCtPLMBYMTGL4S8px4HyQMLAyF4fakYoFAJC3PkxCWMUatGWD": - "19999999999999" - , "37btjrVyb4KFB5Tmw1wsLmuv17Q6y8i6HGpVxbW8k4bevmob3DcdbH6jzrAtUrBpKgfTGgPMpLAbJcpaByGGJErkXQWFwrNMW35S79hxFvAN2GTXVQ": - "19999999999999" - , "37btjrVyb4KDEX2XToMQoi1No3YdREgZWzrf1xQPbfhbZTZnprFwDsRMiBxqUrA7p4BwjxXHDyqAccPwyX8iWWquz2CrLazJMR4s8AMz2US1D1ffJL": - "19999999999999" - , "37btjrVyb4KFTKCoqtZBdbh7LtJ9mRR1nbkX7ggP6a7AwvkSDxUN6U5GJWfuRXnL3a5x5e16uQwyjC6PoPVQ7VLdJXr8Kd3eFknLu6NDf2ey4AaJo2": - "19999999999999" - , "37btjrVyb4KCHCpiGd1J2GtVjP4KxEWP7RE6K6yxHzE97cbDgFD63fUFygbni8jKw1N37nGsT43KBvBn5w9ee8sVegr6Tg8fAr52mUkhdvTZYJV52T": - "19999999999999" - , "37btjrVyb4KGLRpX3uQfSeLovpMTcWfVZSM5RCufYvy2tyCMwrLXyHKCM9VqQh8dCQA6WcTrViaxqpvBSeKreHFL4CftfJU1z7CjHAze236NLesbL8": - "19999999999999" - , "37btjrVyb4KEdwV1MS3Pjek1HjLN2CSq3SJZGFBbZctkGLz569i9RWN15bAvCcZ8R5dgEi8iYjpmMVKioufoGv3issZQvVtzPz38pWHBViyRK2how5": - "19999999999999" - , "37btjrVyb4KD1x4cqHfGxrvBubZ8pSM8Jmw15UiHpy77eMsqpMewGND2GdvAwTBZhf4KA4uypBJnuUPbPYFovpRVJ92BUaMBHfQnAD3i15DAzD8EvL": - "19999999999999" - , "2cWKMJemoBait15xg1M73WAvWafoieg2GrcykbRk6J1QC2jMUXn7LpXf4mk5RUeu8qYeG": - "5428571428571429" - , "37btjrVyb4KC3HyNR82Bj2Sr9o6CF9o3J5hBNycGb9JwrHggTYUHfivi87akkYDv8ayepMkM4mNvxTKvoVdMHFkMnZZgrk5qobwPKM8idSnYYmvTRU": - "19999999999999" - , "37btjrVyb4KCmCLYttFEWLNQc1MRbV1NyhhssRioZ5CgkqHgYUTT1pPSr2hrfevSe8bSwLiPsLnaCbsxJQc5SWgWYEJDPWuUA1s4AotQxERNbT9ReA": - "19999999999999" - , "2cWKMJemoBahLnFCQ8wrTuZ3sMyiCeEkUZDYLNucPiVTJr8UU3BgADsKtqosDYNFXzeiw": - "5428571428571429" - , "37btjrVyb4KDHDPBVenqrh8tUTVNYX5ZGwjd4r3svqdnwWicGnMZZV1E7nBJVQsDY69co936H9onHpmA3PYSabYH4ibbULphL1CitDgArH9KknBARc": - "19999999999999" - , "37btjrVyb4KD9Z53z9qD7gTWMHr22e8jDcpCHgJFQaGQsvnNkycRehAaxLAnufNRjhLzQ57XVGJnR6mcsk6MorapLpADT77tyTaX9xfUSZyTA32ZAy": - "19999999999999" - , "37btjrVyb4KCsozLcUUHR8GyVG7erY6j9zehKTADn3e5xpRJtu1YgfJzSmAyERBHUXa5LGWY2aR2KqcssnRjwugh1bGjxc6U6ZrePJnALYTw2TR3yh": - "19999999999999" - , "37btjrVyb4KEDBSAmNtUBy6pfXesvTvtrDZQsSYcyo7SUwjLkhoSaPDCsNqMmoGbqzFQyEe9DNwK59BMudtdkzFPBpbgiEWx5SZr6vVMbpe86qsQJV": - "19999999999999" - , "37btjrVyb4KFf5NQ1DuNoAP4phRomqdEUmtFb6sWcDHkizGj56dwn54LfKrfWa6Er5sxDXYrzpWwS56PKmKaBjJtn1JqN67K3CihFXXospn8B2TDz2": - "19999999999999" - , "37btjrVyb4KBPHxFJqCekpPztGnLgbVsUA46Q8Lj2LKbFJL5Nqk5LgP2u28eBJAxkkU2r118ARdXW7fXLPQgctwK22L4N3zc6XeoDqkadGmTd4s8a1": - "19999999999999" - , "37btjrVyb4KBYe4RSCngNCgVMAeMJkRQqoJs8t6t9e9BHcNvvT6awv4CruMWH2FyiudxcGfZHmjghDvqk39iFrmCt4XE2XDuYzyo97BxwS6MngfeWp": - "19999999999999" - , "37btjrVyb4KF3MxxJBeJqCPFgHyUsSDkrDqoctSSVi9h7F4Wj9zFKcPVuVju76KYhdp7nJhy44512Wjhw7WH4sed3MMSh1HYnKUfjZXGkoZXMajaye": - "19999999999999" - , "37btjrVyb4KDsi9fc3RfExWLumjkp2YrcMjZpew19Z92kZnjPy5Xa84KY2WZw6xmjJA7AXFJCBWtrF9RFw1BjCewEqK77CVYj2s7bk9aAA7yyZARRz": - "19999999999999" - , "2cWKMJemoBaj34AMeqLspGBgX1PVc7z6VkALK3rtVd8iFgCtMUenNoHhVRnjeGfYVQJM1": - "5428571428571429" - , "37btjrVyb4KDpppzxzoaPgnstPejNxGaSZ3Vh22Qd2DWGrwfLJ2tizs33Y5Yjya1U6TXPzVX2PT5g1PXMy4jR4aWZRGZqYJk4Uw9p1h6BhEa189eiN": - "19999999999999" - , "37btjrVyb4KEXaPVoMuKpnVEKKLMFuGSvYL7YMAD529yxeK8Y1zqnbh5FQ8GMYpJwARugWmzaXdJ1gopgsxziC4e5wgjf3zkp7RH41KTJ73xLyfrFP": - "19999999999999" - , "37btjrVyb4KBrhG1yaBVY3X1ZoTCjUH7gbiA4qSFsMGgtLUBgwHiMZPiAJ3kQrRiboPV3s7eYXZD9fnd27qRb1cCEMc4oU57aPn2cYcEdAEJHrsyLB": - "19999999999999" - , "37btjrVyb4KEC4vC63KNqRBD7RX1KBwWDdPDE6oXGxP8x5aKrbVTALaq4XBdak8F47Kt9VcsQvVsKZfAit8vBtZpG2mc6VKUXCFv8pTYWwQMnABckB": - "19999999999999" - , "37btjrVyb4KFPbetkmdvqD8nLRFsUVL4HsVUYmgaZhAmBXcr78M3XoZkptjuszd2T1FNr1fGZApkZFZXikGtyhCc7jH5JYD1q8csTNSWQn4Us3nzX9": - "19999999999999" - , "37btjrVyb4KDfwNJcNMYsyEDVHWrGrNAPBwF9FGEnm5j2XFs4BeGdiSPqPtqCjWCvcRYBfY5EoDjRBhjsTrr2HjB1jw8XZ9Hy8wd9gz4KkCbMugSgf": - "19999999999999" - , "37btjrVyb4KEgvmzjLT7R9xHg1vNob6vCf999UFuG4qfTpHGZufdhbkUogSFJXtQXnCcJDHJ6xuZt92H6VgxGdhSLQ9gmWZy4zCJEVu8Nj8NashVQY": - "19999999999999" - , "37btjrVyb4KAtY8hCobTmAB36dzosSo644ZrzATKQhP1AsnM6BAVfTWwMX5BGXhigxLm5hk4beodymyjivxrH7ZY6BZjMu3AtafB5guvagxEZM7vJq": - "19999999999999" - , "37btjrVyb4KCRMJDqQ3iK4M19XhWGWpFbCoxjgeDB7ZqUhgW7jSYLEk5oVL4okVPVx5rXCgoK2ND9kAWnNU5QncJp1qvuCngRdJaLrvFwp4boE56VR": - "19999999999999" - , "37btjrVyb4KBTRHUnz17FQNFzHR8PpoGGwuNQZauAUxmvTb1o7Ragv9Zvyiv6Cb3rnrmYY1PGtVFTmom3TGg4mK5XpkRyf7PnnCG5EQM69i7MViLpU": - "19999999999999" - , "2cWKMJemoBam1WPtZrz3Fi4EMUDao74k9Xn4fhyVYLqK4o1VRzoxPFU91QBRToLbVyrjX": - "5428571428571429" - , "37btjrVyb4KBUH8nDpwtt3sSc6rJ7AkYjmnqvt1tJ4J8ZKCuqPrEuEioJJZXeD9aohveoB9zhRWru6oM5zyBcgMtkA26HLtTDKsSVwzoqugfftbiPu": - "19999999999999" - , "37btjrVyb4KCgWqZ8sJW46mQGdZS9wKW2TEQesyCoRScUxvisbdvEkfsxYLR49i6wE6uP1BBgPX9eg8cxKHPuNyKpStwf5UVmRCXD2ahotjamotMwV": - "19999999999999" - , "37btjrVyb4KCR9vZcXetWv4QdP4jPSH4msGeXs8DUBUMVYJHgD62etfv2jiD7gmLbLezCAiGTQu9JvrHd9Wfu74wguKgkX1vCUQkzcWsn4rVWsKCyt": - "19999999999999" - , "37btjrVyb4KFV3TiBqtLDN3oHQr5NrA8ouAAqasFU4ZuB9W13xgcgWsSy5fUtbNL4imCruQz19hjzBzykxGxCAarrviCUBh3sxWbvvTTHdvpyWGgXc": - "19999999999999" - , "37btjrVyb4KGM5rFFreGtZAs4PFB2Drb37uXRHebh8rCeVWFkW8De8XAbYqvfQrAqVthfJp9Qy2YzbzNhWSiUGY3D7yJkRkChyMveKCWT8qUTNEu6e": - "19999999999999" - , "2cWKMJemoBahEJS9xuB3R1ofSgtG621enmfpxfx9Unpo2K26wJPioaA4tizZrNMACNoQb": - "5428571428571429" - , "37btjrVyb4KFGV8HUDv7S5E8CSBV3pQLgGFt5HXa2jb9ofbAo3gTxcaQ4So84mHsNk9mhAybq6miH2VZU3iz7cqCd74gPMyn3zdUsrF1u2rib7HSXq": - "19999999999999" - , "37btjrVyb4KCF4JTyyC27XuFmcrn9Nxj1DmM4G5BKnf8F8F8BSpvn3PnsLRNH2RZJoajmg4yqHnwMXpUnbb7sFSuthjXv6YUenX8EWsApQUzAm77Dm": - "19999999999999" - , "37btjrVyb4KD5zMmtnD3jWpX3TSJnZJ8jMzCFQHYa3HcHNXxdAnK5A88SiWncRpJQxesMDrYgzPHk7SnFNag5teaFELV6hE9opnJpJzMGpVicDDRX4": - "19999999999999" - , "37btjrVyb4KDTABtj2RScLVCLVyFhxcURYUZNVta8CghbH5Edz32XSP79NHc28QTkKLMNUBupRnJXs4zcZt8C2fiPFGZfgSBMqMGMidWc2zo9piRb4": - "19999999999999" - , "37btjrVyb4KCGn7x5G6obn9NPNoTuv25LrBcqK9wHCm3XbrhxqycSQrbPfsDxgDp2M8pqTjCk8cVEG2fRxWrTjfG4q71MtyMo6nt8WG11kJzdQQSNL": - "19999999999999" - , "37btjrVyb4KEhnv3cCqP8jzRBbwE5v6ymPkBjTexHCcCgYJarjHHaxipJvz4aaXc5Xmp5KXxnC3SoE1oqR8sdGHobyfsAqJy7DwejZWpkkoYD7LJsS": - "19999999999999" - , "37btjrVyb4KDvKgSbCTx1gwwZFGe5DZaXyGwTYGGnJNCQ9C61XP4n1pKFQtNbYEowGeRoKHCGUvuU8Ebz2vQwN7YhcJ9bSb5oNpAoCe8UxX5KK5C3e": - "19999999999999" - , "37btjrVyb4KB6yr5YozXGqSKemHyZfsgiRQFX3VdJBKx7waoSaScNWc2dNvhNp6HSnXMxUwDtBvicXDWdpoJ7cKLWAwqEYki5azdt1qDP4sHXh8XhJ": - "19999999999999" - , "37btjrVyb4KCqRLQRj8svdZGGLQDZGdXztzeC15Vvt6uZWg23QAdfL1dMc52dpc8jqKquWNj6xjyLnLciVnRxzEq1kiq54ssmc6h7V5xK1cqqKJWBT": - "19999999999999" - , "37btjrVyb4KEW3PG2LAJNwmok2H6i149HetvT6fYrPsqPGpUkucNkA4b5TQmv896EF44UmcCAXDycfxFB7GcVefBCgk9cZffVUdX3kri3i5TEqSjKm": - "19999999999999" - , "37btjrVyb4KDdgCo1a7URfpQVFoTJEUcn4LqWpAtCeLaW7NeGMJtecsahTJM7886BjLcnhU2CboLSUojCPcab3WNTmXFDrRMHMHdmWefCAyYA7QaaL": - "19999999999999" - , "37btjrVyb4KG5vwKTPpCSQ14a7Cv4TESosSVoFVRHsw1vHj7Tpb7N4j1U5dtFcY7L3MWsH9BJqQjU9NxwaHpbHCJAhmsLi2mC2BE8k8Rj7zcjiiVhR": - "19999999999999" - , "37btjrVyb4KAr171Hd3fu65bbtKxqwktHGwY9kNanPYGXQcFKA8d9Hp1RgLrxzU1AdJCJbJDByTnHdDmtA7pm985tKK8hr5JdHPXFfSvkkYZn3kb9G": - "19999999999999" - , "37btjrVyb4KEZWqFxGYhFuLE23i92B8BiLRwwFUdnjmM24KHCNuWik5dc6MJqz7GxupgKGK5zzbYSXJyA8DQVDszyFmJuoxgzPn2GSnfBoREZ82ZdF": - "19999999999999" - , "37btjrVyb4KDB6sZamEoJWYBLoDWucRdDtRXCuQvLCoVoHPNjrywJKDz8PQg65ZtLvYvREwAK9oLzGGb6UcdAf9zwQcFaKRRHhLzCZxwTsRDVyPkSy": - "19999999999999" - , "37btjrVyb4KDJc8Af5dfJY2jcFbtkofFL6qXBxWnk2kHzCE63qAQR9Ynnk1XkfUrcnBrN7EEyvxmUDEFdNFfZHzXKhmkSQht3b6Y5rHHmuFYYoKdZz": - "19999999999999" - , "37btjrVyb4KDjPpuxBuJM1Ma5NGBqriSEAcozZMqYkWEkoJ3GgR8MAy3Zeb8q5BvtsWGEpSFQ69znPuaX4kVCcnEiEMDp91A6EL8A5YM12cpYYogLm": - "19999999999999" - , "37btjrVyb4KDmCmpc6FutA3PbQmWxcsbzZsFEdMKhHxrJVtGkmaiWd18dKmiaRA6o4Y2sAjDwjFozKzNzQg3dp8CXVSPpWgDLAXaozoRyPanW7UM8B": - "19999999999999" - , "37btjrVyb4KCLfSBFhCBdrb72YBNJkKcDCqpdxf3k7iwJTj7M3txxiq3fcam7Nyi8sLcJNSfgnUrh8C7RKEMN5wWpku7HLdZqZVuPRjeihhgXmEpCe": - "19999999999999" - , "37btjrVyb4KF3ZQhHTvVH3L7jNYoZ3XWK6SWpqZKiu9AGz6qNtxoxhAmmJpenFMA6fedYDT3Lt7cihgc1q4pE2GJXvPuknAkjvESmPxhhzkBzuiRis": - "19999999999999" - , "37btjrVyb4KF9xNLdS47pRBLB8e8bQLuvrBiGJbnHPNCbKU4wrMerJztEtYJdHayvaoUEmJ1vc3aiq9Z3UgP83Y1b4rpiyrGeYjzQhhDgB6DW8sWJm": - "19999999999999" - , "37btjrVyb4KC4LdZLvrexUgAntpySomDAPVwdMEnz1cP9pZxsxZqVYzM6zPPWAhc7byfwsLdgW8GEMTuTUagYFAKEmYgaDmYxK7cHxtWJG3hiMHxVU": - "19999999999999" - , "37btjrVyb4KFfXPG5GDEc4tLyVUSepKD9GGXZcSuP1xtLLRQnQr4wSXawT62bSJsiPzS25kdADKh94V3iDksm9nq5fhV4jixCnpNjsn7k2hSkwrAUa": - "19999999999999" - , "37btjrVyb4KC1L9MsZ8htPomWp4FV4hULeBVT6jf3GGqmDcw3k9tPn6pnfqGTWowQDvqVr7BqtQ5rcQ7gc5z41qh9vyBV7Ds83bRsndDbTAwkEUJ21": - "19999999999999" - , "37btjrVyb4KBtLs3NwnoLkyVx9ZxSoQ7mQx2ZvzanG7PGWWdMA9ksXqZxakLxdj9MAPKw7eQoZJWHxJJCsd7MeWj7ujfXtPsthGhcURT3Hste4Kr4n": - "19999999999999" - , "37btjrVyb4KCaYYFDdnbHEdBzpDPcL5iH98AGF8J5avuweDHwKChDq9mBvLKVJS6F4YTuAVDigPjMnAcuYUJ2UUbvDPePFZBhLhBrFUKeauoKC8X5z": - "19999999999999" - , "37btjrVyb4KFfnmiGpxNSGQVMfmFpAFrEAEhZwGPQDutSHnZqQXPhcXxDNcbdoKiztyQHpTA3jSmVowZCxcaJMS1k1wu8U6nXTzejgh7wYZjycamU6": - "19999999999999" - , "37btjrVyb4KCTVE8b2UitH791rYrkSrHG9u449h6JHKotuPWRsdVZQfP1jXrs4ygSxAnG1rM5mGFM6cmUqA44e9fenjbVC1QFYyn3R4CaptVZypKgW": - "19999999999999" - , "37btjrVyb4KDaKs8A6CU8Lrzxpr3WNM1kDdd4CPe66TqSP2ehHexrAuZ3ykMmhkaUZEHUEiq78ELQx5vpSFGHXFKbyGgrWa8rokqamCV8bSKiqsqVt": - "19999999999999" - , "37btjrVyb4KCdPziHrv1QgXL5zMy3KYxr7zPqoRd96iz3LNrkWbobRmPswTpRKgCQEkZcEnipiNJ5UoULAc33mbR44MchdHT5vLNYT9sPxwzpgNUWj": - "19999999999999" - , "37btjrVyb4KGAZJWCpicgRkb9ijP3Jnv6y9EYvnpMqkPdBZ2d6fdnCa9C97HUmfHLWF846AKjViPvnY7MbSM8mTM3VDx5RazBFxA7C7mZ9CyM48AW9": - "19999999999999" - , "37btjrVyb4KFfgfRyETGNXNXm6gAxNpTQSxr6bM7T6yZE1ibiZBovxG52PioVmLRnPYxs4wYddAfgTH4mbmtLFnwuZYSBh2eNsdLdc6vWb4AdJNNym": - "19999999999999" - , "37btjrVyb4KBsV28Wce4x44WsTVoXa5s4zaBKALWXxMQ2MtfVgB8LJJW34QFpvjrxKmheLtpcLyVqaeu36oB6ZcgQPppFN4oqhdueoKBEpn8dfQUVF": - "19999999999999" - , "37btjrVyb4KBEKzyCGqao8GmErVER19oBH3L8xVNCSZs8tCVd53iV5FXZAZ7bNCT67bKoasGeiYZxEoDzGBsKxb4uJxStU1e9wkaPo6BxUEErZG7LD": - "19999999999999" - , "37btjrVyb4KCi8WRzrkFiE1AVYbSiXBzMRTuTLv8DAchfg4tPaDgHRuDN6m4dq4VkA17pkWwCoa2NmvNb5sGeU1ZkjcqFuYrWPK2C5a3TLBfx64uLs": - "19999999999999" - , "37btjrVyb4KDz8QGqk9LJ9kSsSd1zKgqfTuiTKbL92b4aDSXmRPyrFZp3VPEwhMyEmwCiSkpd7KQztirmU6CGwiphhiHoXbbZjkbfiHN5Mq1y7fmJM": - "19999999999999" - , "37btjrVyb4KEcCa8yc1d8Zrne1hRtedHQQGPbkRJcvHak2ygcCndPfSqWwb2L59ERxhtqsMJLdS1fPQPs2vcJcQCvB52tCm4rGCDwUmRG51PUzjSVh": - "19999999999999" - , "37btjrVyb4KEhvykuoQZKWdNKFgTrugRUSV66yr8GCXREuaX2PfVQJeuXS4h1bNP8SeUxHAG2J6RfK35YnsZj5qkWQCWV7tVYMVokU5bw9y8CcmqPy": - "19999999999999" - , "37btjrVyb4KDsFS7rbQjZQGX6Fz53u76NF2hF9iqRhfbx8ePmjJKCsv5rZV1hhtP6DHdKwLAf5zkVH9FE51xYuCvJzNppSn1tgExVQJpuTwKmyTekT": - "19999999999999" - , "37btjrVyb4KFtfVixJcJdD27YZfXfRM5diZFj4TEazkCAhF8KyztTbe67zQpBc1RTjruHNvefdJ9Jtr7u5rebR71tGrGtKioSSGKy2hMKd6GUVFkEg": - "19999999999999" - , "2cWKMJemoBaiXc4dYCHfDyvy3LcqPebJ8zfRJsZZoHDqik2SzK9Be73YQ5W9u5jEiMPXa": - "5428571428571429" - , "37btjrVyb4KFNpxUYvzqFKsRfRYJKHjEuFfgy6rpoGq29dcMrNhbKTvqNr719U282rp9PcnFonAENkUdv2nE36wZmyNkj8JVQJL1TLu25SKjGFNzVs": - "19999999999999" - , "37btjrVyb4KFYnqsKFfMwj4S3PcCxwxutoiUubHazLfw4wJc5bfrQgpNEpRnGCS2UUfzvMWRRV2vy4wzPKE7tshLS2YEW219R6QfAenXzktMoXCmuU": - "19999999999999" - , "37btjrVyb4KEbo96SLroMfZB11rEvztPswgdqC5ESkHXc4EaFdAhsDQ24vJK23XsjTJzpPS3ZcDWiHiFVtmp5wkJrcnRcMe74s88eTy8YLvLL7EBRj": - "19999999999999" - , "37btjrVyb4KBcyGa22cYKz3Xo9UnB2kzZg4nqVX863JCAvUd54ehdg94DWwnBasCv6sUdbKdh9t4tf48oaXokeoms1HDNuegsmRjVntHBX3Z2hnrV7": - "19999999999999" - , "37btjrVyb4KDHmdZ8ewhythkmGaUzLCwME5pGtWR7nPhE9nCjLMcKstQFyKq1vTSagA2BXtiopfGwtLq2e1jhUVKsw1Z8Me6XTmLm5C9MzRYCZCd3n": - "19999999999999" - , "37btjrVyb4KBGJtifVyePJjSHTno1XNBeTcqmSqEhyUznts9KGQTsvCd9Hq6zM2w29njvmJYCtWmNkUXvayfqyv7epN1awWkKK1WUFQKJsjtevSKz7": - "19999999999999" - , "37btjrVyb4KEwqVLa1yaRPdDUctf525DovPsxoXZfqNp26eXQnmTSFwY3Q3rgPsjRfTKHKtjFpxPy6XYvjzscccsZYfXSaL9MmgrKAaeQgQhCtoXih": - "19999999999999" - , "37btjrVyb4KDxRyqtP9nWyEd7sfzdB8Xgh2egCATJAVtvxM2LhKLp1ALCE714vMCsbQZ5SwvVgiAvmieJTkae865ycwU39JN4pgt27pqEuB8uvi947": - "19999999999999" - , "37btjrVyb4KDA9F68PUv9efaoQHTvacu98Dk6Zx3784ADx4SDnwMfDt3uRfJwqBELeVuis5UEqsf9u4zAD9YC82s6YNmQu43avWDqrQq9Z4hHkEVrL": - "19999999999999" - , "37btjrVyb4KCjschbSccsYGDJo1rVBjdVrpH27iRtc5h1q4XRqpQJTma1NA9t9t8PrTsJjFE7WzNCczJHQR1RGXW1jDNEiEqNa6xctAZ4ZBtXKHVtp": - "19999999999999" - } -, "blockVersionData": - { "scriptVersion": 0 - , "slotDuration": "20000" - , "maxBlockSize": "2000000" - , "maxHeaderSize": "2000" - , "maxTxSize": "65536" - , "maxProposalSize": "70000" - , "mpcThd": "20000000000000" - , "heavyDelThd": "300000000000" - , "updateVoteThd": "1000000000000" - , "updateProposalThd": "100000000000000" - , "updateImplicit": "10000" - , "softforkRule": - { "initThd": "900000000000000" - , "minThd": "600000000000000" - , "thdDecrement": "50000000000000" - } - , "txFeePolicy": - { "summand": "155381000000000" , "multiplier": "43946000000" } - , "unlockStakeEpoch": "18446744073709551615" - } -, "protocolConsts": - { "k": 2160 - , "protocolMagic": 1097911063 - , "vssMaxTTL": 6 - , "vssMinTTL": 2 - } -, "avvmDistr": - { "CWJf8Kl8Gp-DhcWKuhNRUU9P0_CVI2LmpR1MIMxVgGQ=": "20000000000000" - , "h48-GEVDKf_0_vGKzmGOuAOhhIm2uc0OEDSNwFayV28=": "20000000000000" - , "PO1Kz9bpAowfWD8u9Ial2OkmxDiw6bK_ICDPvuHshJM=": "20000000000000" - , "mqJXwreGLRzV9a--egcVvKN4hzIcNUULsXqcPWe3YXI=": "20000000000000" - , "ENoYC3dNAtKL-lvjCTZDVhQYmfyWVtI0GNbz4QKqVdY=": "20000000000000" - , "o0O4s8YkitBZPeZLVyjn8pjtpBoncr-H9mbtAJS_KfE=": "20000000000000" - , "1XEVfDyaheIAeQICkHlwmvEuY9A7E50hA1v_E_QB3Fg=": "20000000000000" - , "OKVfmKrrzY0-10uxl9IxlYA6CFWwOU1dN-NyUI0bobU=": "20000000000000" - , "LYOSBM00cdDToqHepveoat2SN6vdPntA0nSFXRch83Q=": "20000000000000" - , "3Z-Z3rLCxLt0C3KgagBq3wOXrfm68_zh2st5Bi6Covs=": "20000000000000" - , "VTx9H6wpJNMC-H-pThklJ9uCllwqXaU0WXHcVTEFAIU=": "20000000000000" - , "beyF5mz8icvrBvM-mvQzLfbnHCmxOOg8Z7kJs7nySZs=": "20000000000000" - , "rs_VPO7SNO2YlSY2N881xHFeBnW_Sn2o4uSfuGpq9cc=": "20000000000000" - , "5RZPTI9FoSvLmiXjKYtUdkrqoMg99tIw8k4enSB1qlQ=": "20000000000000" - , "QRBLXNJdJCVDjbwPvQmg_liOcYIWfvoKf7Ns5w_RDvU=": "20000000000000" - , "YG9mVGb_MAvTSdFgOUV8JbRBxnj3sPELZxQNVup_X18=": "20000000000000" - , "7dEmv0hdv1a7imviD3q3p9pFBFMC77Byx9oinyGwdIQ=": "20000000000000" - , "H_Qs3m89FGw8QxVTUGuPjdbOPQyP8vzcD8I37BkRAXY=": "20000000000000" - , "pa6NZ1j_bs8kezg23cUQiba3UyLxLiGDQfDXMQmuPSE=": "20000000000000" - , "Qi5VCXOUdP-U-Pd--boAii_-gwMpB0IRfibzxWEN53s=": "20000000000000" - , "cLJrI380JOISi9A14PYTRmClcxPNQS3_GIZdqcXC1JQ=": "20000000000000" - , "BVY8wsqEPXPQ7DPTvnvat7GRiwxFPHC4jY1x3ZvY1PE=": "20000000000000" - , "FBlBD9ykcwuFmoogsVjRCUag9xpkwCAgbYDNazT1oY4=": "20000000000000" - , "KHwUZRYdwRs5UYIhOO9ycjucY8WvTzpkZgZ4PSbDDPI=": "20000000000000" - , "ED2RmO7Wfad2p4gxyzhr4gqlhavksgHEg1acZiKMQF4=": "20000000000000" - , "BOjqPWCmGewTKqKekH0HSgpnOEYT8g0qV4t4t6Nj7-c=": "20000000000000" - , "b-8mgbBV-r9bqufItyyPp2WLitNhBjaMAajl3GfteeE=": "20000000000000" - , "JW_kuEdd0TkJEUA35YUbf_K9C4OlpZd83iTUqrD0q0g=": "20000000000000" - , "IF7PMOFaXdwztrj1j_yx_YBafdZpb3pc5EF6y822KgI=": "20000000000000" - , "r9HNGwms9l0cMBuT8CznPoadXKbzLPceo4-vDydXUwE=": "20000000000000" - , "rM0RFpsVm738CCDdzBhrEz8Q0CLIqiBKMl5rtdFlWmA=": "20000000000000" - , "jFyHtgHVcd70V1SZ7O55mo8yvYw5KsijV6fMQEWkJaE=": "20000000000000" - , "qWmtDqvA3KZyySJLRPFPO2TiOZh3Dpv1FCJTdEilJvc=": "20000000000000" - , "5YYkqAleNp8VXGYiD7WsXvWZQwybkqAUR9xMf5lLvzs=": "20000000000000" - , "bi2YeYdi2W2r7IDYToq_N0RR1k3z4GYsRo2xddi2Y7I=": "20000000000000" - , "vENWfzLRm1wwHYWTUIOznVCXC3ISPt8J6n3gYFrwfpg=": "20000000000000" - , "G71fGc7_2IoExvY8VctjxMCd7lJsTWgvWzg__lF4qcY=": "20000000000000" - , "pFzX1lvX3LPolGCv8TQXfWAZupMZEjVlMWmT7nUV70I=": "20000000000000" - , "pE7umM4kIaTYqKOviWvgTb34xky-kpbN7VvSzhOT8wo=": "20000000000000" - , "P6J7kBAlCPD4wxAnzuzlqTBWMyqI1zVkqVWM5kKoCwg=": "20000000000000" - , "CmwjLeSIEKfLzd5ks16QoGCtYNc--wiGsgWWM4OKsco=": "20000000000000" - , "-RTrh8sxu9mOYYpcfmyod8-v1Z0nqxMunwK-_NFDzYQ=": "20000000000000" - , "EnoSKFBfSJ_l7RXMglXTSolDt6VeNRMay4soxkUmk0E=": "20000000000000" - , "VzxlTAQWmOH7ALIXviuXH2pjjYmtW77r9ypeEZlg4mc=": "20000000000000" - , "93QRpWUE-Yqthy85Y8poB_WeWdG8A_9nnq4HJiMfJQc=": "20000000000000" - , "H7YIN-FF0kUawzVnhQpCoMLuOJkLzYAtZ2xof7vhtPs=": "20000000000000" - , "a9_Q5Pzte2G7wXujwVBaAzLcMki6_UjKrxvWzayJ3gY=": "20000000000000" - , "O4h-7y-2Izq3ojxailZAbMd0VCq78-kIMv8gIcaA6cA=": "20000000000000" - , "mlzqpS0hE6s7apMGRQP4Cx5Fc380yt9gQX7XVcVrmQQ=": "20000000000000" - , "aK-WCeAwKHQE9H02zvRLRdoMPIsZWiOfKkbA6yTyMxs=": "20000000000000" - , "b3fq65eebunM4fM3AQubawjF6Mt9v9jyEXF5f3hewbo=": "20000000000000" - , "ZbZ7v6OcrjZ3vqPFVzaHOK2A5UzRYy-wm0C-ngebU_s=": "20000000000000" - , "zXza46kY7Gs5cJEoN2TUwAaXth5W7uUKQfNiaPyWDSc=": "20000000000000" - , "5q5RzTcpFFUne5AKkua3DJO1IFQEOGyb2jQvV4DmDT8=": "20000000000000" - , "5CzeQFC__uUi8TRPuWVgsUeJauYR3i1f3rvD0CrC34o=": "20000000000000" - , "KOp96-E17RXmCf0_vEOcecpTmY8W0wpbpBwFuPwFbKM=": "20000000000000" - , "EFK3F4mO823aCcko3QmFJ3Klm7glGs8a0f_f6WVIwdg=": "20000000000000" - , "e4TOcy9Qp5BQ8tXkEXaWpuHRmAVcJRfPEV3sVCOKZsQ=": "20000000000000" - , "w-2bM_wksghmtHp4ZB2ZOQ-V9Dw1ZivS7RwxgY-DsB4=": "20000000000000" - , "9pKGBzQJLoqY6vcOM_OqHRgq9KIdO3ovCBp1mBEFKek=": "20000000000000" - , "TMFEEMjP7q64-Liae7CEG0ELKtEC2e2vDuCpMItyfzU=": "20000000000000" - , "nrRREQUC1zKTpQRRNDzO-NiQh6DJahitvTk0SWLkc8g=": "20000000000000" - , "9xnVxPVNI9fdN5zGa5Fa3HcIwof5T-2lMbdLh3_Nbpk=": "20000000000000" - , "NqOaYkD2B5yTFQ1dHMY7X2LmV0Q9tZI6KYR1-dFW_z8=": "20000000000000" - , "zhXX6D5r4CDjlLLQiC87LZZL2zWUIYaXhxbcgq_Ww3w=": "20000000000000" - , "CXMg_ROxPjiJAyxUpBlUepLDhcdhMffR89izVr9vcRU=": "20000000000000" - , "vfTTtqpmg_3jQ7zWV3XhNfmtbtn32Z0fcfNc6_Cx-4E=": "20000000000000" - , "3UAwyThFcR1vKSBpktCSkJg3NpMQhL1z4l46NHpfJkY=": "20000000000000" - , "K4m8Vu1qtFRavgx0jrctVErZf6VbKDfBnigjQef6k-o=": "20000000000000" - , "rmyqI_SuwRsbR4rG1Uk6bUlSJRvo004w5SeejGQERT4=": "20000000000000" - , "oo8sxwl7TO2JP-QfW3_aQbE9zZCLBogFPnwEMPUBuYs=": "20000000000000" - , "lif3znin9EWfZBoYZ9Ta1c69eINSJNmaqkKJVpFuF2U=": "20000000000000" - , "kMAvVvgk0sEf3kHXyfb8gQ6H4gWaFBDSUwms4IFs2jo=": "20000000000000" - , "8CMex0Km9bk2J1r4FaSD_FSwlGRgh1e8C1-7fCGUAJE=": "20000000000000" - , "pUliJY_tq41pTdo5VJISdWbGGBnL_82pupm4AjZF-y0=": "20000000000000" - , "E7dg9_nI8tY9CXli9OyIHtx0FUsq0QZKLBVx9Cr8Daw=": "20000000000000" - , "cpO_GBP5qVwOCGxws6oGvgZszu7jy_LwbKZj_f2pg8o=": "20000000000000" - , "n8MZ16U_jB4Vg4BPZHGorDzVO7dC9qOfAdYhAluKD4Y=": "20000000000000" - , "hqzkwiRusxDSgY-MyqmCyTC0VxELSFdJKJVpzBGOdQM=": "20000000000000" - , "QCiQStlI-PWCbwclsM8ZvfrmP49kql7lAwJjgzZ_OvI=": "20000000000000" - , "7prDyNFRXierLX1UE26h-TSO0fmfC2lFHQoelogU3hg=": "20000000000000" - , "32mL1n7cF_xLIjWAGTC6vISGcafcJe0EgXaxaQNtrzQ=": "20000000000000" - , "H94Fk3T5fiEXPd1eGYfpwPP4_y9FVQWsi2bhIAf9hFE=": "20000000000000" - , "YLQqBDTjfVrQJcqCzgn0js4ScjJpbh3_dGRmg_wQ9WM=": "20000000000000" - , "Ctfg-00LO1JetbfqwOOIwrm56xdZSzzZRccGW52eCps=": "20000000000000" - , "GCkRs5Iqi5jyzRhF-Z5B4-EzgCRAb55pJK8a3kmrbwU=": "20000000000000" - , "975KNlfAi1B-u2Q0X0qBZpuZNLCUNnKnX-jvBzah3pE=": "20000000000000" - , "SrxXeNRxF0accD3dsKoj8ymSQeJoUVs78Llsy-4ZIO0=": "20000000000000" - , "m5zF99P2vG3cqGrG17VvRti7d2XRi3fuUHfec-jM6tQ=": "20000000000000" - , "A-w4r_kJIZpI8TqDAY-F44cR0lhZtnB25UhT0NXM6Zc=": "20000000000000" - , "7mglsAKSgUEkAyA6C5Ni-v_1xoGNPCN_cj7ctQZGZqg=": "20000000000000" - , "x3DrzZ_Yp8df2EGsGlwNAnclV2Tv3lcdqnI3Lk_0bF4=": "20000000000000" - , "GWoauU1tVb37fjs6mPrxXiBoy9HarPqyGI8zj1mc7cw=": "20000000000000" - , "op9p-7Xy9fBmzrjLbMD1jEuW1QVXTOsXSIwgaFN3sDk=": "20000000000000" - , "KC7yE_m_JSiWGVP9cpcfYTLF77taAPTgveRKEiIPg1A=": "20000000000000" - , "6V6sxoH3dMLw8vWcH0NQF2SZNPDzmtULTX4vxkeCQd4=": "20000000000000" - , "y0DLZDhvfU-M5MvdhoyxEFp811PWFfrAdIfDVhYCMzE=": "20000000000000" - , "wCHhA7PS7wdfEuMpzrOJfdGyF2uIChR2LnnAcQE3hHI=": "20000000000000" - , "s4iYnscFXdEK56b7o4ZvKpgN0YoKchpR-U9MZEqbGb8=": "20000000000000" - , "WkMPzKKtocKcbc7_fsFND1oln6gAfWJspg9REi75pMw=": "20000000000000" - } -, "ftsSeed": - "76617361206f7061736120736b6f766f726f64612047677572646120626f726f64612070726f766f6461" -} \ No newline at end of file diff --git a/indexer/src/engine.rs b/indexer/src/engine.rs index 27bb4316..d8b74fc1 100644 --- a/indexer/src/engine.rs +++ b/indexer/src/engine.rs @@ -3,6 +3,7 @@ use crate::sink::Sink; use crate::types::StoppableService; use async_trait::async_trait; use dcspark_blockchain_source::{GetNextFrom, PullFrom, Source}; +use entity::block::EraValue; use std::sync::atomic::AtomicBool; use std::sync::atomic::Ordering::SeqCst; use std::sync::Arc; @@ -44,6 +45,9 @@ impl< let mut perf_aggregator = PerfAggregator::new(); + // TODO: fetch from DB + let mut latest_era: Option = None; + while self.running.load(SeqCst) { let event_fetch_start = std::time::Instant::now(); let event = self.source.pull(&pull_from).await?; @@ -55,7 +59,9 @@ impl< }; perf_aggregator.block_fetch += event_fetch_start.elapsed(); let new_from = event.next_from().unwrap_or(pull_from); - self.sink.process(event, &mut perf_aggregator).await?; + self.sink + .process(event, &mut perf_aggregator, &mut latest_era) + .await?; pull_from = new_from; } diff --git a/indexer/src/genesis.rs b/indexer/src/genesis.rs index feb442ce..53314dda 100644 --- a/indexer/src/genesis.rs +++ b/indexer/src/genesis.rs @@ -13,10 +13,9 @@ use migration::DbErr; use tasks::utils::TaskPerfAggregator; use tasks::{execution_plan::ExecutionPlan, genesis::genesis_executor::process_genesis_block}; -pub async fn process_genesis( +pub async fn process_byron_genesis( conn: &DatabaseConnection, - network: &str, - genesis_folder: &str, + genesis_file: &str, exec_plan: Arc, ) -> anyhow::Result<()> { let task_perf_aggregator = Arc::new(Mutex::new(TaskPerfAggregator::default())); @@ -24,8 +23,7 @@ pub async fn process_genesis( tracing::info!("Parsing genesis file..."); let mut time_counter = std::time::Instant::now(); - let file = fs::File::open(format!("{}/{}-byron-genesis.json", genesis_folder, network)) - .expect("Failed to open genesis file"); + let file = fs::File::open(genesis_file).expect("Failed to open genesis file"); let genesis_file: Box = Box::new( parse_genesis_data(file).map_err(|err| anyhow!("can't parse genesis data: {:?}", err))?, ); @@ -36,9 +34,9 @@ pub async fn process_genesis( ); time_counter = std::time::Instant::now(); - tracing::info!("Inserting genesis data into database..."); + tracing::info!("Inserting Byron genesis data into database..."); conn.transaction(|txn| { - Box::pin(insert_genesis( + Box::pin(insert_byron_genesis( txn, genesis_file, exec_plan.clone(), @@ -59,7 +57,7 @@ pub async fn process_genesis( Ok(()) } -pub async fn insert_genesis( +pub async fn insert_byron_genesis( txn: &DatabaseTransaction, genesis_file: Box, exec_plan: Arc, @@ -87,3 +85,76 @@ pub async fn insert_genesis( Ok(()) } + +pub async fn process_shelley_genesis( + conn: &DatabaseConnection, + genesis_file: &str, + exec_plan: Arc, +) -> anyhow::Result<()> { + let task_perf_aggregator = Arc::new(Mutex::new(TaskPerfAggregator::default())); + + tracing::info!("Parsing genesis file..."); + let mut time_counter = std::time::Instant::now(); + + let file = fs::File::open(genesis_file).expect("Failed to open genesis file"); + let genesis_file: Box = Box::new( + parse_genesis_data(file).map_err(|err| anyhow!("can't parse genesis data: {:?}", err))?, + ); + + tracing::info!( + "Finished parsing genesis file after {:?}", + time_counter.elapsed() + ); + time_counter = std::time::Instant::now(); + + tracing::info!("Inserting Shelley genesis data into database..."); + conn.transaction(|txn| { + Box::pin(insert_shelley_genesis( + txn, + genesis_file, + exec_plan.clone(), + task_perf_aggregator.clone(), + )) + }) + .await?; + + tracing::info!( + "Finished inserting genesis data after {:?}", + time_counter.elapsed() + ); + tracing::trace!( + "Genesis task-wise time spent:\n{:#?}", + task_perf_aggregator.lock().unwrap() + ); + + Ok(()) +} + +pub async fn insert_shelley_genesis( + txn: &DatabaseTransaction, + genesis_file: Box, + exec_plan: Arc, + task_perf_aggregator: Arc>, +) -> Result<(), DbErr> { + let genesis_hash = genesis_file.genesis_prev.to_raw_bytes(); + tracing::info!( + "Starting sync based on genesis hash {}", + hex::encode(genesis_hash) + ); + + let block_global_info = BlockGlobalInfo { + era: EraValue::Shelley, + epoch: None, + epoch_slot: None, + }; + + process_genesis_block( + txn, + ("", &genesis_file, &block_global_info), + &exec_plan, + task_perf_aggregator.clone(), + ) + .await?; + + Ok(()) +} diff --git a/indexer/src/sink.rs b/indexer/src/sink.rs index aef56941..8d148b01 100644 --- a/indexer/src/sink.rs +++ b/indexer/src/sink.rs @@ -1,6 +1,7 @@ use crate::perf_aggregator::PerfAggregator; use async_trait::async_trait; use dcspark_blockchain_source::{EventObject, PullFrom}; +use entity::block::EraValue; #[async_trait] pub trait Sink { @@ -12,5 +13,6 @@ pub trait Sink { &mut self, event: Self::Event, perf_aggregator: &mut PerfAggregator, + latest_era: &mut Option, ) -> anyhow::Result<()>; } diff --git a/indexer/src/sinks/cardano.rs b/indexer/src/sinks/cardano.rs index 3088a4fe..5e881673 100644 --- a/indexer/src/sinks/cardano.rs +++ b/indexer/src/sinks/cardano.rs @@ -141,26 +141,9 @@ impl Sink for CardanoSink { if start.is_empty() { // https://github.com/txpipe/oura/blob/67b01e8739ed2927ced270e08daea74b03bcc7f7/src/sources/common.rs#L91 - let genesis_folder: &str = match dbg!(&self.network[..]) { - "mainnet" | "testnet" | "preview" | "preprod" => KNOWN_GENESIS_FOLDER, - "custom" => &self - .genesis_folder - .as_ref() - .expect("genesis_folder should be specified for custom networks")[..], - rest => { - return Err(anyhow!( - "{} is invalid. NETWORK must be either mainnet/preview/preprod/testnet or a 'custom' network", - rest - )) - } - }; - genesis::process_genesis( - &self.db, - &self.network, - genesis_folder, - self.exec_plan.clone(), - ) - .await?; + let genesis_file: String = + get_genesis_file(&self.network, &self.genesis_folder, "byron")?; + genesis::process_byron_genesis(&self.db, &genesis_file, self.exec_plan.clone()).await?; return self.get_latest_point().await; } @@ -171,6 +154,7 @@ impl Sink for CardanoSink { &mut self, event: Self::Event, perf_aggregator: &mut PerfAggregator, + latest_era: &mut Option, ) -> anyhow::Result<()> { match event { CardanoEventType::Block { @@ -222,18 +206,23 @@ impl Sink for CardanoSink { } _ => (), }; - self.db - .transaction::<_, (), DbErr>(|txn| { - Box::pin(insert_block( - cbor_hex, - epoch, - epoch_slot, - txn, - self.exec_plan.clone(), - self.task_perf_aggregator.clone(), - )) - }) - .await?; + *latest_era = Some( + self.db + .transaction::<_, EraValue, DbErr>(|txn| { + Box::pin(insert_block( + cbor_hex, + epoch, + epoch_slot, + txn, + self.exec_plan.clone(), + self.task_perf_aggregator.clone(), + *latest_era, + self.genesis_folder.clone(), + self.network.clone(), + )) + }) + .await?, + ); } CardanoEventType::RollBack { block_slot, @@ -262,12 +251,20 @@ impl Sink for CardanoSink { "Rollback destination did not exist. Maybe you're stuck on a fork?" ); } + *latest_era = None; } Some(point) => { Block::delete_many() .filter(BlockColumn::Id.gt(point.id)) .exec(&self.db) .await?; + let latest_block = Block::find() + .order_by_desc(BlockColumn::Id) + .one(&self.db) + .await? + .unwrap(); + *latest_era = + Some(EraValue::try_from(latest_block.era).expect("Unknown era")); } } @@ -304,7 +301,10 @@ async fn insert_block( txn: &DatabaseTransaction, exec_plan: Arc, task_perf_aggregator: Arc>, -) -> Result<(), DbErr> { + previous_era: Option, + custom_genesis_folder: Option, + network: String, +) -> Result { let mut perf_aggregator = PerfAggregator::new(); let block_parse_counter = std::time::Instant::now(); @@ -312,12 +312,41 @@ async fn insert_block( let block_payload = hex::decode(cbor_hex.clone()).unwrap(); let multi_block = MultiEraBlock::from_explicit_network_cbor_bytes(&block_payload).unwrap(); + let era = to_era_value(&multi_block); let block_global_info = BlockGlobalInfo { - era: to_era_value(&multi_block), + era, epoch, epoch_slot, }; + match previous_era { + None => { + let genesis_file = get_genesis_file(&network, &custom_genesis_folder, "byron"); + tasks::genesis::genesis_executor::process_genesis_block( + txn, + ("", &genesis_file, &block_global_info), + &exec_plan, + task_perf_aggregator.clone(), + ) + .await? + } + Some(prev_era) if era > prev_era => { + let genesis_file = get_genesis_file( + &network, + &custom_genesis_folder, + &format!("{:?}", era).to_lowercase(), + ); + process_genesis_block( + txn, + ("", &genesis_file, &block_global_info), + &exec_plan, + task_perf_aggregator.clone(), + ) + .await? + } + _ => {} + }; + perf_aggregator.block_parse += block_parse_counter.elapsed(); match &multi_block { @@ -341,5 +370,35 @@ async fn insert_block( } } - Ok(()) + Ok(era) +} + +fn get_genesis_folder<'a>( + network: &str, + custom_genesis_folder: &'a Option, +) -> anyhow::Result<&'a str> { + match &network[..] { + "mainnet" | "preview" | "preprod" | "sanchonet" => Ok(KNOWN_GENESIS_FOLDER), + "custom" => Ok(custom_genesis_folder + .as_ref() + .expect("genesis_folder should be specified for custom networks")), + rest => { + return Err(anyhow!( + "{} is invalid. NETWORK must be either mainnet/preview/preprod or a 'custom' network", + rest + )) + } + } +} + +fn get_genesis_file<'a>( + network: &str, + custom_genesis_folder: &'a Option, + era: &str, +) -> anyhow::Result { + let genesis_folder = get_genesis_folder(network, custom_genesis_folder)?; + Ok(format!( + "{}/{}-{}-genesis.json", + genesis_folder, network, era + )) } From 165e11bab7c831c9a6f104a9b16b487b2cbeb8ac Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini <48031343+ecioppettini@users.noreply.github.com> Date: Tue, 24 Sep 2024 01:32:38 -0300 Subject: [PATCH 07/12] update cardano source (less settings required) and add shelley genesis processing task --- Cargo.lock | 245 ++------------- Cargo.toml | 13 +- indexer/Cargo.toml | 6 +- indexer/configs/custom.yml | 15 - indexer/entity/src/block.rs | 14 + indexer/entity/src/genesis.rs | 32 ++ indexer/entity/src/lib.rs | 2 +- indexer/entity/src/prelude.rs | 4 + indexer/execution_plans/default.toml | 2 + indexer/migration/src/lib.rs | 2 + ...20_000022_create_genesis_tracking_table.rs | 56 ++++ indexer/src/engine.rs | 8 +- indexer/src/genesis.rs | 77 +---- indexer/src/main.rs | 12 +- indexer/src/sink.rs | 2 - indexer/src/sinks/cardano.rs | 284 ++++++++++++------ indexer/src/sources/cardano.rs | 4 +- indexer/tasks/src/dsl/database_task.rs | 8 +- indexer/tasks/src/dsl/task_macro.rs | 19 +- indexer/tasks/src/genesis/genesis_executor.rs | 55 +++- indexer/tasks/src/genesis/mod.rs | 1 + indexer/tasks/src/genesis/shelley_genesis.rs | 238 +++++++++++++++ indexer/tasks/src/utils.rs | 5 + 23 files changed, 676 insertions(+), 428 deletions(-) create mode 100644 indexer/entity/src/genesis.rs create mode 100644 indexer/migration/src/m20240920_000022_create_genesis_tracking_table.rs create mode 100644 indexer/tasks/src/genesis/shelley_genesis.rs diff --git a/Cargo.lock b/Cargo.lock index d38ec075..2927d1ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -364,15 +364,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "bip39-dict" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29f1d227703899f704884cb6dfe1dc6a1bd447ea9f91418539989618ebf01685" -dependencies = [ - "cryptoxide", -] - [[package]] name = "bitflags" version = "1.3.2" @@ -498,21 +489,6 @@ version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" -[[package]] -name = "cardano-net" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e272ed83035e509fa204c1cf59833c9384cbd4d15d4e303a5abd529b1bd024" -dependencies = [ - "cardano-sdk", - "cbored", - "cryptoxide", - "thiserror", - "tokio", - "tracing", - "trust-dns-resolver", -] - [[package]] name = "cardano-projected-nft" version = "0.1.0" @@ -529,22 +505,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "cardano-sdk" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e67795439ca871ba2b0d67f7805248f00fd0e6f6b40014a07a9693568e9c54a6" -dependencies = [ - "bech32 0.9.1", - "bip39-dict", - "cbored", - "cryptoxide", - "ed25519-bip32", - "hex", - "strum 0.24.1", - "thiserror", -] - [[package]] name = "carp" version = "3.2.1" @@ -585,9 +545,6 @@ name = "cbored" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54198fe95600b062b9f0129b871b8e8df90b33a41cf2ccbae64b4ae08dbba9c1" -dependencies = [ - "cbored-derive", -] [[package]] name = "cbored-derive" @@ -764,8 +721,7 @@ dependencies = [ [[package]] name = "cml-chain" version = "6.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "148c24010a72a0d8cb4f65ddfe9e38bc3a31ddb5699a7b7ca90408d9c858aaa5" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=b7acbd3634f5ba8402a9704f0413bd434ed157c3#b7acbd3634f5ba8402a9704f0413bd434ed157c3" dependencies = [ "base64 0.21.7", "bech32 0.7.3", @@ -845,8 +801,7 @@ dependencies = [ [[package]] name = "cml-core" version = "6.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0275489215ce6de487151721b7fe79c52a52d0d9e8d75fd7609b7e818b85b4a0" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=b7acbd3634f5ba8402a9704f0413bd434ed157c3#b7acbd3634f5ba8402a9704f0413bd434ed157c3" dependencies = [ "base64 0.13.1", "bech32 0.7.3", @@ -917,8 +872,7 @@ dependencies = [ [[package]] name = "cml-crypto" version = "6.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bebc51fce7179a5a272a589fb41bd5a8c029b204182640d651d4beb06e65fd64" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=b7acbd3634f5ba8402a9704f0413bd434ed157c3#b7acbd3634f5ba8402a9704f0413bd434ed157c3" dependencies = [ "base64 0.21.7", "bech32 0.7.3", @@ -960,8 +914,7 @@ dependencies = [ [[package]] name = "cml-multi-era" version = "6.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f250aedb4c53625d6c3c5cb80340c7a4b78383821b97854097eab7a84c8e79" +source = "git+https://github.com/dcSpark/cardano-multiplatform-lib?rev=b7acbd3634f5ba8402a9704f0413bd434ed157c3#b7acbd3634f5ba8402a9704f0413bd434ed157c3" dependencies = [ "bech32 0.7.3", "cbor_event", @@ -1157,21 +1110,13 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "data-encoding" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" - [[package]] name = "dcspark-blockchain-source" version = "0.1.0" -source = "git+https://github.com/dcSpark/dcspark-core.git?rev=176ea4830d7c3d00eca1c0a4246e9b364b889851#176ea4830d7c3d00eca1c0a4246e9b364b889851" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=ebb245ac047f9d45dba97f07a5bb525ffd81a539#ebb245ac047f9d45dba97f07a5bb525ffd81a539" dependencies = [ "anyhow", "async-trait", - "cardano-net", - "cardano-sdk", "cbored", "cbored-derive", "cml-chain 6.0.0", @@ -1182,6 +1127,7 @@ dependencies = [ "deps", "hex", "multiverse", + "pallas-network", "serde", "thiserror", "tokio", @@ -1191,7 +1137,7 @@ dependencies = [ [[package]] name = "dcspark-core" version = "0.1.0" -source = "git+https://github.com/dcSpark/dcspark-core.git?rev=176ea4830d7c3d00eca1c0a4246e9b364b889851#176ea4830d7c3d00eca1c0a4246e9b364b889851" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=ebb245ac047f9d45dba97f07a5bb525ffd81a539#ebb245ac047f9d45dba97f07a5bb525ffd81a539" dependencies = [ "anyhow", "async-trait", @@ -1208,7 +1154,7 @@ dependencies = [ [[package]] name = "deps" version = "0.1.0" -source = "git+https://github.com/dcSpark/dcspark-core.git?rev=176ea4830d7c3d00eca1c0a4246e9b364b889851#176ea4830d7c3d00eca1c0a4246e9b364b889851" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=ebb245ac047f9d45dba97f07a5bb525ffd81a539#ebb245ac047f9d45dba97f07a5bb525ffd81a539" dependencies = [ "bigdecimal", "serde_json", @@ -1320,18 +1266,6 @@ dependencies = [ "serde", ] -[[package]] -name = "enum-as-inner" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "env_logger" version = "0.10.2" @@ -1711,17 +1645,6 @@ dependencies = [ "digest 0.10.7", ] -[[package]] -name = "hostname" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" -dependencies = [ - "libc", - "match_cfg", - "winapi", -] - [[package]] name = "humantime" version = "2.1.0" @@ -1751,17 +1674,6 @@ dependencies = [ "cc", ] -[[package]] -name = "idna" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "idna" version = "0.5.0" @@ -1833,24 +1745,6 @@ dependencies = [ "ghost", ] -[[package]] -name = "ipconfig" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" -dependencies = [ - "socket2", - "widestring", - "windows-sys 0.48.0", - "winreg", -] - -[[package]] -name = "ipnet" -version = "2.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" - [[package]] name = "is-terminal" version = "0.4.13" @@ -1963,26 +1857,11 @@ dependencies = [ "value-bag", ] -[[package]] -name = "lru-cache" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -dependencies = [ - "linked-hash-map", -] - [[package]] name = "markdown-gen" version = "1.2.1" source = "git+https://github.com/dcSpark/markdown-gen-rs?branch=hbina-add-ability-to-write-raw-str#06342df71812111825ab8030b77fe8726e082252" -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - [[package]] name = "matchers" version = "0.1.0" @@ -1992,12 +1871,6 @@ dependencies = [ "regex-automata 0.1.10", ] -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - [[package]] name = "md-5" version = "0.10.6" @@ -2123,7 +1996,7 @@ checksum = "a785740271256c230f57462d3b83e52f998433a7062fc18f96d5999474a9f915" [[package]] name = "multiverse" version = "0.1.0" -source = "git+https://github.com/dcSpark/dcspark-core.git?rev=176ea4830d7c3d00eca1c0a4246e9b364b889851#176ea4830d7c3d00eca1c0a4246e9b364b889851" +source = "git+https://github.com/dcSpark/dcspark-core.git?rev=ebb245ac047f9d45dba97f07a5bb525ffd81a539#ebb245ac047f9d45dba97f07a5bb525ffd81a539" dependencies = [ "dcspark-core", "deps", @@ -2493,6 +2366,24 @@ dependencies = [ "tracing", ] +[[package]] +name = "pallas-network" +version = "0.30.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c081efb304917ec0025182e11295c6e1727b779888b83cc93d89533c71db50c" +dependencies = [ + "byteorder", + "hex", + "itertools 0.13.0", + "pallas-codec 0.30.2", + "pallas-crypto", + "rand", + "socket2", + "thiserror", + "tokio", + "tracing", +] + [[package]] name = "pallas-primitives" version = "0.30.2" @@ -2760,12 +2651,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quote" version = "1.0.37" @@ -2941,16 +2826,6 @@ dependencies = [ "tracing-subscriber", ] -[[package]] -name = "resolv-conf" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" -dependencies = [ - "hostname", - "quick-error", -] - [[package]] name = "ring" version = "0.16.20" @@ -3708,9 +3583,6 @@ name = "strum" version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" -dependencies = [ - "strum_macros 0.24.3", -] [[package]] name = "strum" @@ -4141,51 +4013,6 @@ dependencies = [ "tracing-log", ] -[[package]] -name = "trust-dns-proto" -version = "0.21.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c31f240f59877c3d4bb3b3ea0ec5a6a0cff07323580ff8c7a605cd7d08b255d" -dependencies = [ - "async-trait", - "cfg-if 1.0.0", - "data-encoding", - "enum-as-inner", - "futures-channel", - "futures-io", - "futures-util", - "idna 0.2.3", - "ipnet", - "lazy_static", - "log", - "rand", - "smallvec", - "thiserror", - "tinyvec", - "tokio", - "url", -] - -[[package]] -name = "trust-dns-resolver" -version = "0.21.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4ba72c2ea84515690c9fcef4c6c660bb9df3036ed1051686de84605b74fd558" -dependencies = [ - "cfg-if 1.0.0", - "futures-util", - "ipconfig", - "lazy_static", - "log", - "lru-cache", - "parking_lot 0.12.3", - "resolv-conf", - "smallvec", - "thiserror", - "tokio", - "trust-dns-proto", -] - [[package]] name = "tynm" version = "0.1.10" @@ -4274,7 +4101,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", - "idna 0.5.0", + "idna", "percent-encoding", ] @@ -4444,12 +4271,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "widestring" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" - [[package]] name = "winapi" version = "0.3.9" @@ -4647,16 +4468,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if 1.0.0", - "windows-sys 0.48.0", -] - [[package]] name = "wyz" version = "0.5.1" diff --git a/Cargo.toml b/Cargo.toml index f1e3faa4..8084624e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,12 @@ members = [ [workspace.dependencies] -cml-chain = { version = "6.0.0" } -cml-core = { version = "6.0.0" } -cml-crypto = { version = "6.0.0" } -cml-multi-era = { version = "6.0.0" } +# cml-chain = { version = "6.0.0" } +# cml-core = { version = "6.0.0" } +# cml-crypto = { version = "6.0.0" } +# cml-multi-era = { version = "6.0.0" } + +cml-chain = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "b7acbd3634f5ba8402a9704f0413bd434ed157c3" } +cml-core = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "b7acbd3634f5ba8402a9704f0413bd434ed157c3" } +cml-crypto = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "b7acbd3634f5ba8402a9704f0413bd434ed157c3" } +cml-multi-era = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "b7acbd3634f5ba8402a9704f0413bd434ed157c3" } diff --git a/indexer/Cargo.toml b/indexer/Cargo.toml index a62916d3..c350d6b1 100644 --- a/indexer/Cargo.toml +++ b/indexer/Cargo.toml @@ -9,9 +9,9 @@ strip = true [dependencies] # [core] -dcspark-core = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "176ea4830d7c3d00eca1c0a4246e9b364b889851" } -dcspark-blockchain-source = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "176ea4830d7c3d00eca1c0a4246e9b364b889851" } -multiverse = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "176ea4830d7c3d00eca1c0a4246e9b364b889851" } +dcspark-core = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "ebb245ac047f9d45dba97f07a5bb525ffd81a539" } +dcspark-blockchain-source = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "ebb245ac047f9d45dba97f07a5bb525ffd81a539" } +multiverse = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "ebb245ac047f9d45dba97f07a5bb525ffd81a539" } # [local] entity = { path = "entity" } diff --git a/indexer/configs/custom.yml b/indexer/configs/custom.yml index 9ab0870f..ee14d5ef 100644 --- a/indexer/configs/custom.yml +++ b/indexer/configs/custom.yml @@ -18,21 +18,6 @@ sink: relay: - "localhost" - 3001 - from: - BlockHeader: - slot_nb: 1 - hash: "ba8066f73eb9cf4ad9adf38051c54d3a51d92cb98561cffc1f202b1b97739cd5" - genesis_parent: "0ded594a3411f6d3236228abc1e2ef8c2a21e09d859ea23bfc2182f92853cba8" - genesis: - BlockHeader: - slot_nb: 0 - hash: "7a32184d9e0068b0fa75fd0ecaad798f9bc573d4921c519b12968e26ff0747a3" - shelley_era_config: - first_slot: 0 - start_epoch: 0 - known_time: 1722355346 - slot_length: 1 - epoch_length_seconds: 500 start_block: diff --git a/indexer/entity/src/block.rs b/indexer/entity/src/block.rs index 7b04d664..6e34327e 100644 --- a/indexer/entity/src/block.rs +++ b/indexer/entity/src/block.rs @@ -69,3 +69,17 @@ impl TryFrom for EraValue { } } } + +impl EraValue { + pub fn to_str(&self) -> &'static str { + match self { + EraValue::Byron => "byron", + EraValue::Shelley => "shelley", + EraValue::Allegra => "allegra", + EraValue::Mary => "mary", + EraValue::Alonzo => "alonzo", + EraValue::Babbage => "babbage", + EraValue::Conway => "conway", + } + } +} diff --git a/indexer/entity/src/genesis.rs b/indexer/entity/src/genesis.rs new file mode 100644 index 00000000..1e0aa831 --- /dev/null +++ b/indexer/entity/src/genesis.rs @@ -0,0 +1,32 @@ +use sea_orm::entity::prelude::*; +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, PartialEq, Eq, DeriveEntityModel, Deserialize, Serialize)] +#[sea_orm(table_name = "Era")] +pub struct Model { + #[sea_orm(primary_key)] + pub era: i32, + pub block_id: i32, + pub block_height: i32, + pub first_slot: i64, + pub start_epoch: i64, + pub epoch_length_seconds: i64, +} + +#[derive(Copy, Clone, Debug, DeriveRelation, EnumIter)] +pub enum Relation { + #[sea_orm( + belongs_to = "super::block::Entity", + from = "Column::BlockId", + to = "super::block::Column::Id" + )] + Block, +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Block.def() + } +} + +impl ActiveModelBehavior for ActiveModel {} diff --git a/indexer/entity/src/lib.rs b/indexer/entity/src/lib.rs index 136153ef..059a7d50 100644 --- a/indexer/entity/src/lib.rs +++ b/indexer/entity/src/lib.rs @@ -13,12 +13,12 @@ pub mod asset_mint; pub mod asset_utxos; pub mod cip25_entry; pub mod dex_swap; +pub mod genesis; pub mod governance_votes; pub mod native_asset; pub mod plutus_data; pub mod plutus_data_hash; pub mod projected_nft; -// todo: rename to pool? pub mod stake_delegation; pub mod stake_delegation_drep; pub mod transaction_metadata; diff --git a/indexer/entity/src/prelude.rs b/indexer/entity/src/prelude.rs index ee2e1a58..d33377be 100644 --- a/indexer/entity/src/prelude.rs +++ b/indexer/entity/src/prelude.rs @@ -27,6 +27,10 @@ pub use super::dex_swap::{ ActiveModel as DexSwapActiveModel, Column as DexSwapColumn, Entity as DexSwap, Model as DexSwapModel, PrimaryKey as DexSwapPrimaryKey, Relation as DexSwapRelation, }; +pub use super::genesis::{ + ActiveModel as GenesisActiveModel, Column as GenesisColumn, Entity as Genesis, + Model as GenesisModel, PrimaryKey as GenesisPrimaryKey, Relation as GenesisRelation, +}; pub use super::governance_votes::{ ActiveModel as GovernanceVoteActiveModel, Column as GovernanceVoteColumn, Entity as GovernanceVote, Model as GovernanceVoteModel, PrimaryKey as GovernanceVotePrimaryKey, diff --git a/indexer/execution_plans/default.toml b/indexer/execution_plans/default.toml index 0a08c3ca..d50b81c7 100644 --- a/indexer/execution_plans/default.toml +++ b/indexer/execution_plans/default.toml @@ -14,6 +14,8 @@ include_payload=false [GenesisTransactionTask] include_payload=true +[ShelleyGenesisBlockTask] + [ByronBlockTask] readonly=false include_payload=false diff --git a/indexer/migration/src/lib.rs b/indexer/migration/src/lib.rs index ddde20b0..5a8e8543 100644 --- a/indexer/migration/src/lib.rs +++ b/indexer/migration/src/lib.rs @@ -23,6 +23,7 @@ mod m20231220_000018_asset_utxo_table; mod m20240229_000019_add_block_tx_count_column; mod m20240326_000020_create_drep_delegation_table; mod m20240326_000021_create_governance_voting_table; +mod m20240920_000022_create_genesis_tracking_table; pub struct Migrator; @@ -53,6 +54,7 @@ impl MigratorTrait for Migrator { Box::new(m20240229_000019_add_block_tx_count_column::Migration), Box::new(m20240326_000020_create_drep_delegation_table::Migration), Box::new(m20240326_000021_create_governance_voting_table::Migration), + Box::new(m20240920_000022_create_genesis_tracking_table::Migration), ] } } diff --git a/indexer/migration/src/m20240920_000022_create_genesis_tracking_table.rs b/indexer/migration/src/m20240920_000022_create_genesis_tracking_table.rs new file mode 100644 index 00000000..c566e2ff --- /dev/null +++ b/indexer/migration/src/m20240920_000022_create_genesis_tracking_table.rs @@ -0,0 +1,56 @@ +use sea_schema::migration::prelude::*; + +use entity::genesis::*; +use entity::prelude::{Block, BlockColumn}; + +pub struct Migration; + +impl MigrationName for Migration { + fn name(&self) -> &str { + "m20240920_000022_create_genesis_tracking_table" + } +} + +#[async_trait::async_trait] +impl MigrationTrait for Migration { + async fn up(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .create_table( + Table::create() + .table(Entity) + .if_not_exists() + .col( + ColumnDef::new(Column::Era) + .integer() + .not_null() + .primary_key(), + ) + .col(ColumnDef::new(Column::BlockId).integer().not_null()) + .col(ColumnDef::new(Column::BlockHeight).integer().not_null()) + .col(ColumnDef::new(Column::FirstSlot).big_integer().not_null()) + .col(ColumnDef::new(Column::StartEpoch).big_integer().not_null()) + .col( + ColumnDef::new(Column::EpochLengthSeconds) + .big_integer() + .not_null(), + ) + .foreign_key( + ForeignKey::create() + .name("fk-transaction-block_id") + .from(Entity, Column::BlockId) + .to(Block, BlockColumn::Id) + .on_delete(ForeignKeyAction::Cascade), + ) + .to_owned(), + ) + .await?; + + Ok(()) + } + + async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { + manager + .drop_table(Table::drop().table(Entity).to_owned()) + .await + } +} diff --git a/indexer/src/engine.rs b/indexer/src/engine.rs index d8b74fc1..27bb4316 100644 --- a/indexer/src/engine.rs +++ b/indexer/src/engine.rs @@ -3,7 +3,6 @@ use crate::sink::Sink; use crate::types::StoppableService; use async_trait::async_trait; use dcspark_blockchain_source::{GetNextFrom, PullFrom, Source}; -use entity::block::EraValue; use std::sync::atomic::AtomicBool; use std::sync::atomic::Ordering::SeqCst; use std::sync::Arc; @@ -45,9 +44,6 @@ impl< let mut perf_aggregator = PerfAggregator::new(); - // TODO: fetch from DB - let mut latest_era: Option = None; - while self.running.load(SeqCst) { let event_fetch_start = std::time::Instant::now(); let event = self.source.pull(&pull_from).await?; @@ -59,9 +55,7 @@ impl< }; perf_aggregator.block_fetch += event_fetch_start.elapsed(); let new_from = event.next_from().unwrap_or(pull_from); - self.sink - .process(event, &mut perf_aggregator, &mut latest_era) - .await?; + self.sink.process(event, &mut perf_aggregator).await?; pull_from = new_from; } diff --git a/indexer/src/genesis.rs b/indexer/src/genesis.rs index 53314dda..54e18e7a 100644 --- a/indexer/src/genesis.rs +++ b/indexer/src/genesis.rs @@ -1,4 +1,4 @@ -use anyhow::anyhow; +use anyhow::{anyhow, Context as _}; use entity::block::EraValue; use std::fs; use std::sync::{Arc, Mutex}; @@ -23,7 +23,7 @@ pub async fn process_byron_genesis( tracing::info!("Parsing genesis file..."); let mut time_counter = std::time::Instant::now(); - let file = fs::File::open(genesis_file).expect("Failed to open genesis file"); + let file = fs::File::open(genesis_file).context("Failed to open genesis file")?; let genesis_file: Box = Box::new( parse_genesis_data(file).map_err(|err| anyhow!("can't parse genesis data: {:?}", err))?, ); @@ -85,76 +85,3 @@ pub async fn insert_byron_genesis( Ok(()) } - -pub async fn process_shelley_genesis( - conn: &DatabaseConnection, - genesis_file: &str, - exec_plan: Arc, -) -> anyhow::Result<()> { - let task_perf_aggregator = Arc::new(Mutex::new(TaskPerfAggregator::default())); - - tracing::info!("Parsing genesis file..."); - let mut time_counter = std::time::Instant::now(); - - let file = fs::File::open(genesis_file).expect("Failed to open genesis file"); - let genesis_file: Box = Box::new( - parse_genesis_data(file).map_err(|err| anyhow!("can't parse genesis data: {:?}", err))?, - ); - - tracing::info!( - "Finished parsing genesis file after {:?}", - time_counter.elapsed() - ); - time_counter = std::time::Instant::now(); - - tracing::info!("Inserting Shelley genesis data into database..."); - conn.transaction(|txn| { - Box::pin(insert_shelley_genesis( - txn, - genesis_file, - exec_plan.clone(), - task_perf_aggregator.clone(), - )) - }) - .await?; - - tracing::info!( - "Finished inserting genesis data after {:?}", - time_counter.elapsed() - ); - tracing::trace!( - "Genesis task-wise time spent:\n{:#?}", - task_perf_aggregator.lock().unwrap() - ); - - Ok(()) -} - -pub async fn insert_shelley_genesis( - txn: &DatabaseTransaction, - genesis_file: Box, - exec_plan: Arc, - task_perf_aggregator: Arc>, -) -> Result<(), DbErr> { - let genesis_hash = genesis_file.genesis_prev.to_raw_bytes(); - tracing::info!( - "Starting sync based on genesis hash {}", - hex::encode(genesis_hash) - ); - - let block_global_info = BlockGlobalInfo { - era: EraValue::Shelley, - epoch: None, - epoch_slot: None, - }; - - process_genesis_block( - txn, - ("", &genesis_file, &block_global_info), - &exec_plan, - task_perf_aggregator.clone(), - ) - .await?; - - Ok(()) -} diff --git a/indexer/src/main.rs b/indexer/src/main.rs index 43024167..6de33882 100644 --- a/indexer/src/main.rs +++ b/indexer/src/main.rs @@ -8,7 +8,6 @@ use dcspark_blockchain_source::{GetNextFrom, Source}; use migration::async_std::path::PathBuf; use oura::sources::BearerKind; use serde::Deserialize; -use std::borrow::Cow; use std::fs::File; use std::process::exit; use std::sync::atomic::{AtomicBool, Ordering}; @@ -65,14 +64,12 @@ pub enum SinkConfig { }, } -pub enum Network {} - #[derive(Debug, Clone, Deserialize)] #[serde(tag = "type", rename_all = "snake_case")] #[serde(deny_unknown_fields)] pub enum SourceConfig { Oura { socket: String, bearer: BearerKind }, - CardanoNet { relay: (Cow<'static, str>, u16) }, + CardanoNet { relay: (String, u16) }, } #[derive(Debug, Clone, Deserialize)] @@ -239,8 +236,11 @@ async fn main() -> anyhow::Result<()> { .ok_or_else(|| anyhow!("Starting points list is empty"))?; let network_config = dcspark_blockchain_source::cardano::NetworkConfiguration { - relay: relay.clone(), - from: start_from.clone(), + relay: dcspark_blockchain_source::cardano::Relay::UrlPort( + relay.clone().0, + relay.clone().1, + ), + from: None, ..base_config }; diff --git a/indexer/src/sink.rs b/indexer/src/sink.rs index 8d148b01..aef56941 100644 --- a/indexer/src/sink.rs +++ b/indexer/src/sink.rs @@ -1,7 +1,6 @@ use crate::perf_aggregator::PerfAggregator; use async_trait::async_trait; use dcspark_blockchain_source::{EventObject, PullFrom}; -use entity::block::EraValue; #[async_trait] pub trait Sink { @@ -13,6 +12,5 @@ pub trait Sink { &mut self, event: Self::Event, perf_aggregator: &mut PerfAggregator, - latest_era: &mut Option, ) -> anyhow::Result<()>; } diff --git a/indexer/src/sinks/cardano.rs b/indexer/src/sinks/cardano.rs index 5e881673..1cb88248 100644 --- a/indexer/src/sinks/cardano.rs +++ b/indexer/src/sinks/cardano.rs @@ -3,9 +3,9 @@ use crate::perf_aggregator::PerfAggregator; use crate::sink::Sink; use crate::types::{MultiEraBlock, StoppableService}; use crate::{genesis, DbConfig, SinkConfig}; -use anyhow::anyhow; +use anyhow::{anyhow, Context as _}; use async_trait::async_trait; - +use dcspark_blockchain_source::cardano::time::Era; use dcspark_blockchain_source::cardano::Point; use dcspark_core::{BlockId, SlotNumber}; use entity::sea_orm::Database; @@ -18,6 +18,8 @@ use entity::{ prelude::{Block, BlockColumn}, sea_orm::{DatabaseConnection, EntityTrait, QueryOrder, QuerySelect}, }; +use std::io::Cursor; +use std::path::PathBuf; use std::sync::Arc; use std::sync::Mutex; use tasks::byron::byron_executor::process_byron_block; @@ -25,16 +27,53 @@ use tasks::dsl::database_task::BlockGlobalInfo; use tasks::execution_plan::ExecutionPlan; use tasks::multiera::multiera_executor::process_multiera_block; use tasks::utils::TaskPerfAggregator; +use tokio::io::AsyncReadExt; + +#[derive(Clone)] +pub enum Network { + Mainnet, + Preview, + Preprod, + Sanchonet, + Custom { genesis_files: PathBuf }, +} + +impl Network { + pub fn genesis_filename(&self, era: EraValue) -> String { + match self { + Network::Mainnet | Network::Preview | Network::Preprod | Network::Sanchonet => { + format!("{}-{}-genesis.json", self.to_str(), era.to_str()) + } + Network::Custom { genesis_files: _ } => format!("{}-genesis.json", era.to_str()), + } + } + + pub fn to_str(&self) -> &'static str { + match self { + Network::Mainnet => "mainnet", + Network::Preview => "preview", + Network::Preprod => "preprod", + Network::Sanchonet => "sanchonet", + Network::Custom { genesis_files: _ } => "custom", + } + } +} + +impl std::fmt::Display for Network { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", self.to_str()) + } +} pub struct CardanoSink { db: DatabaseConnection, - network: String, - genesis_folder: Option, + network: Network, exec_plan: Arc, last_epoch: i128, epoch_start_time: std::time::Instant, task_perf_aggregator: Arc>, + shelley_era: Option, } impl CardanoSink { @@ -49,18 +88,43 @@ impl CardanoSink { } => (db, network, genesis_folder), _ => todo!("Invalid sink config provided"), }; + + let network = if network == "custom" { + Network::Custom { + genesis_files: genesis_folder + .ok_or(anyhow!( + "genesis_folder should be specified for custom networks" + ))? + .into(), + } + } else { + match network.as_ref() { + "mainnet" => Network::Mainnet, + "preview" => Network::Preview, + "preprod" => Network::Preprod, + "sanchonet" => Network::Sanchonet, + unknown => { + anyhow::bail!( + "{unknown} is invalid. NETWORK must be either mainnet/preview/preprod or a 'custom' network", + ) + } + } + }; + match db_config { DbConfig::Postgres { database_url } => { let conn = Database::connect(&database_url).await?; + let shelley_era = get_shelley_era_data_from_db(&conn).await?; + Ok(Self { db: conn, network, - genesis_folder, exec_plan, last_epoch: -1, epoch_start_time: std::time::Instant::now(), task_perf_aggregator: Arc::new(Mutex::new(TaskPerfAggregator::default())), + shelley_era, }) } _ => todo!("Only postgres is supported atm"), @@ -141,9 +205,13 @@ impl Sink for CardanoSink { if start.is_empty() { // https://github.com/txpipe/oura/blob/67b01e8739ed2927ced270e08daea74b03bcc7f7/src/sources/common.rs#L91 - let genesis_file: String = - get_genesis_file(&self.network, &self.genesis_folder, "byron")?; - genesis::process_byron_genesis(&self.db, &genesis_file, self.exec_plan.clone()).await?; + let genesis_file: PathBuf = get_genesis_file(&self.network, EraValue::Byron)?; + genesis::process_byron_genesis( + &self.db, + &genesis_file.to_string_lossy(), + self.exec_plan.clone(), + ) + .await?; return self.get_latest_point().await; } @@ -154,17 +222,24 @@ impl Sink for CardanoSink { &mut self, event: Self::Event, perf_aggregator: &mut PerfAggregator, - latest_era: &mut Option, ) -> anyhow::Result<()> { match event { CardanoEventType::Block { cbor_hex, - epoch, + mut epoch, epoch_slot, block_number, block_hash, block_slot: _block_slot, } => { + // this won't work for the first block in the shelley era, since + // the shelley genesis is processed after this however, this + // probably doesn't matter that much for the perf aggregator + // since it's only one block and it only happens once. + if let Some(shelley_era) = &self.shelley_era { + epoch = shelley_era.absolute_slot_to_epoch(epoch_slot.unwrap()); + } + match epoch { Some(epoch) if epoch as i128 > self.last_epoch => { let epoch_duration = self.epoch_start_time.elapsed(); @@ -206,23 +281,21 @@ impl Sink for CardanoSink { } _ => (), }; - *latest_era = Some( - self.db - .transaction::<_, EraValue, DbErr>(|txn| { - Box::pin(insert_block( - cbor_hex, - epoch, - epoch_slot, - txn, - self.exec_plan.clone(), - self.task_perf_aggregator.clone(), - *latest_era, - self.genesis_folder.clone(), - self.network.clone(), - )) - }) - .await?, - ); + self.shelley_era = self + .db + .transaction::<_, Option, DbErr>(|txn| { + Box::pin(insert_block( + cbor_hex, + epoch, + epoch_slot, + txn, + self.exec_plan.clone(), + self.task_perf_aggregator.clone(), + self.network.clone(), + self.shelley_era.clone(), + )) + }) + .await?; } CardanoEventType::RollBack { block_slot, @@ -251,20 +324,19 @@ impl Sink for CardanoSink { "Rollback destination did not exist. Maybe you're stuck on a fork?" ); } - *latest_era = None; } Some(point) => { Block::delete_many() .filter(BlockColumn::Id.gt(point.id)) .exec(&self.db) .await?; - let latest_block = Block::find() - .order_by_desc(BlockColumn::Id) - .one(&self.db) - .await? - .unwrap(); - *latest_era = - Some(EraValue::try_from(latest_block.era).expect("Unknown era")); + + // the table that keeps track of the shelley genesis + // has a foreign key to the block in which we triggered + // that update, this means the entry will get deleted if + // we rollback to a point before that, in which case we + // re-fetch it just to be sure. + self.shelley_era = get_shelley_era_data_from_db(&self.db).await?; } } @@ -294,6 +366,7 @@ fn to_era_value(x: &MultiEraBlock) -> EraValue { } } +#[allow(clippy::too_many_arguments)] async fn insert_block( cbor_hex: String, epoch: Option, @@ -301,10 +374,9 @@ async fn insert_block( txn: &DatabaseTransaction, exec_plan: Arc, task_perf_aggregator: Arc>, - previous_era: Option, - custom_genesis_folder: Option, - network: String, -) -> Result { + network: Network, + mut shelley_era: Option, +) -> Result, DbErr> { let mut perf_aggregator = PerfAggregator::new(); let block_parse_counter = std::time::Instant::now(); @@ -313,39 +385,59 @@ async fn insert_block( let multi_block = MultiEraBlock::from_explicit_network_cbor_bytes(&block_payload).unwrap(); let era = to_era_value(&multi_block); - let block_global_info = BlockGlobalInfo { + let mut block_global_info = BlockGlobalInfo { era, epoch, epoch_slot, }; - match previous_era { - None => { - let genesis_file = get_genesis_file(&network, &custom_genesis_folder, "byron"); - tasks::genesis::genesis_executor::process_genesis_block( - txn, - ("", &genesis_file, &block_global_info), - &exec_plan, - task_perf_aggregator.clone(), - ) - .await? - } - Some(prev_era) if era > prev_era => { - let genesis_file = get_genesis_file( - &network, - &custom_genesis_folder, - &format!("{:?}", era).to_lowercase(), - ); - process_genesis_block( - txn, - ("", &genesis_file, &block_global_info), - &exec_plan, - task_perf_aggregator.clone(), - ) + if era > EraValue::Byron && shelley_era.is_none() { + // we don't have the code to parse the other genesis blocks (alonzo, conway). + let genesis_file_path = get_genesis_file(&network, EraValue::Shelley) + .context("Couldn't get the shelley genesis file from the filesystem") + .unwrap(); + + let mut buffer = Vec::new(); + + tokio::fs::File::open(genesis_file_path) + .await + .unwrap() + .read_to_end(&mut buffer) + .await + .unwrap(); + + let genesis = cml_chain::genesis::shelley::parse::parse_genesis_data(Cursor::new(buffer)) + .expect("Failed to parse genesis"); + + tasks::genesis::genesis_executor::process_shelley_genesis_block( + txn, + ("", &genesis, &block_global_info), + &exec_plan, + task_perf_aggregator.clone(), + ) + .await?; + + shelley_era = entity::genesis::Entity::find() + .filter(entity::genesis::Column::Era.eq(i32::from(EraValue::Shelley))) + .limit(1) + .one(txn) .await? - } - _ => {} - }; + .map(|model| Era { + first_slot: model.first_slot.try_into().unwrap(), + start_epoch: model.start_epoch.try_into().unwrap(), + epoch_length_seconds: model.epoch_length_seconds.try_into().unwrap(), + // we don't need to know these since we don't compute timestamps + known_time: 0, + slot_length: 0, + }); + } + + // in the byron era the epoch it's in the header, so we only need to compute + // this if we already transitioned to shelley. + if let Some(shelley_era) = &shelley_era { + block_global_info.epoch = + shelley_era.absolute_slot_to_epoch(block_global_info.epoch_slot.unwrap()); + } perf_aggregator.block_parse += block_parse_counter.elapsed(); @@ -370,35 +462,43 @@ async fn insert_block( } } - Ok(era) + Ok(shelley_era) } -fn get_genesis_folder<'a>( - network: &str, - custom_genesis_folder: &'a Option, -) -> anyhow::Result<&'a str> { - match &network[..] { - "mainnet" | "preview" | "preprod" | "sanchonet" => Ok(KNOWN_GENESIS_FOLDER), - "custom" => Ok(custom_genesis_folder - .as_ref() - .expect("genesis_folder should be specified for custom networks")), - rest => { - return Err(anyhow!( - "{} is invalid. NETWORK must be either mainnet/preview/preprod or a 'custom' network", - rest - )) +fn get_genesis_file(network: &Network, era: EraValue) -> anyhow::Result { + let mut path = PathBuf::new(); + + let known_genesis_folder = PathBuf::from(KNOWN_GENESIS_FOLDER); + let genesis_folder = match network { + Network::Mainnet | Network::Preview | Network::Preprod | Network::Sanchonet => { + &known_genesis_folder } - } + Network::Custom { genesis_files } => genesis_files, + }; + + path.push(genesis_folder); + path.push(network.genesis_filename(era)); + + Ok(path) } -fn get_genesis_file<'a>( - network: &str, - custom_genesis_folder: &'a Option, - era: &str, -) -> anyhow::Result { - let genesis_folder = get_genesis_folder(network, custom_genesis_folder)?; - Ok(format!( - "{}/{}-{}-genesis.json", - genesis_folder, network, era - )) +async fn get_shelley_era_data_from_db( + conn: &DatabaseConnection, +) -> Result, anyhow::Error> { + let shelley_era = entity::genesis::Entity::find() + .filter(entity::genesis::Column::Era.eq(i32::from(EraValue::Shelley))) + .limit(1) + .one(conn) + .await? + .map(|model| { + Era { + first_slot: model.first_slot.try_into().unwrap(), + start_epoch: model.start_epoch.try_into().unwrap(), + epoch_length_seconds: model.epoch_length_seconds.try_into().unwrap(), + // we don't need to know these since we don't compute timestamps + known_time: 0, + slot_length: 0, + } + }); + Ok(shelley_era) } diff --git a/indexer/src/sources/cardano.rs b/indexer/src/sources/cardano.rs index 5ce6c539..8763fb33 100644 --- a/indexer/src/sources/cardano.rs +++ b/indexer/src/sources/cardano.rs @@ -62,7 +62,7 @@ impl Source for CardanoSource { tracing::debug!(id = %block_event.id, "block event received"); Ok(Some(CardanoEventType::Block { cbor_hex: hex::encode(block_event.raw_block), - epoch: Some(block_event.epoch), + epoch: block_event.epoch, epoch_slot: Some(block_event.slot_number.into()), block_number: block_event.block_number.into(), block_hash: block_event.id.to_string(), @@ -88,7 +88,7 @@ impl Source for CardanoSource { impl CardanoSource { pub async fn new(configuration: NetworkConfiguration) -> anyhow::Result { - WrappedCardanoSource::connect(&configuration, Duration::from_millis(5000)) + WrappedCardanoSource::connect(&configuration, Duration::from_millis(5000), true) .await .and_then(|cardano_source| { Multiverse::temporary() diff --git a/indexer/tasks/src/dsl/database_task.rs b/indexer/tasks/src/dsl/database_task.rs index 0cb81b13..093124d8 100644 --- a/indexer/tasks/src/dsl/database_task.rs +++ b/indexer/tasks/src/dsl/database_task.rs @@ -1,5 +1,5 @@ use crate::utils::TaskPerfAggregator; -use cml_chain::genesis::byron::config::GenesisData; +use cml_chain::genesis::{byron::config::GenesisData, shelley::config::ShelleyGenesisData}; use entity::{block::EraValue, prelude::*, sea_orm::DatabaseTransaction}; use shred::DispatcherBuilder; use std::sync::{Arc, Mutex}; @@ -55,6 +55,7 @@ pub trait TaskBuilder<'a, BlockType, BlockExtraType> { #[derive(Copy, Clone)] pub enum TaskRegistryEntry { Genesis(GenesisTaskRegistryEntry), + ShelleyGenesis(ShelleyGenesisTaskRegistryEntry), Byron(ByronTaskRegistryEntry), Multiera(MultieraTaskRegistryEntry), } @@ -64,6 +65,11 @@ pub struct GenesisTaskRegistryEntry { pub builder: &'static (dyn for<'a> TaskBuilder<'a, GenesisData, BlockGlobalInfo> + Sync), } +#[derive(Copy, Clone)] +pub struct ShelleyGenesisTaskRegistryEntry { + pub builder: &'static (dyn for<'a> TaskBuilder<'a, ShelleyGenesisData, BlockGlobalInfo> + Sync), +} + #[derive(Copy, Clone)] pub struct ByronTaskRegistryEntry { pub builder: &'static (dyn for<'a> TaskBuilder<'a, cml_multi_era::MultiEraBlock, BlockGlobalInfo> diff --git a/indexer/tasks/src/dsl/task_macro.rs b/indexer/tasks/src/dsl/task_macro.rs index 8ec1f8c8..ce9370c6 100644 --- a/indexer/tasks/src/dsl/task_macro.rs +++ b/indexer/tasks/src/dsl/task_macro.rs @@ -3,7 +3,8 @@ pub use crate::utils::find_task_registry_entry; pub use crate::{ dsl::database_task::{ BlockGlobalInfo, BlockInfo, ByronTaskRegistryEntry, DatabaseTaskMeta, - GenesisTaskRegistryEntry, MultieraTaskRegistryEntry, TaskBuilder, TaskRegistryEntry, + GenesisTaskRegistryEntry, MultieraTaskRegistryEntry, ShelleyGenesisTaskRegistryEntry, + TaskBuilder, TaskRegistryEntry, }, era_common::AddressInBlock, utils::TaskPerfAggregator, @@ -17,6 +18,9 @@ macro_rules! era_to_block { (genesis) => { GenesisData }; + (shelley_genesis) => { + ShelleyGenesisData + }; (byron) => { cml_multi_era::MultiEraBlock }; @@ -29,6 +33,9 @@ macro_rules! era_to_block_info { (genesis) => { BlockGlobalInfo }; + (shelley_genesis) => { + BlockGlobalInfo + }; (byron) => { BlockGlobalInfo }; @@ -45,6 +52,11 @@ cfg_if::cfg_if! { builder: &$task_builder, }) }; + (shelley_genesis $task_builder:expr) => { + TaskMarkdownRegistryEntry::Genesis(GenesisTaskMarkdownRegistryEntry { + builder: &$task_builder, + }) + }; (byron $task_builder:expr) => { TaskMarkdownRegistryEntry::Byron(ByronTaskMarkdownRegistryEntry { builder: &$task_builder, @@ -204,6 +216,11 @@ cfg_if::cfg_if! { builder: &$task_builder, }) }; + (shelley_genesis $task_builder:expr) => { + TaskRegistryEntry::ShelleyGenesis(ShelleyGenesisTaskRegistryEntry { + builder: &$task_builder, + }) + }; (byron $task_builder:expr) => { TaskRegistryEntry::Byron(ByronTaskRegistryEntry { builder: &$task_builder, diff --git a/indexer/tasks/src/genesis/genesis_executor.rs b/indexer/tasks/src/genesis/genesis_executor.rs index 6c9f7c7e..1af6d6b7 100644 --- a/indexer/tasks/src/genesis/genesis_executor.rs +++ b/indexer/tasks/src/genesis/genesis_executor.rs @@ -1,13 +1,13 @@ -use std::sync::{Arc, Mutex}; - use crate::dsl::database_task::TaskRegistryEntry; use crate::dsl::database_task::{BlockGlobalInfo, BlockInfo}; use crate::execution_plan::ExecutionPlan; use crate::utils::find_task_registry_entry; use crate::utils::TaskPerfAggregator; use cml_chain::genesis::byron::config::GenesisData; +use cml_chain::genesis::shelley::config::ShelleyGenesisData; use entity::sea_orm::{prelude::*, DatabaseTransaction}; use shred::{DispatcherBuilder, World}; +use std::sync::{Arc, Mutex}; use tokio::runtime::Handle; pub async fn process_genesis_block( @@ -60,3 +60,54 @@ pub async fn process_genesis_block( Ok(()) } + +pub async fn process_shelley_genesis_block( + txn: &DatabaseTransaction, + block: BlockInfo<'_, ShelleyGenesisData, BlockGlobalInfo>, + exec_plan: &ExecutionPlan, + perf_aggregator: Arc>, +) -> Result<(), DbErr> { + let ep_start_time = std::time::Instant::now(); + + let handle = Handle::current(); + + let mut world = World::empty(); + + let mut dispatcher_builder = DispatcherBuilder::new(); + + for (task_name, val) in exec_plan.0.iter() { + if let toml::value::Value::Table(_task_props) = val { + let entry = find_task_registry_entry(task_name); + match &entry { + None => { + panic!("Could not find task named {task_name}"); + } + Some(task) => { + if let TaskRegistryEntry::ShelleyGenesis(entry) = task { + entry.builder.maybe_add_task( + &mut dispatcher_builder, + txn, + block, + &handle, + perf_aggregator.clone(), + val, + ); + } + } + } + } + } + + if !dispatcher_builder.is_empty() { + let mut dispatcher = dispatcher_builder.build(); + dispatcher.setup(&mut world); + dispatcher.dispatch(&world); + } + + perf_aggregator + .lock() + .unwrap() + .add_to_total(&ep_start_time.elapsed()); + + Ok(()) +} diff --git a/indexer/tasks/src/genesis/mod.rs b/indexer/tasks/src/genesis/mod.rs index 34cb2652..8a7b2072 100644 --- a/indexer/tasks/src/genesis/mod.rs +++ b/indexer/tasks/src/genesis/mod.rs @@ -1,3 +1,4 @@ pub mod genesis_block; pub mod genesis_executor; pub mod genesis_txs; +pub mod shelley_genesis; diff --git a/indexer/tasks/src/genesis/shelley_genesis.rs b/indexer/tasks/src/genesis/shelley_genesis.rs new file mode 100644 index 00000000..83b34670 --- /dev/null +++ b/indexer/tasks/src/genesis/shelley_genesis.rs @@ -0,0 +1,238 @@ +use crate::config::EmptyConfig::EmptyConfig; +use crate::dsl::task_macro::*; +use cml_chain::genesis::shelley::config::ShelleyGenesisData; +use cml_chain::transaction::AlonzoFormatTxOut; +use cml_chain::Serialize as _; +use cml_core::serialization::ToBytes; +use cml_crypto::{blake2b256, RawBytesEncoding}; +use entity::block::{self, EraValue}; +use entity::stake_credential; +use entity::{ + prelude::*, + sea_orm::{entity::*, prelude::*, Condition, DatabaseTransaction}, +}; +use hex::ToHex; +use sea_orm::{QueryOrder, QuerySelect as _}; + +carp_task! { + name ShelleyGenesisBlockTask; + configuration EmptyConfig; + doc "Adds the block to the database"; + era shelley_genesis; + dependencies []; + read []; + write [genesis_block]; + should_add_task |_block, _properties| { + true + }; + execute |_previous_data, task| handle_block( + task.db_tx, + task.block + ); + merge_result |_previous_data, _result| { + }; +} + +async fn handle_block( + db_tx: &DatabaseTransaction, + block: BlockInfo<'_, ShelleyGenesisData, BlockGlobalInfo>, +) -> Result<(), DbErr> { + if Genesis::find() + .filter(GenesisColumn::Era.eq(i32::from(EraValue::Shelley))) + .limit(1) + .one(db_tx) + .await? + .is_some() + { + // There are two cases where we need to run the code in this task + // 1. We have a new block with the Shelley era. + // 2. We skipped the Shelley era and we got a block with a newer era. + // + // However, if we get a new era directly (like Conway), we need to know + // if we've seen Shelley before or not. That's the reason we need this + // condition. + // + // Note: Remember that the genesis file for each era is different. + return Ok(()); + } + + let (latest_block_height, latest_block_epoch) = Block::find() + .order_by_desc(block::Column::Height) + .limit(1) + .one(db_tx) + .await? + .map(|block| (block.height, block.epoch)) + .unwrap_or_default(); + + // assuming that hard forks can only happen at epoch boundaries? + let start_epoch = latest_block_epoch + 1; + + // TODO: these values should come from the byron genesis, but for the + // existing networks the shelley and byron epoch lenghts are the same, and + // for all of them the slot duration is 20 seconds too. + // potentially we may want to add an entry in the era table with values for these though? + // or we could read the genesis file here. + let byron_slot_duration = 20; + let epoch_length_in_byron_slots = block.1.epoch_length / byron_slot_duration; + + let first_slot = (block.2.epoch_slot.unwrap() / epoch_length_in_byron_slots + * epoch_length_in_byron_slots) as i64; + + let inserted_block = Block::insert(BlockActiveModel { + era: Set(EraValue::Shelley.into()), + height: Set(latest_block_height + 1), + epoch: Set(start_epoch), + payload: Set(None), + tx_count: Set(block.1.initial_funds.len().try_into().unwrap()), + // TODO: what should we hash? + hash: Set(b"shelley-genesis".to_vec()), + slot: Set(first_slot.try_into().unwrap()), + ..Default::default() + }) + .exec_with_returning(true, db_tx) + .await? + .unwrap(); + + Genesis::insert(GenesisActiveModel { + era: Set(i32::from(EraValue::Shelley)), + block_id: Set(inserted_block.id), + block_height: Set(latest_block_height + 1), + first_slot: Set(first_slot), + start_epoch: Set(start_epoch.into()), + epoch_length_seconds: Set(block.1.epoch_length as i64), + }) + .exec(db_tx) + .await?; + + let stake_credentials = handle_initial_funds(block, inserted_block, db_tx).await?; + + if let Some(staking) = block + .1 + .staking + .as_ref() + .filter(|staking| !staking.stake.is_empty()) + { + entity::stake_delegation::Entity::insert_many(staking.stake.iter().map( + |(stake_credential, pool)| { + let stake_credential_entry = stake_credentials + .iter() + .find(|inserted_credential| { + inserted_credential.credential + == cml_chain::certs::StakeCredential::new_pub_key(*stake_credential) + .to_cbor_bytes() + }) + .unwrap(); + + entity::stake_delegation::ActiveModel { + pool_credential: Set(Some(pool.to_raw_bytes().to_vec())), + previous_pool: Set(None), + stake_credential: Set(stake_credential_entry.id), + // Note: this is not really the tx of the delegation, but the tx + // of the utxo with the initial funds. However there is no other + // tx to assign this to otherwise. + tx_id: Set(stake_credential_entry.first_tx), + ..Default::default() + } + }, + )) + .exec(db_tx) + .await?; + } + + Ok(()) +} + +async fn handle_initial_funds( + block: (&str, &ShelleyGenesisData, &BlockGlobalInfo), + inserted_block: BlockModel, + db_tx: &DatabaseTransaction, +) -> Result, DbErr> { + if block.1.initial_funds.is_empty() { + return Ok(vec![]); + } + + let inserted_transactions = + Transaction::insert_many(block.1.initial_funds.keys().map(|address| { + let tx_id = blake2b256(&address.to_raw_bytes()); + + TransactionActiveModel { + block_id: Set(inserted_block.id), + hash: Set(tx_id.to_vec()), + is_valid: Set(true), + payload: Set(vec![]), + tx_index: Set(0), + ..Default::default() + } + })) + .exec_many_with_returning(db_tx) + .await?; + + let inserted_addresses = Address::insert_many( + block + .1 + .initial_funds + .iter() + .zip(inserted_transactions.iter()) + .map(|((address, _), inserted_tx)| AddressActiveModel { + payload: Set(address.to_raw_bytes()), + first_tx: Set(inserted_tx.id), + ..Default::default() + }), + ) + .exec_many_with_returning(db_tx) + .await?; + + TransactionOutput::insert_many(block.1.initial_funds.iter().zip(inserted_addresses).map( + |((address, coin), address_model)| { + TransactionOutputActiveModel { + address_id: Set(address_model.id), + tx_id: Set(address_model.first_tx), + payload: Set( + cml_chain::transaction::TransactionOutput::AlonzoFormatTxOut( + AlonzoFormatTxOut::new( + address.clone(), + cml_chain::Value::new(*coin, Default::default()), + ), + ) + .to_cbor_bytes(), + ), + output_index: Set(0), + ..Default::default() + } + }, + )) + .exec_many_with_returning(db_tx) + .await?; + + let inserted_credentials = StakeCredential::insert_many( + block + .1 + .initial_funds + .iter() + .zip(inserted_transactions) + .filter_map(|((address, _), inserted_tx)| { + let stake_credential = match address { + cml_chain::address::Address::Base(base) => Some(base.stake.clone()), + // TODO: this doesn't seem possible? + cml_chain::address::Address::Ptr(_) => todo!(), + cml_chain::address::Address::Enterprise(_) => None, + cml_chain::address::Address::Reward(_) => None, + cml_chain::address::Address::Byron(_) => None, + }; + + if let Some(stake_credential) = stake_credential { + Some(StakeCredentialActiveModel { + credential: Set(stake_credential.to_cbor_bytes()), + first_tx: Set(inserted_tx.id), + ..Default::default() + }) + } else { + None + } + }), + ) + .exec_many_with_returning(db_tx) + .await?; + + Ok(inserted_credentials) +} diff --git a/indexer/tasks/src/utils.rs b/indexer/tasks/src/utils.rs index 65f4434c..99785fe0 100644 --- a/indexer/tasks/src/utils.rs +++ b/indexer/tasks/src/utils.rs @@ -58,6 +58,11 @@ pub fn find_task_registry_entry(task_name: &str) -> Option { return Some(*registry_entry); } } + TaskRegistryEntry::ShelleyGenesis(entry) => { + if entry.builder.get_name() == task_name { + return Some(*registry_entry); + } + } } } None From 33a4f35d877cdabd65b3652e6fdada00a679e078 Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini <48031343+ecioppettini@users.noreply.github.com> Date: Tue, 24 Sep 2024 12:54:04 -0300 Subject: [PATCH 08/12] fix plan_visualizer missing case --- indexer/plan-visualizer/src/generate_image.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/indexer/plan-visualizer/src/generate_image.rs b/indexer/plan-visualizer/src/generate_image.rs index c2279fb0..6845923d 100644 --- a/indexer/plan-visualizer/src/generate_image.rs +++ b/indexer/plan-visualizer/src/generate_image.rs @@ -51,6 +51,14 @@ pub fn generate(exec_plan: &ExecutionPlan, plan_name: &str) -> Graph { entry.builder.get_dependencies(), ); } + TaskRegistryEntry::ShelleyGenesis(entry) => { + add_node( + SubgraphNames::Genesis, + task_name, + entry.builder.get_name(), + entry.builder.get_dependencies(), + ); + } TaskRegistryEntry::Byron(entry) => { add_node( SubgraphNames::Byron, From 2829c3a5bbfe4cc482e94efe7c57abb2c480e5fb Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini <48031343+ecioppettini@users.noreply.github.com> Date: Fri, 27 Sep 2024 03:02:27 -0300 Subject: [PATCH 09/12] only compute the epoch if it's not done by the source --- indexer/src/sinks/cardano.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/indexer/src/sinks/cardano.rs b/indexer/src/sinks/cardano.rs index 1cb88248..88fbac33 100644 --- a/indexer/src/sinks/cardano.rs +++ b/indexer/src/sinks/cardano.rs @@ -237,7 +237,8 @@ impl Sink for CardanoSink { // probably doesn't matter that much for the perf aggregator // since it's only one block and it only happens once. if let Some(shelley_era) = &self.shelley_era { - epoch = shelley_era.absolute_slot_to_epoch(epoch_slot.unwrap()); + epoch = + epoch.or_else(|| shelley_era.absolute_slot_to_epoch(epoch_slot.unwrap())); } match epoch { @@ -430,13 +431,14 @@ async fn insert_block( known_time: 0, slot_length: 0, }); - } - // in the byron era the epoch it's in the header, so we only need to compute - // this if we already transitioned to shelley. - if let Some(shelley_era) = &shelley_era { - block_global_info.epoch = - shelley_era.absolute_slot_to_epoch(block_global_info.epoch_slot.unwrap()); + // in the byron era the epoch it's in the header, so we only need to compute + // this if we already transitioned to shelley. + if let Some(shelley_era) = &shelley_era { + block_global_info.epoch = block_global_info.epoch.or_else(|| { + shelley_era.absolute_slot_to_epoch(block_global_info.epoch_slot.unwrap()) + }); + } } perf_aggregator.block_parse += block_parse_counter.elapsed(); From d505f0208a263c0d1b07d315bce45798bb1fea2e Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini <48031343+ecioppettini@users.noreply.github.com> Date: Tue, 1 Oct 2024 02:52:25 -0300 Subject: [PATCH 10/12] replace the oura source with new n2c (pallas network) it's more or less the same thing, but the deserialization of the blocks is entirely done in cml now --- indexer/Cargo.toml | 7 +- indexer/src/main.rs | 25 +++- indexer/src/sources/mod.rs | 4 +- indexer/src/sources/n2c.rs | 50 +++++++ indexer/src/sources/oura_source.rs | 232 ----------------------------- 5 files changed, 73 insertions(+), 245 deletions(-) create mode 100644 indexer/src/sources/n2c.rs delete mode 100644 indexer/src/sources/oura_source.rs diff --git a/indexer/Cargo.toml b/indexer/Cargo.toml index c350d6b1..ac94de25 100644 --- a/indexer/Cargo.toml +++ b/indexer/Cargo.toml @@ -9,9 +9,9 @@ strip = true [dependencies] # [core] -dcspark-core = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "ebb245ac047f9d45dba97f07a5bb525ffd81a539" } -dcspark-blockchain-source = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "ebb245ac047f9d45dba97f07a5bb525ffd81a539" } -multiverse = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "ebb245ac047f9d45dba97f07a5bb525ffd81a539" } +dcspark-core = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "986ad8495c3894782774e2db0fc3fe65f44ca89d" } +dcspark-blockchain-source = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "986ad8495c3894782774e2db0fc3fe65f44ca89d" } +multiverse = { git = "https://github.com/dcSpark/dcspark-core.git", rev = "986ad8495c3894782774e2db0fc3fe65f44ca89d" } # [local] entity = { path = "entity" } @@ -29,7 +29,6 @@ clap = { version = "3.1", features = ["derive"] } ctrlc = { version = "3.2.4", features = ["termination"] } dotenv = { version = "0.15.0" } hex = { version = "0.4.3" } -oura = { git = "https://github.com/txpipe/oura.git", rev = "e1b971394a394bde13fb601ad3f6d4ad343b02f0" } serde = { version = "1.0.152", features = ["derive", "rc"] } serde_json = { version = "1.0.92" } serde_yaml = { version = "0.9.17" } diff --git a/indexer/src/main.rs b/indexer/src/main.rs index 6de33882..7dc3aa3f 100644 --- a/indexer/src/main.rs +++ b/indexer/src/main.rs @@ -1,12 +1,11 @@ use crate::sink::Sink; use crate::sinks::CardanoSink; -use crate::sources::{CardanoSource, OuraSource}; +use crate::sources::{CardanoSource, N2CSource}; use crate::types::StoppableService; use anyhow::{anyhow, Context}; use clap::Parser; use dcspark_blockchain_source::{GetNextFrom, Source}; use migration::async_std::path::PathBuf; -use oura::sources::BearerKind; use serde::Deserialize; use std::fs::File; use std::process::exit; @@ -68,7 +67,7 @@ pub enum SinkConfig { #[serde(tag = "type", rename_all = "snake_case")] #[serde(deny_unknown_fields)] pub enum SourceConfig { - Oura { socket: String, bearer: BearerKind }, + N2c { socket: String }, CardanoNet { relay: (String, u16) }, } @@ -169,7 +168,7 @@ async fn main() -> anyhow::Result<()> { config }; - let (network, base_config, mut sink) = match &config.sink { + let (_network, base_config, mut sink) = match &config.sink { SinkConfig::Cardano { network, custom_config, @@ -213,9 +212,21 @@ async fn main() -> anyhow::Result<()> { .context("Can't get starting point from sink")?; match &config.source { - SourceConfig::Oura { .. } => { - let source = OuraSource::new(config.source, network, start_from.clone()) - .context("Can't create oura source")?; + SourceConfig::N2c { socket } => { + let network_config = dcspark_blockchain_source::cardano::NetworkConfiguration { + relay: dcspark_blockchain_source::cardano::Relay::UnixSocket(socket.clone()), + from: None, + ..base_config + }; + + let source = dcspark_blockchain_source::cardano::N2CSource::connect( + network_config, + start_from.clone(), + ) + .await?; + + let source = N2CSource(source); + let start_from = start_from .last() .cloned() diff --git a/indexer/src/sources/mod.rs b/indexer/src/sources/mod.rs index 0071ef24..9b014a95 100644 --- a/indexer/src/sources/mod.rs +++ b/indexer/src/sources/mod.rs @@ -1,5 +1,5 @@ mod cardano; -mod oura_source; +mod n2c; pub use cardano::CardanoSource; -pub use oura_source::OuraSource; +pub use n2c::N2CSource; diff --git a/indexer/src/sources/n2c.rs b/indexer/src/sources/n2c.rs new file mode 100644 index 00000000..a13bbe43 --- /dev/null +++ b/indexer/src/sources/n2c.rs @@ -0,0 +1,50 @@ +use async_trait::async_trait; +use dcspark_blockchain_source::{cardano::Point, Source}; +use dcspark_core::StoppableService as _; + +pub struct N2CSource(pub dcspark_blockchain_source::cardano::N2CSource); + +#[async_trait] +impl crate::types::StoppableService for N2CSource { + async fn stop(self) -> anyhow::Result<()> { + self.0.stop().await?; + + Ok(()) + } +} + +#[async_trait::async_trait] +impl Source for N2CSource { + type Event = crate::common::CardanoEventType; + + type From = Point; + + #[tracing::instrument(skip(self))] + async fn pull(&mut self, _from: &Self::From) -> anyhow::Result> { + let event = self.0.pull(&()).await?; + + let Some(event) = event else { + return Ok(None); + }; + + match event { + dcspark_blockchain_source::cardano::N2CSourceEvent::RollBack { + block_slot, + block_hash, + } => Ok(Some(crate::common::CardanoEventType::RollBack { + block_slot, + block_hash, + })), + dcspark_blockchain_source::cardano::N2CSourceEvent::Block(block_event) => { + Ok(Some(crate::common::CardanoEventType::Block { + cbor_hex: hex::encode(block_event.raw_block), + epoch: block_event.epoch, + epoch_slot: Some(block_event.slot_number.into()), + block_number: block_event.block_number.into(), + block_hash: block_event.id.to_string(), + block_slot: block_event.slot_number.into(), + })) + } + } + } +} diff --git a/indexer/src/sources/oura_source.rs b/indexer/src/sources/oura_source.rs deleted file mode 100644 index b868af28..00000000 --- a/indexer/src/sources/oura_source.rs +++ /dev/null @@ -1,232 +0,0 @@ -use crate::SourceConfig; -use anyhow::anyhow; -use dcspark_blockchain_source::cardano::Point; - -use std::{str::FromStr, sync::Arc, thread::JoinHandle}; - -use crate::common::CardanoEventType; -use crate::types::StoppableService; -use oura::model::EventData; -use oura::pipelining::SourceProvider; -use oura::{ - filters::selection::{self, Predicate}, - mapper, - pipelining::{FilterProvider, StageReceiver}, - sources::{n2c, n2n, AddressArg, BearerKind, IntersectArg, MagicArg, PointArg}, - utils::{ChainWellKnownInfo, Utils, WithUtils}, -}; - -pub struct OuraSource { - _handles: Vec>, - input: StageReceiver, - - // cardano-node always triggers a rollback event when you connect to it - // if all the intersection points existed, if will return the most recent point you gave it - // to avoid this causing a rollback when applying a migration starting from an old block, we skip this rollback - expected_rollback: Option, -} - -impl OuraSource { - pub fn new( - config: SourceConfig, - network: String, - start_from: Vec, - ) -> anyhow::Result { - match config { - SourceConfig::Oura { socket, bearer } => { - let (intersect, rollback) = match start_from { - points if points.is_empty() => { - // we need a special intersection type when bootstrapping from genesis - (IntersectArg::Origin, None) - } - points => { - let (slot_nb, hash) = match points.last().unwrap() { - Point::Origin => { - return Err(anyhow!("Origin point is not supported here")); - } - Point::BlockHeader { slot_nb, hash } => (slot_nb, hash), - }; - tracing::info!("Starting sync at block #{} ({})", slot_nb, hash,); - // if last block synced was at slot 0, - // that means it was the genesis block so we start from origin - match (*slot_nb).into() { - 0u64 => (IntersectArg::Origin, None), - _ => { - let point_args: Vec = points - .into_iter() - .flat_map(|p| match p { - Point::Origin => vec![], - Point::BlockHeader { slot_nb, hash } => { - vec![PointArg(slot_nb.into(), hash.to_string())] - } - }) - .collect(); - let rollback = point_args.first().cloned(); - (IntersectArg::Fallbacks(point_args), rollback) - } - } - } - }; - - let (handles, input) = oura_bootstrap(bearer, intersect, &network, socket)?; - - Ok(OuraSource { - _handles: handles, - input, - expected_rollback: rollback, - }) - } - _ => Err(anyhow!( - "Config {:?} is not supported as oura config", - config - )), - } - } -} - -#[async_trait::async_trait] -impl dcspark_blockchain_source::Source for OuraSource { - type Event = CardanoEventType; - type From = Point; - - /// note: from is ignored here since oura is set up just once - async fn pull(&mut self, _from: &Self::From) -> anyhow::Result> { - let input = self - .input - .recv() - .map_err(|error| anyhow!("Can't fetch oura event: {:?}", error))?; - - match input.data { - EventData::Block(block_record) => { - let cbor = block_record - .cbor_hex - .ok_or_else(|| anyhow!("cbor is not presented"))?; - Ok(Some(CardanoEventType::Block { - cbor_hex: cbor, - epoch: block_record.epoch, - epoch_slot: block_record.epoch_slot, - block_number: block_record.number, - block_hash: block_record.hash, - block_slot: block_record.slot, - })) - } - EventData::RollBack { - block_slot, - block_hash, - } => { - if let Some(expected) = self.expected_rollback.clone() { - if expected.1 == *block_hash { - self.expected_rollback = None; - return Ok(None); - } - }; - Ok(Some(CardanoEventType::RollBack { - block_slot, - block_hash, - })) - } - _ => Ok(None), - } - } -} - -#[async_trait::async_trait] -impl StoppableService for OuraSource { - async fn stop(self) -> anyhow::Result<()> { - Ok(()) - } -} - -fn oura_bootstrap( - mode: BearerKind, - intersect: IntersectArg, - network: &str, - socket: String, -) -> anyhow::Result<(Vec>, StageReceiver)> { - let magic = match network { - "sanchonet" => MagicArg(4), - _ => MagicArg::from_str(network).map_err(|_| anyhow!("magic arg failed"))?, - }; - - let well_known = if magic.0 == 4 { - ChainWellKnownInfo { - byron_epoch_length: 86400, - byron_slot_length: 20, - byron_known_slot: 0, - byron_known_hash: "".to_string(), - byron_known_time: 1686789000, - shelley_epoch_length: 86400, - shelley_slot_length: 1, - shelley_known_slot: 0, - shelley_known_hash: "".to_string(), - shelley_known_time: 1686789000, - address_hrp: "addr_test".to_string(), - adahandle_policy: "".to_string(), - } - } else { - ChainWellKnownInfo::try_from_magic(*magic) - .map_err(|_| anyhow!("chain well known info failed"))? - }; - - let utils = Arc::new(Utils::new(well_known)); - - let mapper = mapper::Config { - include_transaction_details: true, - include_block_cbor: true, - ..Default::default() - }; - - tracing::info!("{}", "Attempting to connect to node..."); - let (source_handle, source_rx) = match mode { - #[allow(deprecated)] - BearerKind::Unix => { - let source_config = n2c::Config { - address: AddressArg(BearerKind::Unix, socket), - magic: Some(magic), - well_known: None, - mapper, - since: None, - min_depth: 0, - intersect: Some(intersect), - retry_policy: None, - finalize: None, // TODO: configurable - }; - WithUtils::new(source_config, utils).bootstrap() - } - #[allow(deprecated)] - BearerKind::Tcp => { - let source_config = n2n::Config { - address: AddressArg(BearerKind::Tcp, socket), - magic: Some(magic), - well_known: None, - mapper, - since: None, - min_depth: 0, - intersect: Some(intersect), - retry_policy: None, - finalize: None, // TODO: configurable - }; - WithUtils::new(source_config, utils).bootstrap() - } - } - .map_err(|e| { - tracing::error!("{}", e); - anyhow!("failed to bootstrap source. Are you sure cardano-node is running?") - })?; - tracing::info!("{}", "Connection to node established"); - - let mut handles = Vec::new(); - handles.push(source_handle); - - let check = Predicate::VariantIn(vec![String::from("Block"), String::from("Rollback")]); - - let filter_setup = selection::Config { check }; - - let (filter_handle, filter_rx) = filter_setup - .bootstrap(source_rx) - .map_err(|_| anyhow!("failed to bootstrap filter"))?; - - handles.push(filter_handle); - - Ok((handles, filter_rx)) -} From 0badb1b41383486829f099e44682168cab2fe16b Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini <48031343+ecioppettini@users.noreply.github.com> Date: Tue, 1 Oct 2024 03:23:45 -0300 Subject: [PATCH 11/12] parse the genesis inside the task to keep things working well without the new task --- indexer/src/sinks/cardano.rs | 16 +--------- indexer/tasks/src/dsl/database_task.rs | 9 ++++-- indexer/tasks/src/dsl/task_macro.rs | 2 +- indexer/tasks/src/genesis/genesis_executor.rs | 4 +-- indexer/tasks/src/genesis/shelley_genesis.rs | 30 ++++++++++++++----- 5 files changed, 33 insertions(+), 28 deletions(-) diff --git a/indexer/src/sinks/cardano.rs b/indexer/src/sinks/cardano.rs index 88fbac33..78938d5b 100644 --- a/indexer/src/sinks/cardano.rs +++ b/indexer/src/sinks/cardano.rs @@ -18,7 +18,6 @@ use entity::{ prelude::{Block, BlockColumn}, sea_orm::{DatabaseConnection, EntityTrait, QueryOrder, QuerySelect}, }; -use std::io::Cursor; use std::path::PathBuf; use std::sync::Arc; use std::sync::Mutex; @@ -27,7 +26,6 @@ use tasks::dsl::database_task::BlockGlobalInfo; use tasks::execution_plan::ExecutionPlan; use tasks::multiera::multiera_executor::process_multiera_block; use tasks::utils::TaskPerfAggregator; -use tokio::io::AsyncReadExt; #[derive(Clone)] pub enum Network { @@ -398,21 +396,9 @@ async fn insert_block( .context("Couldn't get the shelley genesis file from the filesystem") .unwrap(); - let mut buffer = Vec::new(); - - tokio::fs::File::open(genesis_file_path) - .await - .unwrap() - .read_to_end(&mut buffer) - .await - .unwrap(); - - let genesis = cml_chain::genesis::shelley::parse::parse_genesis_data(Cursor::new(buffer)) - .expect("Failed to parse genesis"); - tasks::genesis::genesis_executor::process_shelley_genesis_block( txn, - ("", &genesis, &block_global_info), + ("", &genesis_file_path, &block_global_info), &exec_plan, task_perf_aggregator.clone(), ) diff --git a/indexer/tasks/src/dsl/database_task.rs b/indexer/tasks/src/dsl/database_task.rs index 093124d8..d4145830 100644 --- a/indexer/tasks/src/dsl/database_task.rs +++ b/indexer/tasks/src/dsl/database_task.rs @@ -1,8 +1,11 @@ use crate::utils::TaskPerfAggregator; -use cml_chain::genesis::{byron::config::GenesisData, shelley::config::ShelleyGenesisData}; +use cml_chain::genesis::byron::config::GenesisData; use entity::{block::EraValue, prelude::*, sea_orm::DatabaseTransaction}; use shred::DispatcherBuilder; -use std::sync::{Arc, Mutex}; +use std::{ + path::PathBuf, + sync::{Arc, Mutex}, +}; /// Misc information about blocks that can't be computed from just the block data itself pub struct BlockGlobalInfo { @@ -67,7 +70,7 @@ pub struct GenesisTaskRegistryEntry { #[derive(Copy, Clone)] pub struct ShelleyGenesisTaskRegistryEntry { - pub builder: &'static (dyn for<'a> TaskBuilder<'a, ShelleyGenesisData, BlockGlobalInfo> + Sync), + pub builder: &'static (dyn for<'a> TaskBuilder<'a, PathBuf, BlockGlobalInfo> + Sync), } #[derive(Copy, Clone)] diff --git a/indexer/tasks/src/dsl/task_macro.rs b/indexer/tasks/src/dsl/task_macro.rs index ce9370c6..25122fc4 100644 --- a/indexer/tasks/src/dsl/task_macro.rs +++ b/indexer/tasks/src/dsl/task_macro.rs @@ -19,7 +19,7 @@ macro_rules! era_to_block { GenesisData }; (shelley_genesis) => { - ShelleyGenesisData + PathBuf }; (byron) => { cml_multi_era::MultiEraBlock diff --git a/indexer/tasks/src/genesis/genesis_executor.rs b/indexer/tasks/src/genesis/genesis_executor.rs index 1af6d6b7..8b89f3e2 100644 --- a/indexer/tasks/src/genesis/genesis_executor.rs +++ b/indexer/tasks/src/genesis/genesis_executor.rs @@ -4,9 +4,9 @@ use crate::execution_plan::ExecutionPlan; use crate::utils::find_task_registry_entry; use crate::utils::TaskPerfAggregator; use cml_chain::genesis::byron::config::GenesisData; -use cml_chain::genesis::shelley::config::ShelleyGenesisData; use entity::sea_orm::{prelude::*, DatabaseTransaction}; use shred::{DispatcherBuilder, World}; +use std::path::PathBuf; use std::sync::{Arc, Mutex}; use tokio::runtime::Handle; @@ -63,7 +63,7 @@ pub async fn process_genesis_block( pub async fn process_shelley_genesis_block( txn: &DatabaseTransaction, - block: BlockInfo<'_, ShelleyGenesisData, BlockGlobalInfo>, + block: BlockInfo<'_, PathBuf, BlockGlobalInfo>, exec_plan: &ExecutionPlan, perf_aggregator: Arc>, ) -> Result<(), DbErr> { diff --git a/indexer/tasks/src/genesis/shelley_genesis.rs b/indexer/tasks/src/genesis/shelley_genesis.rs index 83b34670..1dfafbf7 100644 --- a/indexer/tasks/src/genesis/shelley_genesis.rs +++ b/indexer/tasks/src/genesis/shelley_genesis.rs @@ -1,3 +1,6 @@ +use std::io::Cursor; +use std::path::PathBuf; + use crate::config::EmptyConfig::EmptyConfig; use crate::dsl::task_macro::*; use cml_chain::genesis::shelley::config::ShelleyGenesisData; @@ -13,6 +16,7 @@ use entity::{ }; use hex::ToHex; use sea_orm::{QueryOrder, QuerySelect as _}; +use tokio::io::AsyncReadExt as _; carp_task! { name ShelleyGenesisBlockTask; @@ -35,7 +39,7 @@ carp_task! { async fn handle_block( db_tx: &DatabaseTransaction, - block: BlockInfo<'_, ShelleyGenesisData, BlockGlobalInfo>, + block: BlockInfo<'_, PathBuf, BlockGlobalInfo>, ) -> Result<(), DbErr> { if Genesis::find() .filter(GenesisColumn::Era.eq(i32::from(EraValue::Shelley))) @@ -56,6 +60,18 @@ async fn handle_block( return Ok(()); } + let mut buffer = Vec::new(); + + tokio::fs::File::open(block.1) + .await + .unwrap() + .read_to_end(&mut buffer) + .await + .unwrap(); + + let genesis = cml_chain::genesis::shelley::parse::parse_genesis_data(Cursor::new(buffer)) + .expect("Failed to parse genesis"); + let (latest_block_height, latest_block_epoch) = Block::find() .order_by_desc(block::Column::Height) .limit(1) @@ -73,7 +89,7 @@ async fn handle_block( // potentially we may want to add an entry in the era table with values for these though? // or we could read the genesis file here. let byron_slot_duration = 20; - let epoch_length_in_byron_slots = block.1.epoch_length / byron_slot_duration; + let epoch_length_in_byron_slots = genesis.epoch_length / byron_slot_duration; let first_slot = (block.2.epoch_slot.unwrap() / epoch_length_in_byron_slots * epoch_length_in_byron_slots) as i64; @@ -83,7 +99,7 @@ async fn handle_block( height: Set(latest_block_height + 1), epoch: Set(start_epoch), payload: Set(None), - tx_count: Set(block.1.initial_funds.len().try_into().unwrap()), + tx_count: Set(genesis.initial_funds.len().try_into().unwrap()), // TODO: what should we hash? hash: Set(b"shelley-genesis".to_vec()), slot: Set(first_slot.try_into().unwrap()), @@ -99,15 +115,15 @@ async fn handle_block( block_height: Set(latest_block_height + 1), first_slot: Set(first_slot), start_epoch: Set(start_epoch.into()), - epoch_length_seconds: Set(block.1.epoch_length as i64), + epoch_length_seconds: Set(genesis.epoch_length as i64), }) .exec(db_tx) .await?; - let stake_credentials = handle_initial_funds(block, inserted_block, db_tx).await?; + let stake_credentials = + handle_initial_funds((block.0, &genesis, block.2), inserted_block, db_tx).await?; - if let Some(staking) = block - .1 + if let Some(staking) = genesis .staking .as_ref() .filter(|staking| !staking.stake.is_empty()) From 04c76fd398fd574a290e066b8c7ce7fae46171a6 Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini <48031343+ecioppettini@users.noreply.github.com> Date: Tue, 1 Oct 2024 03:59:04 -0300 Subject: [PATCH 12/12] point cml to unmerged pr with flota deser fixes --- Cargo.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 8084624e..8f91eaf6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ members = [ # cml-crypto = { version = "6.0.0" } # cml-multi-era = { version = "6.0.0" } -cml-chain = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "b7acbd3634f5ba8402a9704f0413bd434ed157c3" } -cml-core = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "b7acbd3634f5ba8402a9704f0413bd434ed157c3" } -cml-crypto = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "b7acbd3634f5ba8402a9704f0413bd434ed157c3" } -cml-multi-era = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "b7acbd3634f5ba8402a9704f0413bd434ed157c3" } +cml-chain = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "8ea3d50ab9a01d82ca72ab6d8258b4b36aad2ce7" } +cml-core = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "8ea3d50ab9a01d82ca72ab6d8258b4b36aad2ce7" } +cml-crypto = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "8ea3d50ab9a01d82ca72ab6d8258b4b36aad2ce7" } +cml-multi-era = { git = "https://github.com/dcSpark/cardano-multiplatform-lib", rev = "8ea3d50ab9a01d82ca72ab6d8258b4b36aad2ce7" }