From 80fa8d97b1ab62a65f5dda86ba9f9a9ec325282f Mon Sep 17 00:00:00 2001 From: Evan B Date: Thu, 23 Jan 2025 20:50:26 -0500 Subject: [PATCH 1/6] Smart backup (#71) --- .../src/backup_snapshots.rs | 155 ++++++++++++------ tip-router-operator-cli/src/ledger_utils.rs | 8 +- tip-router-operator-cli/src/lib.rs | 17 +- tip-router-operator-cli/src/main.rs | 7 + tip-router-operator-cli/src/process_epoch.rs | 45 ++++- .../src/stake_meta_generator.rs | 18 +- 6 files changed, 186 insertions(+), 64 deletions(-) diff --git a/tip-router-operator-cli/src/backup_snapshots.rs b/tip-router-operator-cli/src/backup_snapshots.rs index c5a4b9a6..b7350c79 100644 --- a/tip-router-operator-cli/src/backup_snapshots.rs +++ b/tip-router-operator-cli/src/backup_snapshots.rs @@ -7,17 +7,19 @@ use tokio::time; use crate::process_epoch::get_previous_epoch_last_slot; +const MAXIMUM_BACKUP_INCREMENTAL_SNAPSHOTS_PER_EPOCH: usize = 3; + /// Represents a parsed incremental snapshot filename #[derive(Debug)] -struct SnapshotInfo { +pub struct SnapshotInfo { path: PathBuf, _start_slot: u64, - end_slot: u64, + pub end_slot: u64, } impl SnapshotInfo { /// Try to parse a snapshot filename into slot information - fn from_path(path: PathBuf) -> Option { + pub fn from_path(path: PathBuf) -> Option { let file_name = path.file_name()?.to_str()?; // Only try to parse if it's an incremental snapshot @@ -67,25 +69,32 @@ impl BackupSnapshotMonitor { } /// Gets target slot for current epoch - fn get_target_slot(&self) -> Result { + fn get_target_slots(&self) -> Result<(u64, u64)> { + // Get the last slot of the current epoch + let (_, last_epoch_target_slot) = get_previous_epoch_last_slot(&self.rpc_client)?; + let next_epoch_target_slot = last_epoch_target_slot + DEFAULT_SLOTS_PER_EPOCH; + if let Some(target_slot) = self.override_target_slot { - return Ok(target_slot); + return Ok((last_epoch_target_slot, target_slot)); } - // Get the last slot of the current epoch - let (_, last_slot) = get_previous_epoch_last_slot(&self.rpc_client)?; - Ok(last_slot + DEFAULT_SLOTS_PER_EPOCH) + Ok((last_epoch_target_slot, next_epoch_target_slot)) } /// Finds the most recent incremental snapshot that's before our target slot fn find_closest_incremental(&self, target_slot: u64) -> Option { let dir_entries = std::fs::read_dir(&self.snapshots_dir).ok()?; - // Find the snapshot that ends closest to but not after target_slot + // Find the snapshot that ends closest to but not after target_slot, in the same epoch dir_entries .filter_map(Result::ok) .filter_map(|entry| SnapshotInfo::from_path(entry.path())) - .filter(|snap| snap.end_slot <= target_slot) + .filter(|snap| { + let before_target_slot = snap.end_slot <= target_slot; + let in_same_epoch = (snap.end_slot / DEFAULT_SLOTS_PER_EPOCH) + == (target_slot / DEFAULT_SLOTS_PER_EPOCH); + before_target_slot && in_same_epoch + }) .max_by_key(|snap| snap.end_slot) .map(|snap| snap.path) } @@ -143,13 +152,34 @@ impl BackupSnapshotMonitor { Ok(()) } + fn evict_all_epoch_snapshots(&self, epoch: u64) -> Result<()> { + let dir_entries = std::fs::read_dir(&self.backup_dir)?; + + // Find all snapshots for the given epoch and remove them + dir_entries + .filter_map(Result::ok) + .filter_map(|entry| SnapshotInfo::from_path(entry.path())) + .filter(|snap| snap.end_slot / DEFAULT_SLOTS_PER_EPOCH == epoch) + .try_for_each(|snapshot| { + log::debug!( + "Removing old snapshot from epoch {} with slot {}: {:?}", + epoch, + snapshot.end_slot, + snapshot.path + ); + std::fs::remove_file(snapshot.path.as_path()) + })?; + + Ok(()) + } + fn evict_same_epoch_incremental(&self, target_slot: u64) -> Result<()> { let slots_per_epoch = DEFAULT_SLOTS_PER_EPOCH; let target_epoch = target_slot / slots_per_epoch; let dir_entries = std::fs::read_dir(&self.backup_dir)?; - // Find the snapshot that ends closest to but not after target_slot + // Find all snapshots for the given epoch let mut same_epoch_snapshots: Vec = dir_entries .filter_map(Result::ok) .filter_map(|entry| SnapshotInfo::from_path(entry.path())) @@ -159,58 +189,87 @@ impl BackupSnapshotMonitor { // Sort by end_slot ascending so we can remove oldest same_epoch_snapshots.sort_by_key(|snap| snap.end_slot); - // Remove oldest snapshot - if let Some(oldest_snapshot) = same_epoch_snapshots.first() { - log::debug!( - "Removing old snapshot from epoch {} with slot {}: {:?}", - target_epoch, - oldest_snapshot.end_slot, - oldest_snapshot.path - ); - std::fs::remove_file(oldest_snapshot.path.as_path())?; + // Remove oldest snapshots if we have more than MAXIMUM_BACKUP_INCREMENTAL_SNAPSHOTS_PER_EPOCH + while same_epoch_snapshots.len() > MAXIMUM_BACKUP_INCREMENTAL_SNAPSHOTS_PER_EPOCH { + if let Some(oldest_snapshot) = same_epoch_snapshots.first() { + log::debug!( + "Removing old snapshot from epoch {} with slot {}: {:?}", + target_epoch, + oldest_snapshot.end_slot, + oldest_snapshot.path + ); + std::fs::remove_file(oldest_snapshot.path.as_path())?; + same_epoch_snapshots.remove(0); + } } Ok(()) } + async fn backup_latest_for_target_slot( + &self, + mut current_backup_path: Option, + target_slot: u64, + ) -> Option { + if let Some(snapshot) = self.find_closest_incremental(target_slot) { + if current_backup_path.as_ref() != Some(&snapshot) { + log::debug!( + "Found new best snapshot for slot {}: {:?}", + target_slot, + snapshot + ); + + if let Err(e) = self.backup_incremental_snapshot(&snapshot).await { + log::error!("Failed to backup snapshot: {}", e); + return current_backup_path; + } + + current_backup_path = Some(snapshot); + + // After saving best snapshot, evict oldest one from same epoch + if let Err(e) = self.evict_same_epoch_incremental(target_slot) { + log::error!("Failed to evict old snapshots: {}", e); + } + } + } + + current_backup_path + } + + /// Runs the snapshot backup process to continually back up the latest incremental snapshot for the previous epoch and the current epoch + /// Keeps at most MAXIMUM_BACKUP_INCREMENTAL_SNAPSHOTS_PER_EPOCH snapshots per epoch in the backup + /// Purges old incremental snapshots in the backup after 2 epochs pub async fn run(&self) -> Result<()> { let mut interval = time::interval(Duration::from_secs(10)); - let mut last_target_slot = None; - let mut last_backup_path = None; + let mut current_target_slot = None; + let mut last_epoch_backup_path = None; + let mut this_epoch_backup_path = None; loop { interval.tick().await; - let target_slot = self.get_target_slot()?; + let (last_epoch_target_slot, this_epoch_target_slot) = self.get_target_slots()?; - // Only search for new snapshot if target slot has changed - if last_target_slot != Some(target_slot) { - log::info!("New target slot: {}", target_slot); - } - - if let Some(snapshot) = self.find_closest_incremental(target_slot) { - if last_backup_path.as_ref() != Some(&snapshot) { - log::debug!( - "Found new best snapshot for slot {}: {:?}", - target_slot, - snapshot - ); - - if let Err(e) = self.backup_incremental_snapshot(&snapshot).await { - log::error!("Failed to backup snapshot: {}", e); - continue; - } - - last_backup_path = Some(snapshot); - - // After saving best snapshot, evict oldest one from same epoch - if let Err(e) = self.evict_same_epoch_incremental(target_slot) { - log::error!("Failed to evict old snapshots: {}", e); - } + // Detect new epoch + if current_target_slot != Some(this_epoch_target_slot) { + log::info!("New target slot: {}", this_epoch_target_slot); + last_epoch_backup_path = this_epoch_backup_path; + this_epoch_backup_path = None; + let current_epoch = this_epoch_target_slot / DEFAULT_SLOTS_PER_EPOCH; + if let Err(e) = self.evict_all_epoch_snapshots(current_epoch - 2) { + log::error!("Failed to evict old snapshots: {}", e); } } - last_target_slot = Some(target_slot); + // Backup latest snapshot for last epoch and this epoch + last_epoch_backup_path = self + .backup_latest_for_target_slot(last_epoch_backup_path, last_epoch_target_slot) + .await; + this_epoch_backup_path = self + .backup_latest_for_target_slot(this_epoch_backup_path, this_epoch_target_slot) + .await; + + current_target_slot = Some(this_epoch_target_slot); } } } diff --git a/tip-router-operator-cli/src/ledger_utils.rs b/tip-router-operator-cli/src/ledger_utils.rs index 8341dafe..9c8586c7 100644 --- a/tip-router-operator-cli/src/ledger_utils.rs +++ b/tip-router-operator-cli/src/ledger_utils.rs @@ -60,7 +60,7 @@ pub fn get_bank_from_ledger( ("status", "error", String), ("state", "load_genesis", String), ("step", 1, i64), - ("error", e.to_string(), String), + ("error", format!("{:?}", e), String), ); panic!("Failed to load genesis config: {}", e); // TODO should panic here? } @@ -195,7 +195,7 @@ pub fn get_bank_from_ledger( ("state", "load_bank_forks", String), ("status", "error", String), ("step", 4, i64), - ("error", e.to_string(), String), + ("error", format!("{:?}", e), String), ("duration_ms", start_time.elapsed().as_millis() as i64, i64), ); panic!("Failed to load bank forks: {}", e); @@ -230,7 +230,7 @@ pub fn get_bank_from_ledger( ("status", "error", String), ("state", "process_blockstore_from_root", String), ("step", 5, i64), - ("error", e.to_string(), String), + ("error", format!("{:?}", e), String), ("duration_ms", start_time.elapsed().as_millis() as i64, i64), ); panic!("Failed to process blockstore from root: {}", e); @@ -268,7 +268,7 @@ pub fn get_bank_from_ledger( ("status", "error", String), ("state", "bank_to_full_snapshot_archive", String), ("step", 6, i64), - ("error", e.to_string(), String), + ("error", format!("{:?}", e), String), ("duration_ms", start_time.elapsed().as_millis() as i64, i64), ); panic!("Failed to create snapshot: {}", e); diff --git a/tip-router-operator-cli/src/lib.rs b/tip-router-operator-cli/src/lib.rs index bd98f2be..03a7f53c 100644 --- a/tip-router-operator-cli/src/lib.rs +++ b/tip-router-operator-cli/src/lib.rs @@ -27,9 +27,9 @@ use solana_sdk::{account::AccountSharedData, pubkey::Pubkey, slot_history::Slot} #[derive(Debug)] pub enum MerkleRootError { - StakeMetaGeneratorError(&'static str), - MerkleRootGeneratorError(&'static str), - MerkleTreeError(&'static str), + StakeMetaGeneratorError(String), + MerkleRootGeneratorError(String), + MerkleTreeError(String), } // TODO where did these come from? @@ -111,7 +111,9 @@ pub fn get_meta_merkle_root( tip_payment_program_id, snapshots_enabled, ) - .map_err(|_| MerkleRootError::StakeMetaGeneratorError("Failed to generate stake meta"))?; + .map_err(|e| { + MerkleRootError::StakeMetaGeneratorError(format!("Failed to generate stake meta: {:?}", e)) + })?; info!( "Created StakeMetaCollection:\n - epoch: {:?}\n - slot: {:?}\n - num stake metas: {:?}\n - bank_hash: {:?}", @@ -138,7 +140,9 @@ pub fn get_meta_merkle_root( protocol_fee_bps, ) .map_err(|_| { - MerkleRootError::MerkleRootGeneratorError("Failed to generate merkle tree collection") + MerkleRootError::MerkleRootGeneratorError( + "Failed to generate merkle tree collection".to_string(), + ) })?; info!( @@ -163,8 +167,7 @@ pub fn get_meta_merkle_root( merkle_tree_coll, ) .map_err(|e| { - info!("Meta merkle tree creation error: {:?}", e); - MerkleRootError::MerkleTreeError("Failed to create meta merkle tree") + MerkleRootError::MerkleTreeError(format!("Failed to create meta merkle tree: {:?}", e)) })?; info!( diff --git a/tip-router-operator-cli/src/main.rs b/tip-router-operator-cli/src/main.rs index 1c1b9489..19bba7a3 100644 --- a/tip-router-operator-cli/src/main.rs +++ b/tip-router-operator-cli/src/main.rs @@ -126,6 +126,9 @@ async fn main() -> Result<()> { wait_for_next_epoch(&rpc_client).await?; } + // Track runs that are starting right at the beginning of a new epoch + let mut new_epoch_rollover = start_next_epoch; + loop { // Get the last slot of the previous epoch let (previous_epoch, previous_epoch_slot) = @@ -148,6 +151,7 @@ async fn main() -> Result<()> { &tip_router_program_id, &ncn_address, enable_snapshots, + new_epoch_rollover, &cli, ) .await @@ -163,6 +167,8 @@ async fn main() -> Result<()> { error!("Error waiting for next epoch: {}", e); sleep(Duration::from_secs(60)).await; } + + new_epoch_rollover = true; } } Commands::SnapshotSlot { @@ -185,6 +191,7 @@ async fn main() -> Result<()> { &tip_router_program_id, &ncn_address, enable_snapshots, + false, &cli, ) .await diff --git a/tip-router-operator-cli/src/process_epoch.rs b/tip-router-operator-cli/src/process_epoch.rs index 28e5441a..dd3e1d5d 100644 --- a/tip-router-operator-cli/src/process_epoch.rs +++ b/tip-router-operator-cli/src/process_epoch.rs @@ -1,4 +1,5 @@ use std::{ + path::PathBuf, str::FromStr, time::{Duration, Instant}, }; @@ -9,8 +10,14 @@ use log::info; use solana_metrics::{datapoint_error, datapoint_info}; use solana_rpc_client::rpc_client::RpcClient; use solana_sdk::pubkey::Pubkey; +use tokio::time; -use crate::{get_meta_merkle_root, tip_router::get_ncn_config, Cli}; +use crate::{ + backup_snapshots::SnapshotInfo, get_meta_merkle_root, tip_router::get_ncn_config, Cli, +}; + +const MAX_WAIT_FOR_INCREMENTAL_SNAPSHOT_TICKS: u64 = 1200; // Experimentally determined +const OPTIMAL_INCREMENTAL_SNAPSHOT_SLOT_RANGE: u64 = 800; // Experimentally determined pub async fn wait_for_next_epoch(rpc_client: &RpcClient) -> Result<()> { let current_epoch = rpc_client.get_epoch_info()?.epoch; @@ -45,6 +52,35 @@ pub fn get_previous_epoch_last_slot(rpc_client: &RpcClient) -> Result<(u64, u64) Ok((previous_epoch, previous_epoch_final_slot)) } +/// Wait for the optimal incremental snapshot to be available to speed up full snapshot generation +/// Automatically returns after MAX_WAIT_FOR_INCREMENTAL_SNAPSHOT_TICKS seconds +pub async fn wait_for_optimal_incremental_snapshot( + incremental_snapshots_dir: PathBuf, + target_slot: u64, +) -> Result<()> { + let mut interval = time::interval(Duration::from_secs(1)); + let mut ticks = 0; + + while ticks < MAX_WAIT_FOR_INCREMENTAL_SNAPSHOT_TICKS { + let dir_entries = std::fs::read_dir(&incremental_snapshots_dir)?; + + for entry in dir_entries { + if let Some(snapshot_info) = SnapshotInfo::from_path(entry?.path()) { + if target_slot - OPTIMAL_INCREMENTAL_SNAPSHOT_SLOT_RANGE < snapshot_info.end_slot + && snapshot_info.end_slot <= target_slot + { + return Ok(()); + } + } + } + + interval.tick().await; + ticks += 1; + } + + Ok(()) +} + #[allow(clippy::too_many_arguments)] pub async fn process_epoch( client: &EllipsisClient, @@ -55,6 +91,7 @@ pub async fn process_epoch( tip_router_program_id: &Pubkey, ncn_address: &Pubkey, snapshots_enabled: bool, + new_epoch_rollover: bool, cli_args: &Cli, ) -> Result<()> { info!("Processing epoch {:?}", target_epoch); @@ -77,6 +114,12 @@ pub async fn process_epoch( let account_paths = account_paths.map_or_else(|| vec![ledger_path.clone()], |paths| paths); let full_snapshots_path = full_snapshots_path.map_or(ledger_path, |path| path); + // Wait for optimal incremental snapshot to be available since they can be delayed in a new epoch + if new_epoch_rollover { + wait_for_optimal_incremental_snapshot(incremental_snapshots_path.clone(), target_slot) + .await?; + } + // Generate merkle root from ledger let meta_merkle_tree = match get_meta_merkle_root( cli_args.ledger_path.as_path(), diff --git a/tip-router-operator-cli/src/stake_meta_generator.rs b/tip-router-operator-cli/src/stake_meta_generator.rs index d977e0c7..8391513f 100644 --- a/tip-router-operator-cli/src/stake_meta_generator.rs +++ b/tip-router-operator-cli/src/stake_meta_generator.rs @@ -63,7 +63,7 @@ pub enum StakeMetaGeneratorError { GenesisConfigError(#[from] OpenGenesisConfigError), - PanicError, + PanicError(String), } impl Display for StakeMetaGeneratorError { @@ -102,8 +102,18 @@ pub fn generate_stake_meta( let bank = match res { Ok(bank) => bank, Err(e) => { - error!("Panicked while creating bank from ledger: {:?}", e); - let error_str = format!("{:?}", e); + let error_str = if let Some(s) = e.downcast_ref::() { + s.to_string() + } else if let Some(s) = e.downcast_ref::<&'static str>() { + s.to_string() + } else { + // If we can't get a string, try to get any Debug implementation + match e.downcast_ref::>() { + Some(debug_val) => format!("{:?}", debug_val), + None => "Unknown panic payload".to_string(), + } + }; + error!("Panicked while creating bank from ledger: {}", error_str); datapoint_error!( "tip_router_cli.get_bank", ("operator", operator_address.to_string(), String), @@ -111,7 +121,7 @@ pub fn generate_stake_meta( ("state", "get_bank_from_ledger", String), ("error", error_str, String), ); - return Err(StakeMetaGeneratorError::PanicError); + return Err(StakeMetaGeneratorError::PanicError(error_str)); } }; From 8eda3aa80822a71d6a4255df5c506952bd39d708 Mon Sep 17 00:00:00 2001 From: Evan Batsell Date: Fri, 24 Jan 2025 14:37:59 -0500 Subject: [PATCH 2/6] Include telegraf stats --- telegraf/telegraf.conf | 94 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/telegraf/telegraf.conf b/telegraf/telegraf.conf index 3e6f8ce7..36577de6 100644 --- a/telegraf/telegraf.conf +++ b/telegraf/telegraf.conf @@ -218,3 +218,97 @@ # ## Fixed time-window for the available payload size e.g. "5m" # # rate_limit_period = "0s" + +############################################################################### +# INPUT PLUGINS # +############################################################################### + + +# Read metrics about cpu usage +[[inputs.cpu]] + ## Whether to report per-cpu stats or not + percpu = true + ## Whether to report total system cpu stats or not + totalcpu = true + ## If true, collect raw CPU time metrics + collect_cpu_time = false + ## If true, compute and report the sum of all non-idle CPU states + ## NOTE: The resulting 'time_active' field INCLUDES 'iowait'! + report_active = false + ## If true and the info is available then add core_id and physical_id tags + core_tags = false + + +# Read metrics about disk usage by mount point +[[inputs.disk]] + ## By default stats will be gathered for all mount points. + ## Set mount_points will restrict the stats to only the specified mount points. + # mount_points = ["/"] + + ## Ignore mount points by filesystem type. + ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"] + + ## Ignore mount points by mount options. + ## The 'mount' command reports options of all mounts in parathesis. + ## Bind mounts can be ignored with the special 'bind' option. + # ignore_mount_opts = [] + + +# Read metrics about disk IO by device +[[inputs.diskio]] + ## Devices to collect stats for + ## Wildcards are supported except for disk synonyms like '/dev/disk/by-id'. + ## ex. devices = ["sda", "sdb", "vd*", "/dev/disk/by-id/nvme-eui.00123deadc0de123"] + # devices = ["*"] + + ## Skip gathering of the disk's serial numbers. + # skip_serial_number = true + + ## Device metadata tags to add on systems supporting it (Linux only) + ## Use 'udevadm info -q property -n ' to get a list of properties. + ## Note: Most, but not all, udev properties can be accessed this way. Properties + ## that are currently inaccessible include DEVTYPE, DEVNAME, and DEVPATH. + # device_tags = ["ID_FS_TYPE", "ID_FS_USAGE"] + + ## Using the same metadata source as device_tags, you can also customize the + ## name of the device via templates. + ## The 'name_templates' parameter is a list of templates to try and apply to + ## the device. The template may contain variables in the form of '$PROPERTY' or + ## '${PROPERTY}'. The first template which does not contain any variables not + ## present for the device is used as the device name tag. + ## The typical use case is for LVM volumes, to get the VG/LV name instead of + ## the near-meaningless DM-0 name. + # name_templates = ["$ID_FS_LABEL","$DM_VG_NAME/$DM_LV_NAME"] + + +# Plugin to collect various Linux kernel statistics. +# This plugin ONLY supports Linux +[[inputs.kernel]] + ## Additional gather options + ## Possible options include: + ## * ksm - kernel same-page merging + ## * psi - pressure stall information + # collect = [] + + +# Read metrics about memory usage +[[inputs.mem]] + # no configuration + + +# Get the number of processes and group them by status +# This plugin ONLY supports non-Windows +[[inputs.processes]] + ## Use sudo to run ps command on *BSD systems. Linux systems will read + ## /proc, so this does not apply there. + # use_sudo = false + + +# Read metrics about swap memory usage +[[inputs.swap]] + # no configuration + + +# Read metrics about system load & uptime +[[inputs.system]] + # no configuration From 7976774c56b13216208dfee20b60f88086002139 Mon Sep 17 00:00:00 2001 From: Evan Batsell Date: Fri, 24 Jan 2025 16:53:30 -0500 Subject: [PATCH 3/6] Reduce iteration of submit to ncn --- tip-router-operator-cli/src/main.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tip-router-operator-cli/src/main.rs b/tip-router-operator-cli/src/main.rs index 19bba7a3..05ef079e 100644 --- a/tip-router-operator-cli/src/main.rs +++ b/tip-router-operator-cli/src/main.rs @@ -101,7 +101,7 @@ async fn main() -> Result<()> { { error!("Error submitting to NCN: {}", e); } - sleep(Duration::from_secs(60)).await; + sleep(Duration::from_secs(600)).await; } }); From 85d1d5b1292c7aedb72781c61d005a774ffc11af Mon Sep 17 00:00:00 2001 From: Evan Batsell Date: Fri, 24 Jan 2025 17:00:07 -0500 Subject: [PATCH 4/6] debug --- tip-router-operator-cli/src/backup_snapshots.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tip-router-operator-cli/src/backup_snapshots.rs b/tip-router-operator-cli/src/backup_snapshots.rs index b7350c79..ea0827a0 100644 --- a/tip-router-operator-cli/src/backup_snapshots.rs +++ b/tip-router-operator-cli/src/backup_snapshots.rs @@ -144,7 +144,7 @@ impl BackupSnapshotMonitor { ); } - log::info!( + log::debug!( "Successfully backed up incremental snapshot ({} bytes)", source_size ); From fe39a974edfd89e8d553256341818578b182376d Mon Sep 17 00:00:00 2001 From: Evan Batsell Date: Mon, 27 Jan 2025 15:51:43 -0500 Subject: [PATCH 5/6] copy over ledger utils fn --- Cargo.lock | 1764 ++++++++++++----- Cargo.toml | 20 + tip-router-operator-cli/Cargo.toml | 12 + tip-router-operator-cli/src/arg_matches.rs | 597 ++++++ tip-router-operator-cli/src/cli.rs | 6 +- tip-router-operator-cli/src/ledger_utils.rs | 20 + tip-router-operator-cli/src/lib.rs | 110 + .../src/load_and_process_ledger.rs | 586 ++++++ tip-router-operator-cli/src/main.rs | 20 +- 9 files changed, 2650 insertions(+), 485 deletions(-) create mode 100644 tip-router-operator-cli/src/arg_matches.rs create mode 100644 tip-router-operator-cli/src/load_and_process_ledger.rs diff --git a/Cargo.lock b/Cargo.lock index 2667e172..3306828f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -42,7 +42,7 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cipher", "cpufeatures", "opaque-debug", @@ -80,7 +80,7 @@ version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "getrandom 0.2.15", "once_cell", "version_check", @@ -124,8 +124,8 @@ source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0 dependencies = [ "anchor-syn 0.24.2", "anyhow", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "regex", "syn 1.0.109", ] @@ -137,8 +137,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47fe28365b33e8334dd70ae2f34a43892363012fe239cf37d2ee91693575b1f8" dependencies = [ "anchor-syn 0.30.1", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -150,8 +150,8 @@ dependencies = [ "anchor-syn 0.24.2", "anyhow", "bs58 0.4.0", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "rustversion", "syn 1.0.109", ] @@ -164,8 +164,8 @@ checksum = "3c288d496168268d198d9b53ee9f4f9d260a55ba4df9877ea1d4486ad6109e0f" dependencies = [ "anchor-syn 0.30.1", "bs58 0.5.1", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -175,7 +175,7 @@ version = "0.24.2" source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" dependencies = [ "anchor-syn 0.24.2", - "proc-macro2", + "proc-macro2 1.0.92", "syn 1.0.109", ] @@ -186,7 +186,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49b77b6948d0eeaaa129ce79eea5bbbb9937375a9241d909ca8fb9e006bb6e90" dependencies = [ "anchor-syn 0.30.1", - "quote", + "quote 1.0.38", "syn 1.0.109", ] @@ -196,8 +196,8 @@ version = "0.24.2" source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" dependencies = [ "anchor-syn 0.24.2", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -208,7 +208,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d20bb569c5a557c86101b944721d865e1fd0a4c67c381d31a44a84f07f84828" dependencies = [ "anchor-syn 0.30.1", - "quote", + "quote 1.0.38", "syn 1.0.109", ] @@ -219,8 +219,8 @@ source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0 dependencies = [ "anchor-syn 0.24.2", "anyhow", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -231,8 +231,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cebd8d0671a3a9dc3160c48598d652c34c77de6be4d44345b8b514323284d57" dependencies = [ "anchor-syn 0.30.1", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -244,8 +244,8 @@ dependencies = [ "anchor-syn 0.24.2", "anyhow", "heck 0.3.3", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -256,8 +256,8 @@ source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0 dependencies = [ "anchor-syn 0.24.2", "anyhow", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -272,8 +272,8 @@ dependencies = [ "anyhow", "bs58 0.5.1", "heck 0.3.3", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "serde_json", "syn 1.0.109", ] @@ -285,8 +285,8 @@ source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0 dependencies = [ "anchor-syn 0.24.2", "anyhow", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -297,8 +297,8 @@ source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0 dependencies = [ "anchor-syn 0.24.2", "anyhow", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -309,7 +309,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04368b5abef4266250ca8d1d12f4dff860242681e4ec22b885dcfe354fd35aa1" dependencies = [ "anchor-syn 0.30.1", - "quote", + "quote 1.0.38", "syn 1.0.109", ] @@ -321,8 +321,8 @@ checksum = "e0bb0e0911ad4a70cab880cdd6287fe1e880a1a9d8e4e6defa8e9044b9796a6c" dependencies = [ "anchor-syn 0.30.1", "borsh-derive-internal 0.10.4", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -332,8 +332,8 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ef415ff156dc82e9ecb943189b0cb241b3a6bfc26a180234dc21bd3ef3ce0cb" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -357,7 +357,7 @@ dependencies = [ "borsh 0.10.4", "bytemuck", "solana-program", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -383,7 +383,7 @@ dependencies = [ "bytemuck", "getrandom 0.2.15", "solana-program", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -419,14 +419,14 @@ dependencies = [ "anyhow", "bs58 0.3.1", "heck 0.3.3", - "proc-macro2", + "proc-macro2 1.0.92", "proc-macro2-diagnostics", - "quote", + "quote 1.0.38", "serde", "serde_json", "sha2 0.9.9", "syn 1.0.109", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -439,13 +439,13 @@ dependencies = [ "bs58 0.5.1", "cargo_toml 0.19.2", "heck 0.3.3", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "serde", "serde_json", "sha2 0.10.8", "syn 1.0.109", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -536,8 +536,8 @@ dependencies = [ "include_dir", "itertools 0.10.5", "proc-macro-error", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -601,7 +601,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" dependencies = [ - "quote", + "quote 1.0.38", "syn 1.0.109", ] @@ -613,8 +613,8 @@ checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ "num-bigint 0.4.6", "num-traits", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -649,8 +649,8 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -694,7 +694,7 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror", + "thiserror 1.0.69", "time", ] @@ -704,8 +704,8 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", "synstructure 0.12.6", ] @@ -716,8 +716,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -778,8 +778,8 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -789,8 +789,8 @@ version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -838,7 +838,7 @@ dependencies = [ "matchit", "memchr", "mime", - "percent-encoding", + "percent-encoding 2.3.1", "pin-project-lite", "rustversion", "serde", @@ -886,7 +886,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cfg-if", + "cfg-if 1.0.0", "libc", "miniz_oxide", "object", @@ -946,8 +946,8 @@ dependencies = [ "lazycell", "peeking_take_while", "prettyplease 0.2.25", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "regex", "rustc-hash", "shlex", @@ -999,7 +999,7 @@ dependencies = [ "arrayref", "arrayvec", "cc", - "cfg-if", + "cfg-if 1.0.0", "constant_time_eq", "digest 0.10.7", ] @@ -1046,7 +1046,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" dependencies = [ "borsh-derive 0.10.4", - "hashbrown 0.12.3", + "hashbrown 0.13.2", ] [[package]] @@ -1068,7 +1068,7 @@ dependencies = [ "borsh-derive-internal 0.9.3", "borsh-schema-derive-internal 0.9.3", "proc-macro-crate 0.1.5", - "proc-macro2", + "proc-macro2 1.0.92", "syn 1.0.109", ] @@ -1081,7 +1081,7 @@ dependencies = [ "borsh-derive-internal 0.10.4", "borsh-schema-derive-internal 0.10.4", "proc-macro-crate 0.1.5", - "proc-macro2", + "proc-macro2 1.0.92", "syn 1.0.109", ] @@ -1093,8 +1093,8 @@ checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" dependencies = [ "once_cell", "proc-macro-crate 3.2.0", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -1104,8 +1104,8 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -1115,8 +1115,8 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -1126,8 +1126,8 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -1137,8 +1137,8 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -1184,6 +1184,16 @@ dependencies = [ "tinyvec", ] +[[package]] +name = "bstr" +version = "1.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "bumpalo" version = "3.16.0" @@ -1217,8 +1227,8 @@ version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -1237,8 +1247,8 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -1282,7 +1292,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" dependencies = [ "libc", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1325,6 +1335,12 @@ dependencies = [ "nom", ] +[[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" @@ -1378,7 +1394,7 @@ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading", + "libloading 0.8.6", ] [[package]] @@ -1450,8 +1466,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck 0.5.0", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -1517,7 +1533,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "wasm-bindgen", ] @@ -1552,6 +1568,12 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + [[package]] name = "core-foundation" version = "0.9.4" @@ -1595,7 +1617,7 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -1699,8 +1721,8 @@ checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "strsim 0.11.1", "syn 2.0.93", ] @@ -1712,7 +1734,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", - "quote", + "quote 1.0.38", "syn 2.0.93", ] @@ -1722,7 +1744,7 @@ version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "hashbrown 0.14.5", "lock_api", "once_cell", @@ -1736,6 +1758,17 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +[[package]] +name = "default-env" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f753eb82d29277e79efc625e84aecacfd4851ee50e05a8573a4740239a77bfd3" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "syn 0.15.44", +] + [[package]] name = "der" version = "0.5.1" @@ -1781,11 +1814,24 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] +[[package]] +name = "derive_more" +version = "0.99.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" +dependencies = [ + "convert_case", + "proc-macro2 1.0.92", + "quote 1.0.38", + "rustc_version", + "syn 2.0.93", +] + [[package]] name = "dialoguer" version = "0.10.4" @@ -1842,6 +1888,16 @@ dependencies = [ "dirs-sys", ] +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if 1.0.0", + "dirs-sys-next", +] + [[package]] name = "dirs-sys" version = "0.3.7" @@ -1853,14 +1909,25 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi 0.3.9", +] + [[package]] name = "displaydoc" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -1882,8 +1949,8 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -1947,8 +2014,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" dependencies = [ "enum-ordinalize", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -1975,7 +2042,7 @@ dependencies = [ "solana-program-test 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", "solana-transaction-status", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -1991,7 +2058,7 @@ version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -2009,8 +2076,8 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -2022,8 +2089,8 @@ checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" dependencies = [ "num-bigint 0.4.6", "num-traits", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -2085,7 +2152,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", +] + +[[package]] +name = "etcd-client" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4b0ea5ef6dc2388a4b1669fa32097249bc03a15417b97cb75e38afb309e4a89" +dependencies = [ + "http", + "prost", + "tokio", + "tokio-stream", + "tonic", + "tonic-build", + "tower", + "tower-service", ] [[package]] @@ -2121,7 +2204,7 @@ version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "libredox", "windows-sys 0.59.0", @@ -2179,7 +2262,7 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ - "percent-encoding", + "percent-encoding 2.3.1", ] [[package]] @@ -2200,6 +2283,12 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +[[package]] +name = "futures" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" + [[package]] name = "futures" version = "0.3.31" @@ -2240,6 +2329,7 @@ dependencies = [ "futures-core", "futures-task", "futures-util", + "num_cpus", ] [[package]] @@ -2254,8 +2344,8 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -2277,6 +2367,7 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ + "futures 0.1.31", "futures-channel", "futures-core", "futures-io", @@ -2316,7 +2407,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "js-sys", "libc", "wasi 0.9.0+wasi-snapshot-preview1", @@ -2329,7 +2420,7 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", @@ -2348,6 +2439,19 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" +[[package]] +name = "globset" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata", + "regex-syntax", +] + [[package]] name = "goauth" version = "0.13.1" @@ -2355,7 +2459,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8af59a261bcf42f45d1b261232847b9b850ba0a1419d6100698246fb66e9240" dependencies = [ "arc-swap", - "futures", + "futures 0.3.31", "log", "reqwest", "serde", @@ -2636,7 +2740,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca815a891b24fdfb243fa3239c86154392b0953ee584aa1a2a1f66d20cbe75cc" dependencies = [ "bytes", - "futures", + "futures 0.3.31", "headers", "http", "hyper", @@ -2822,8 +2926,8 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -2833,6 +2937,17 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +[[package]] +name = "idna" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "idna" version = "1.0.3" @@ -2891,8 +3006,8 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", ] [[package]] @@ -2943,7 +3058,7 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", ] [[package]] @@ -2998,8 +3113,8 @@ name = "jito-account-traits-derive" version = "0.0.3" source = "git+https://github.com/jito-foundation/restaking.git?rev=eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d#eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -3027,7 +3142,32 @@ dependencies = [ "spl-associated-token-account", "spl-token 4.0.0", "spl-token-2022 3.0.5", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "jito-programs-vote-state" +version = "0.1.5" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" +dependencies = [ + "anchor-lang 0.24.2", + "bincode", + "serde", + "serde_derive", + "solana-program", +] + +[[package]] +name = "jito-protos" +version = "1.18.26" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" +dependencies = [ + "bytes", + "prost", + "prost-types", + "protobuf-src", + "tonic", + "tonic-build", ] [[package]] @@ -3044,7 +3184,7 @@ dependencies = [ "serde_with 3.12.0", "solana-program", "solana-sdk", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3061,7 +3201,7 @@ dependencies = [ "solana-program", "spl-associated-token-account", "spl-token 4.0.0", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3070,7 +3210,7 @@ version = "0.0.3" source = "git+https://github.com/jito-foundation/restaking.git?rev=eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d#eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d" dependencies = [ "borsh 0.10.4", - "cfg-if", + "cfg-if 1.0.0", "const_str_to_pubkey", "jito-bytemuck", "jito-jsm-core", @@ -3083,7 +3223,7 @@ dependencies = [ "spl-associated-token-account", "spl-token 4.0.0", "spl-token-2022 3.0.5", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3094,7 +3234,19 @@ dependencies = [ "borsh 0.10.4", "shank", "solana-program", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "jito-tip-distribution" +version = "0.1.5" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" +dependencies = [ + "anchor-lang 0.24.2", + "default-env", + "jito-programs-vote-state", + "solana-program", + "solana-security-txt", ] [[package]] @@ -3104,6 +3256,16 @@ dependencies = [ "anchor-lang 0.30.1", ] +[[package]] +name = "jito-tip-payment" +version = "0.1.5" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" +dependencies = [ + "anchor-lang 0.24.2", + "default-env", + "solana-security-txt", +] + [[package]] name = "jito-tip-payment-sdk" version = "0.0.1" @@ -3124,7 +3286,7 @@ dependencies = [ "clap-markdown", "dotenv", "env_logger 0.10.2", - "futures", + "futures 0.3.31", "jito-bytemuck", "jito-jsm-core", "jito-restaking-client", @@ -3150,7 +3312,7 @@ dependencies = [ "spl-associated-token-account", "spl-stake-pool", "spl-token 4.0.0", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -3168,7 +3330,7 @@ dependencies = [ "serde_with 3.12.0", "solana-program", "solana-sdk", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3192,7 +3354,7 @@ dependencies = [ "spl-associated-token-account", "spl-math", "spl-token 4.0.0", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3224,7 +3386,7 @@ dependencies = [ "spl-associated-token-account", "spl-stake-pool", "spl-token 4.0.0", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -3235,7 +3397,7 @@ dependencies = [ "assert_matches", "borsh 0.10.4", "bytemuck", - "cfg-if", + "cfg-if 1.0.0", "const_str_to_pubkey", "jito-bytemuck", "jito-jsm-core", @@ -3254,7 +3416,7 @@ dependencies = [ "spl-stake-pool", "spl-token 4.0.0", "switchboard-on-demand", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3284,7 +3446,7 @@ dependencies = [ "serde_with 3.12.0", "solana-program", "solana-sdk", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3302,7 +3464,7 @@ dependencies = [ "spl-associated-token-account", "spl-token 4.0.0", "spl-token-2022 3.0.5", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3311,7 +3473,7 @@ version = "0.0.3" source = "git+https://github.com/jito-foundation/restaking.git?rev=eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d#eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d" dependencies = [ "borsh 0.10.4", - "cfg-if", + "cfg-if 1.0.0", "const_str_to_pubkey", "jito-bytemuck", "jito-jsm-core", @@ -3324,7 +3486,7 @@ dependencies = [ "spl-associated-token-account", "spl-token 4.0.0", "spl-token-2022 3.0.5", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3336,7 +3498,7 @@ dependencies = [ "shank", "solana-program", "spl-token 4.0.0", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3358,13 +3520,43 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "json5" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +dependencies = [ + "pest", + "pest_derive", + "serde", +] + +[[package]] +name = "jsonrpc-client-transports" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2b99d4207e2a04fb4581746903c2bb7eb376f88de9c699d0f3e10feeac0cd3a" +dependencies = [ + "derive_more", + "futures 0.3.31", + "jsonrpc-core", + "jsonrpc-pubsub", + "jsonrpc-server-utils", + "log", + "parity-tokio-ipc", + "serde", + "serde_json", + "tokio", + "url 1.7.2", +] + [[package]] name = "jsonrpc-core" version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ - "futures", + "futures 0.3.31", "futures-executor", "futures-util", "log", @@ -3373,6 +3565,92 @@ dependencies = [ "serde_json", ] +[[package]] +name = "jsonrpc-core-client" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b51da17abecbdab3e3d4f26b01c5ec075e88d3abe3ab3b05dc9aa69392764ec0" +dependencies = [ + "futures 0.3.31", + "jsonrpc-client-transports", +] + +[[package]] +name = "jsonrpc-derive" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b939a78fa820cdfcb7ee7484466746a7377760970f6f9c6fe19f9edcc8a38d2" +dependencies = [ + "proc-macro-crate 0.1.5", + "proc-macro2 1.0.92", + "quote 1.0.38", + "syn 1.0.109", +] + +[[package]] +name = "jsonrpc-http-server" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" +dependencies = [ + "futures 0.3.31", + "hyper", + "jsonrpc-core", + "jsonrpc-server-utils", + "log", + "net2", + "parking_lot 0.11.2", + "unicase", +] + +[[package]] +name = "jsonrpc-ipc-server" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "382bb0206323ca7cda3dcd7e245cea86d37d02457a02a975e3378fb149a48845" +dependencies = [ + "futures 0.3.31", + "jsonrpc-core", + "jsonrpc-server-utils", + "log", + "parity-tokio-ipc", + "parking_lot 0.11.2", + "tower-service", +] + +[[package]] +name = "jsonrpc-pubsub" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240f87695e6c6f62fb37f05c02c04953cf68d6408b8c1c89de85c7a0125b1011" +dependencies = [ + "futures 0.3.31", + "jsonrpc-core", + "lazy_static", + "log", + "parking_lot 0.11.2", + "rand 0.7.3", + "serde", +] + +[[package]] +name = "jsonrpc-server-utils" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4fdea130485b572c39a460d50888beb00afb3e35de23ccd7fad8ff19f0e0d4" +dependencies = [ + "bytes", + "futures 0.3.31", + "globset", + "jsonrpc-core", + "lazy_static", + "log", + "tokio", + "tokio-stream", + "tokio-util 0.6.10", + "unicase", +] + [[package]] name = "keccak" version = "0.1.5" @@ -3410,14 +3688,24 @@ version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if 1.0.0", + "winapi 0.3.9", +] + [[package]] name = "libloading" version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ - "cfg-if", - "windows-targets 0.48.5", + "cfg-if 1.0.0", + "windows-targets 0.52.6", ] [[package]] @@ -3568,7 +3856,7 @@ dependencies = [ "ark-bn254", "ark-ff", "num-bigint 0.4.6", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3630,6 +3918,12 @@ dependencies = [ "libc", ] +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + [[package]] name = "matchit" version = "0.7.3" @@ -3708,7 +4002,7 @@ dependencies = [ "spl-associated-token-account", "spl-math", "spl-token 4.0.0", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -3717,6 +4011,12 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" +[[package]] +name = "min-max-heap" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2687e6cf9c00f48e9284cf9fd15f2ef341d03cc7743abf9df4c5f07fdee50b18" + [[package]] name = "minimal-lexical" version = "0.2.1" @@ -3749,7 +4049,7 @@ version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "downcast", "fragile", "lazy_static", @@ -3764,9 +4064,9 @@ version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" dependencies = [ - "cfg-if", - "proc-macro2", - "quote", + "cfg-if 1.0.0", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -3786,8 +4086,8 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -3814,6 +4114,17 @@ dependencies = [ "tempfile", ] +[[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 0.3.9", +] + [[package]] name = "nix" version = "0.26.4" @@ -3821,7 +4132,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ "bitflags 1.3.2", - "cfg-if", + "cfg-if 1.0.0", "libc", "memoffset 0.7.1", "pin-utils", @@ -3923,8 +4234,8 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -3934,8 +4245,8 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -4035,8 +4346,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -4047,8 +4358,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -4058,9 +4369,9 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 1.3.1", - "proc-macro2", - "quote", + "proc-macro-crate 3.2.0", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -4107,7 +4418,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ "bitflags 2.6.0", - "cfg-if", + "cfg-if 1.0.0", "foreign-types", "libc", "once_cell", @@ -4121,8 +4432,8 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -4167,10 +4478,10 @@ dependencies = [ "futures-util", "js-sys", "lazy_static", - "percent-encoding", + "percent-encoding 2.3.1", "pin-project", "rand 0.8.5", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4197,11 +4508,25 @@ checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" dependencies = [ "Inflector", "proc-macro-error", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] +[[package]] +name = "parity-tokio-ipc" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6" +dependencies = [ + "futures 0.3.31", + "libc", + "log", + "rand 0.7.3", + "tokio", + "winapi 0.3.9", +] + [[package]] name = "parking_lot" version = "0.11.2" @@ -4229,7 +4554,7 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "instant", "libc", "redox_syscall 0.2.16", @@ -4243,7 +4568,7 @@ version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "libc", "redox_syscall 0.5.8", "smallvec", @@ -4289,6 +4614,12 @@ dependencies = [ "base64 0.13.1", ] +[[package]] +name = "percent-encoding" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" + [[package]] name = "percent-encoding" version = "2.3.1" @@ -4305,37 +4636,82 @@ dependencies = [ ] [[package]] -name = "petgraph" -version = "0.6.5" +name = "pest" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ - "fixedbitset", - "indexmap 2.7.0", + "memchr", + "thiserror 2.0.11", + "ucd-trie", ] [[package]] -name = "pin-project" -version = "1.1.7" +name = "pest_derive" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e" dependencies = [ - "pin-project-internal", + "pest", + "pest_generator", ] [[package]] -name = "pin-project-internal" -version = "1.1.7" +name = "pest_generator" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b" dependencies = [ - "proc-macro2", - "quote", + "pest", + "pest_meta", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] [[package]] -name = "pin-project-lite" +name = "pest_meta" +version = "2.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea" +dependencies = [ + "once_cell", + "pest", + "sha2 0.10.8", +] + +[[package]] +name = "petgraph" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" +dependencies = [ + "fixedbitset", + "indexmap 2.7.0", +] + +[[package]] +name = "pin-project" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" +dependencies = [ + "proc-macro2 1.0.92", + "quote 1.0.38", + "syn 2.0.93", +] + +[[package]] +name = "pin-project-lite" version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" @@ -4375,7 +4751,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cpufeatures", "opaque-debug", "universal-hash", @@ -4438,7 +4814,7 @@ version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" dependencies = [ - "proc-macro2", + "proc-macro2 1.0.92", "syn 1.0.109", ] @@ -4448,10 +4824,16 @@ version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ - "proc-macro2", + "proc-macro2 1.0.92", "syn 2.0.93", ] +[[package]] +name = "prio-graph" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6492a75ca57066a4479af45efa302bed448680182b0563f96300645d5f896097" + [[package]] name = "proc-macro-crate" version = "0.1.5" @@ -4487,8 +4869,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", "version_check", ] @@ -4499,11 +4881,20 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "version_check", ] +[[package]] +name = "proc-macro2" +version = "0.4.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +dependencies = [ + "unicode-xid 0.1.0", +] + [[package]] name = "proc-macro2" version = "1.0.92" @@ -4519,8 +4910,8 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", "version_check", "yansi", @@ -4566,8 +4957,8 @@ checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", "itertools 0.10.5", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -4604,8 +4995,8 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -4615,7 +5006,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" dependencies = [ - "percent-encoding", + "percent-encoding 2.3.1", ] [[package]] @@ -4624,8 +5015,8 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -4641,7 +5032,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -4659,7 +5050,7 @@ dependencies = [ "rustls", "rustls-native-certs", "slab", - "thiserror", + "thiserror 1.0.69", "tinyvec", "tracing", ] @@ -4677,13 +5068,22 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "quote" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +dependencies = [ + "proc-macro2 0.4.30", +] + [[package]] name = "quote" version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ - "proc-macro2", + "proc-macro2 1.0.92", ] [[package]] @@ -4830,7 +5230,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom 0.2.15", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4910,7 +5310,7 @@ dependencies = [ "mime", "native-tls", "once_cell", - "percent-encoding", + "percent-encoding 2.3.1", "pin-project-lite", "rustls", "rustls-pemfile", @@ -4924,7 +5324,7 @@ dependencies = [ "tokio-rustls", "tokio-util 0.7.13", "tower-service", - "url", + "url 2.5.4", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -4954,7 +5354,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", - "cfg-if", + "cfg-if 1.0.0", "getrandom 0.2.15", "libc", "spin 0.9.8", @@ -4986,8 +5386,8 @@ version = "0.7.45" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -5001,6 +5401,15 @@ dependencies = [ "librocksdb-sys", ] +[[package]] +name = "rolling-file" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8395b4f860856b740f20a296ea2cd4d823e81a2658cf05ef61be22916026a906" +dependencies = [ + "chrono", +] + [[package]] name = "rpassword" version = "7.3.1" @@ -5078,7 +5487,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5175,8 +5584,8 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -5267,8 +5676,8 @@ version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -5349,8 +5758,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" dependencies = [ "darling", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -5361,18 +5770,44 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" dependencies = [ "darling", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] +[[package]] +name = "serde_yaml" +version = "0.9.34+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +dependencies = [ + "indexmap 2.7.0", + "itoa", + "ryu", + "serde", + "unsafe-libyaml", +] + +[[package]] +name = "sha-1" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.9.0", + "opaque-debug", +] + [[package]] name = "sha1" version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cpufeatures", "digest 0.10.7", ] @@ -5384,7 +5819,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", - "cfg-if", + "cfg-if 1.0.0", "cpufeatures", "digest 0.9.0", "opaque-debug", @@ -5396,7 +5831,7 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "cpufeatures", "digest 0.10.7", ] @@ -5453,8 +5888,8 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9bf2645f8eebde043da69200195058e7b59806705104f908a31d05ca82844ce" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "shank_macro_impl", "shank_render", "syn 1.0.109", @@ -5467,8 +5902,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93d0593f48acb0a722906416b1f6b8926f6571eb9af16d566a7c65427f269f50" dependencies = [ "anyhow", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "serde", "syn 1.0.109", ] @@ -5479,8 +5914,8 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "121175ba61809189f888dc5822ebfd30fa0d91e1e1f61d25a4d40b0847b3075e" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "shank_macro_impl", ] @@ -5607,6 +6042,21 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "soketto" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" +dependencies = [ + "base64 0.13.1", + "bytes", + "futures 0.3.31", + "httparse", + "log", + "rand 0.8.5", + "sha-1", +] + [[package]] name = "solana-account-decoder" version = "1.18.26" @@ -5628,7 +6078,7 @@ dependencies = [ "spl-token-2022 1.0.0", "spl-token-group-interface 0.1.0", "spl-token-metadata-interface 0.2.0", - "thiserror", + "thiserror 1.0.69", "zstd", ] @@ -5652,7 +6102,7 @@ dependencies = [ "spl-token-2022 1.0.0", "spl-token-group-interface 0.1.0", "spl-token-metadata-interface 0.2.0", - "thiserror", + "thiserror 1.0.69", "zstd", ] @@ -5700,7 +6150,7 @@ dependencies = [ "solana-config-program 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-frozen-abi 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-frozen-abi-macro 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-measure", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-nohash-hasher", "solana-program-runtime 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -5714,7 +6164,7 @@ dependencies = [ "strum_macros", "tar", "tempfile", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -5760,7 +6210,7 @@ dependencies = [ "solana-config-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-frozen-abi 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-nohash-hasher", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", @@ -5774,7 +6224,7 @@ dependencies = [ "strum_macros", "tar", "tempfile", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -5795,7 +6245,7 @@ dependencies = [ "solana-program", "solana-program-runtime 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -5815,7 +6265,7 @@ dependencies = [ "solana-program", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -5825,12 +6275,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e58fa66e1e240097665e7f87b267aa8e976ea3fcbd86918c8fd218c875395ada" dependencies = [ "borsh 1.5.3", - "futures", + "futures 0.3.31", "solana-banks-interface 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-program", "solana-sdk", "tarpc", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-serde", ] @@ -5841,12 +6291,12 @@ version = "1.18.26" source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" dependencies = [ "borsh 1.5.3", - "futures", + "futures 0.3.31", "solana-banks-interface 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-program", "solana-sdk", "tarpc", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-serde", ] @@ -5880,7 +6330,7 @@ checksum = "8cbe287a0f859362de9b155fabd44e479eba26d5d80e07a7d021297b7b06ecba" dependencies = [ "bincode", "crossbeam-channel", - "futures", + "futures 0.3.31", "solana-accounts-db 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-banks-interface 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -5899,7 +6349,7 @@ source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0 dependencies = [ "bincode", "crossbeam-channel", - "futures", + "futures 0.3.31", "solana-accounts-db 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-banks-interface 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", @@ -5941,12 +6391,12 @@ dependencies = [ "libsecp256k1 0.6.0", "log", "scopeguard", - "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-measure", "solana-program-runtime 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", "solana-zk-token-sdk 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana_rbpf", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -5959,12 +6409,12 @@ dependencies = [ "libsecp256k1 0.6.0", "log", "scopeguard", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", "solana-zk-token-sdk 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana_rbpf", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -5980,7 +6430,7 @@ dependencies = [ "modular-bitfield", "num_enum 0.7.3", "rand 0.8.5", - "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-measure", "solana-sdk", "tempfile", ] @@ -5997,7 +6447,7 @@ dependencies = [ "modular-bitfield", "num_enum 0.7.3", "rand 0.8.5", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-sdk", "tempfile", ] @@ -6014,13 +6464,13 @@ dependencies = [ "solana-accounts-db 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-ledger", "solana-logger 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-poh", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", "solana-transaction-status", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -6034,10 +6484,10 @@ dependencies = [ "rpassword", "solana-remote-wallet 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", - "thiserror", + "thiserror 1.0.69", "tiny-bip39", "uriparse", - "url", + "url 2.5.4", ] [[package]] @@ -6050,10 +6500,25 @@ dependencies = [ "rpassword", "solana-remote-wallet 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "thiserror", + "thiserror 1.0.69", "tiny-bip39", "uriparse", - "url", + "url 2.5.4", +] + +[[package]] +name = "solana-cli-config" +version = "1.18.26" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" +dependencies = [ + "dirs-next", + "lazy_static", + "serde", + "serde_derive", + "serde_yaml", + "solana-clap-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-sdk", + "url 2.5.4", ] [[package]] @@ -6065,7 +6530,7 @@ dependencies = [ "async-trait", "bincode", "dashmap", - "futures", + "futures 0.3.31", "futures-util", "indexmap 2.7.0", "indicatif", @@ -6073,7 +6538,7 @@ dependencies = [ "quinn", "rayon", "solana-connection-cache 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-measure", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-pubsub-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-quic-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -6081,11 +6546,11 @@ dependencies = [ "solana-rpc-client-api", "solana-rpc-client-nonce-utils 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", - "solana-streamer 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-streamer", "solana-thin-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-tpu-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-udp-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -6097,7 +6562,7 @@ dependencies = [ "async-trait", "bincode", "dashmap", - "futures", + "futures 0.3.31", "futures-util", "indexmap 2.7.0", "indicatif", @@ -6105,7 +6570,7 @@ dependencies = [ "quinn", "rayon", "solana-connection-cache 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-pubsub-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-quic-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", @@ -6113,11 +6578,11 @@ dependencies = [ "solana-rpc-client-api", "solana-rpc-client-nonce-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "solana-streamer 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-streamer", "solana-thin-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-tpu-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-udp-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -6182,10 +6647,10 @@ dependencies = [ "rand 0.8.5", "rayon", "rcgen", - "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-measure", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -6203,13 +6668,99 @@ dependencies = [ "rand 0.8.5", "rayon", "rcgen", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "thiserror", + "thiserror 1.0.69", "tokio", ] +[[package]] +name = "solana-core" +version = "1.18.26" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" +dependencies = [ + "anchor-lang 0.24.2", + "base64 0.21.7", + "bincode", + "bs58 0.4.0", + "bytes", + "chrono", + "crossbeam-channel", + "dashmap", + "eager", + "etcd-client", + "futures 0.3.31", + "histogram", + "itertools 0.10.5", + "jito-protos", + "jito-tip-distribution", + "jito-tip-payment", + "lazy_static", + "log", + "lru", + "min-max-heap", + "num_enum 0.7.3", + "prio-graph", + "prost", + "prost-types", + "quinn", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rayon", + "rcgen", + "rolling-file", + "rustc_version", + "rustls", + "serde", + "serde_bytes", + "serde_derive", + "solana-accounts-db 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-bloom", + "solana-bundle", + "solana-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-cost-model 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-entry", + "solana-frozen-abi 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-geyser-plugin-manager", + "solana-gossip", + "solana-ledger", + "solana-measure", + "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-net-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-poh", + "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-quic-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-rayon-threadlimit 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-rpc", + "solana-rpc-client-api", + "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-runtime-plugin", + "solana-sdk", + "solana-send-transaction-service 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-streamer", + "solana-tpu-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-transaction-status", + "solana-turbine", + "solana-unified-scheduler-pool", + "solana-version 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-vote 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-vote-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-wen-restart", + "strum", + "strum_macros", + "sys-info", + "sysctl", + "tempfile", + "thiserror 1.0.69", + "tokio", + "tonic", + "tonic-build", + "trees", +] + [[package]] name = "solana-cost-model" version = "1.18.26" @@ -6270,7 +6821,7 @@ dependencies = [ "rand 0.8.5", "rayon", "serde", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-merkle-tree", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", @@ -6278,6 +6829,29 @@ dependencies = [ "solana-sdk", ] +[[package]] +name = "solana-faucet" +version = "1.18.26" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" +dependencies = [ + "bincode", + "byteorder", + "clap 2.34.0", + "crossbeam-channel", + "log", + "serde", + "serde_derive", + "solana-clap-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-cli-config", + "solana-logger 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-sdk", + "solana-version 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "spl-memo", + "thiserror 1.0.69", + "tokio", +] + [[package]] name = "solana-frozen-abi" version = "1.18.26" @@ -6300,7 +6874,7 @@ dependencies = [ "sha2 0.10.8", "solana-frozen-abi-macro 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "subtle", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -6324,7 +6898,7 @@ dependencies = [ "sha2 0.10.8", "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "subtle", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -6333,8 +6907,8 @@ version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c142f779c3633ac83c84d04ff06c70e1f558c876f13358bed77ba629c7417932" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "rustc_version", "syn 2.0.93", ] @@ -6344,12 +6918,49 @@ name = "solana-frozen-abi-macro" version = "1.18.26" source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "rustc_version", "syn 2.0.93", ] +[[package]] +name = "solana-geyser-plugin-interface" +version = "1.18.26" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" +dependencies = [ + "log", + "solana-sdk", + "solana-transaction-status", + "thiserror 1.0.69", +] + +[[package]] +name = "solana-geyser-plugin-manager" +version = "1.18.26" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" +dependencies = [ + "bs58 0.4.0", + "crossbeam-channel", + "json5", + "jsonrpc-core", + "jsonrpc-server-utils", + "libloading 0.7.4", + "log", + "serde_json", + "solana-accounts-db 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-entry", + "solana-geyser-plugin-interface", + "solana-ledger", + "solana-measure", + "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-rpc", + "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-sdk", + "solana-transaction-status", + "thiserror 1.0.69", +] + [[package]] name = "solana-gossip" version = "1.18.26" @@ -6382,21 +6993,21 @@ dependencies = [ "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-ledger", "solana-logger 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-net-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-rayon-threadlimit 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "solana-streamer 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-streamer", "solana-thin-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-tpu-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-version 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-vote 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-vote-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "static_assertions", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -6413,7 +7024,7 @@ dependencies = [ "crossbeam-channel", "dashmap", "fs_extra", - "futures", + "futures 0.3.31", "itertools 0.10.5", "lazy_static", "libc", @@ -6441,7 +7052,7 @@ dependencies = [ "solana-entry", "solana-frozen-abi 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", @@ -6460,7 +7071,7 @@ dependencies = [ "strum", "strum_macros", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", "trees", @@ -6473,7 +7084,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b58f70f5883b0f26a6011ed23f76c493a3f22df63aec46cfe8e1b9bf82b5cc" dependencies = [ "log", - "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-measure", "solana-program-runtime 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", "solana_rbpf", @@ -6485,7 +7096,7 @@ version = "1.18.26" source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" dependencies = [ "log", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", "solana_rbpf", @@ -6512,16 +7123,6 @@ dependencies = [ "log", ] -[[package]] -name = "solana-measure" -version = "1.18.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c01a7f9cdc9d9d37a3d5651b2fe7ec9d433c2a3470b9f35897e373b421f0737" -dependencies = [ - "log", - "solana-sdk", -] - [[package]] name = "solana-measure" version = "1.18.26" @@ -6552,7 +7153,7 @@ dependencies = [ "log", "reqwest", "solana-sdk", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -6566,7 +7167,7 @@ dependencies = [ "log", "reqwest", "solana-sdk", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -6588,7 +7189,7 @@ dependencies = [ "solana-sdk", "solana-version 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "tokio", - "url", + "url 2.5.4", ] [[package]] @@ -6609,7 +7210,7 @@ dependencies = [ "solana-sdk", "solana-version 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "tokio", - "url", + "url 2.5.4", ] [[package]] @@ -6685,11 +7286,11 @@ dependencies = [ "log", "solana-entry", "solana-ledger", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -6740,7 +7341,7 @@ dependencies = [ "solana-frozen-abi 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk-macro", - "thiserror", + "thiserror 1.0.69", "tiny-bip39", "wasm-bindgen", "zeroize", @@ -6767,11 +7368,11 @@ dependencies = [ "serde", "solana-frozen-abi 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-frozen-abi-macro 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-measure", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", "solana_rbpf", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -6794,11 +7395,11 @@ dependencies = [ "serde", "solana-frozen-abi 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", "solana_rbpf", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -6827,7 +7428,7 @@ dependencies = [ "solana-vote-program 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana_rbpf", "test-case", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -6856,7 +7457,7 @@ dependencies = [ "solana-vote-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana_rbpf", "test-case", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -6877,12 +7478,12 @@ dependencies = [ "solana-account-decoder 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-rpc-client-api", "solana-sdk", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", "tokio-tungstenite", "tungstenite", - "url", + "url 2.5.4", ] [[package]] @@ -6901,12 +7502,12 @@ dependencies = [ "solana-account-decoder 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-rpc-client-api", "solana-sdk", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", "tokio-tungstenite", "tungstenite", - "url", + "url 2.5.4", ] [[package]] @@ -6917,7 +7518,7 @@ checksum = "5a90e40ee593f6e9ddd722d296df56743514ae804975a76d47e7afed4e3da244" dependencies = [ "async-mutex", "async-trait", - "futures", + "futures 0.3.31", "itertools 0.10.5", "lazy_static", "log", @@ -6926,13 +7527,13 @@ dependencies = [ "rcgen", "rustls", "solana-connection-cache 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-measure", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-net-utils 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-rpc-client-api", "solana-sdk", - "solana-streamer 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror", + "solana-streamer", + "thiserror 1.0.69", "tokio", ] @@ -6943,7 +7544,7 @@ source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0 dependencies = [ "async-mutex", "async-trait", - "futures", + "futures 0.3.31", "itertools 0.10.5", "lazy_static", "log", @@ -6952,13 +7553,13 @@ dependencies = [ "rcgen", "rustls", "solana-connection-cache 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-net-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-rpc-client-api", "solana-sdk", - "solana-streamer 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "thiserror", + "solana-streamer", + "thiserror 1.0.69", "tokio", ] @@ -6996,7 +7597,7 @@ dependencies = [ "qstring", "semver", "solana-sdk", - "thiserror", + "thiserror 1.0.69", "uriparse", ] @@ -7014,10 +7615,68 @@ dependencies = [ "qstring", "semver", "solana-sdk", - "thiserror", + "thiserror 1.0.69", "uriparse", ] +[[package]] +name = "solana-rpc" +version = "1.18.26" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" +dependencies = [ + "base64 0.21.7", + "bincode", + "bs58 0.4.0", + "crossbeam-channel", + "dashmap", + "itertools 0.10.5", + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "jsonrpc-http-server", + "jsonrpc-pubsub", + "libc", + "log", + "rayon", + "regex", + "serde", + "serde_derive", + "serde_json", + "soketto", + "solana-account-decoder 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-accounts-db 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-bundle", + "solana-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-entry", + "solana-faucet", + "solana-gossip", + "solana-ledger", + "solana-measure", + "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-poh", + "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-rayon-threadlimit 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-rpc-client-api", + "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-sdk", + "solana-send-transaction-service 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-stake-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-storage-bigtable", + "solana-streamer", + "solana-tpu-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-transaction-status", + "solana-version 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-vote 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-vote-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "spl-token 4.0.0", + "spl-token-2022 1.0.0", + "stream-cancel", + "thiserror 1.0.69", + "tokio", + "tokio-util 0.6.10", +] + [[package]] name = "solana-rpc-client" version = "1.18.26" @@ -7063,7 +7722,7 @@ dependencies = [ "solana-transaction-status", "solana-version 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "spl-token-2022 1.0.0", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -7076,7 +7735,7 @@ dependencies = [ "solana-clap-utils 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-rpc-client", "solana-sdk", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -7088,7 +7747,7 @@ dependencies = [ "solana-clap-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-rpc-client", "solana-sdk", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -7145,7 +7804,7 @@ dependencies = [ "solana-frozen-abi 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-frozen-abi-macro 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-loader-v4-program 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-measure", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-perf 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-program-runtime 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -7164,7 +7823,7 @@ dependencies = [ "symlink", "tar", "tempfile", - "thiserror", + "thiserror 1.0.69", "zstd", ] @@ -7221,7 +7880,7 @@ dependencies = [ "solana-frozen-abi 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-loader-v4-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", @@ -7240,10 +7899,29 @@ dependencies = [ "symlink", "tar", "tempfile", - "thiserror", + "thiserror 1.0.69", "zstd", ] +[[package]] +name = "solana-runtime-plugin" +version = "1.18.26" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" +dependencies = [ + "crossbeam-channel", + "json5", + "jsonrpc-core", + "jsonrpc-core-client", + "jsonrpc-derive", + "jsonrpc-ipc-server", + "jsonrpc-server-utils", + "libloading 0.7.4", + "log", + "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-sdk", + "thiserror 1.0.69", +] + [[package]] name = "solana-sdk" version = "1.18.26" @@ -7294,7 +7972,7 @@ dependencies = [ "solana-logger 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-program", "solana-sdk-macro", - "thiserror", + "thiserror 1.0.69", "uriparse", "wasm-bindgen", ] @@ -7305,8 +7983,8 @@ version = "1.18.26" source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" dependencies = [ "bs58 0.4.0", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "rustversion", "syn 2.0.93", ] @@ -7326,7 +8004,7 @@ dependencies = [ "crossbeam-channel", "log", "solana-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-measure", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-runtime 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", @@ -7342,7 +8020,7 @@ dependencies = [ "log", "solana-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-gossip", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", @@ -7389,7 +8067,7 @@ dependencies = [ "bzip2", "enum-iterator", "flate2", - "futures", + "futures 0.3.31", "goauth", "http", "hyper", @@ -7405,7 +8083,7 @@ dependencies = [ "solana-sdk", "solana-storage-proto", "solana-transaction-status", - "thiserror", + "thiserror 1.0.69", "tokio", "tonic", "zstd", @@ -7427,39 +8105,6 @@ dependencies = [ "tonic-build", ] -[[package]] -name = "solana-streamer" -version = "1.18.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8476e41ad94fe492e8c06697ee35912cf3080aae0c9e9ac6430835256ccf056" -dependencies = [ - "async-channel", - "bytes", - "crossbeam-channel", - "futures-util", - "histogram", - "indexmap 2.7.0", - "itertools 0.10.5", - "libc", - "log", - "nix", - "pem", - "percentage", - "pkcs8", - "quinn", - "quinn-proto", - "rand 0.8.5", - "rcgen", - "rustls", - "smallvec", - "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-perf 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-sdk", - "thiserror", - "tokio", - "x509-parser", -] - [[package]] name = "solana-streamer" version = "1.18.26" @@ -7487,7 +8132,7 @@ dependencies = [ "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "thiserror", + "thiserror 1.0.69", "tokio", "x509-parser", ] @@ -7562,13 +8207,13 @@ dependencies = [ "log", "rayon", "solana-connection-cache 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-measure", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-pubsub-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -7585,13 +8230,13 @@ dependencies = [ "log", "rayon", "solana-connection-cache 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-measure", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-pubsub-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -7616,7 +8261,43 @@ dependencies = [ "spl-memo", "spl-token 4.0.0", "spl-token-2022 1.0.0", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "solana-turbine" +version = "1.18.26" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" +dependencies = [ + "bincode", + "bytes", + "crossbeam-channel", + "futures 0.3.31", + "itertools 0.10.5", + "log", + "lru", + "quinn", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rayon", + "rcgen", + "rustls", + "solana-entry", + "solana-gossip", + "solana-ledger", + "solana-measure", + "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-poh", + "solana-quic-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-rayon-threadlimit 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-rpc", + "solana-rpc-client-api", + "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-sdk", + "solana-streamer", + "thiserror 1.0.69", + "tokio", ] [[package]] @@ -7629,8 +8310,8 @@ dependencies = [ "solana-connection-cache 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-net-utils 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", - "solana-streamer 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror", + "solana-streamer", + "thiserror 1.0.69", "tokio", ] @@ -7643,11 +8324,29 @@ dependencies = [ "solana-connection-cache 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-net-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "solana-streamer 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "thiserror", + "solana-streamer", + "thiserror 1.0.69", "tokio", ] +[[package]] +name = "solana-unified-scheduler-logic" +version = "1.18.26" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" + +[[package]] +name = "solana-unified-scheduler-pool" +version = "1.18.26" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" +dependencies = [ + "solana-ledger", + "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-sdk", + "solana-unified-scheduler-logic", + "solana-vote 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", +] + [[package]] name = "solana-version" version = "1.18.26" @@ -7695,7 +8394,7 @@ dependencies = [ "solana-frozen-abi-macro 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", "solana-vote-program 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -7713,7 +8412,7 @@ dependencies = [ "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", "solana-vote-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -7735,7 +8434,7 @@ dependencies = [ "solana-program", "solana-program-runtime 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -7756,7 +8455,27 @@ dependencies = [ "solana-program", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "thiserror", + "thiserror 1.0.69", +] + +[[package]] +name = "solana-wen-restart" +version = "1.18.26" +source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" +dependencies = [ + "log", + "prost", + "prost-build", + "prost-types", + "protobuf-src", + "rustc_version", + "solana-gossip", + "solana-ledger", + "solana-logger 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-program", + "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-sdk", + "solana-vote-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", ] [[package]] @@ -7811,7 +8530,7 @@ dependencies = [ "solana-program", "solana-sdk", "subtle", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -7839,7 +8558,7 @@ dependencies = [ "solana-program", "solana-sdk", "subtle", - "thiserror", + "thiserror 1.0.69", "zeroize", ] @@ -7858,7 +8577,7 @@ dependencies = [ "rand 0.8.5", "rustc-demangle", "scroll", - "thiserror", + "thiserror 1.0.69", "winapi 0.3.9", ] @@ -7897,7 +8616,7 @@ dependencies = [ "solana-program", "spl-token 4.0.0", "spl-token-2022 1.0.0", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -7928,7 +8647,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ - "quote", + "quote 1.0.38", "spl-discriminator-syn 0.1.2", "syn 2.0.93", ] @@ -7939,7 +8658,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ - "quote", + "quote 1.0.38", "spl-discriminator-syn 0.2.0", "syn 2.0.93", ] @@ -7950,11 +8669,11 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18fea7be851bd98d10721782ea958097c03a0c2a07d8d4997041d0ece6319a63" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "sha2 0.10.8", "syn 2.0.93", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -7963,11 +8682,11 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c1f05593b7ca9eac7caca309720f2eafb96355e037e6d373b909a80fe7b69b9" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "sha2 0.10.8", "syn 2.0.93", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -7980,7 +8699,7 @@ dependencies = [ "num-derive 0.3.3", "num-traits", "solana-program", - "thiserror", + "thiserror 1.0.69", "uint", ] @@ -8029,7 +8748,7 @@ dependencies = [ "num-traits", "solana-program", "spl-program-error-derive 0.3.2", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -8042,7 +8761,7 @@ dependencies = [ "num-traits", "solana-program", "spl-program-error-derive 0.4.1", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -8051,8 +8770,8 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1845dfe71fd68f70382232742e758557afe973ae19e6c06807b2c30f5d5cb474" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "sha2 0.10.8", "syn 2.0.93", ] @@ -8063,8 +8782,8 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "sha2 0.10.8", "syn 2.0.93", ] @@ -8089,7 +8808,7 @@ dependencies = [ "spl-math", "spl-pod 0.1.0", "spl-token-2022 0.9.0", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -8146,7 +8865,7 @@ dependencies = [ "num-traits", "num_enum 0.5.11", "solana-program", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -8161,7 +8880,7 @@ dependencies = [ "num-traits", "num_enum 0.6.1", "solana-program", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -8183,7 +8902,7 @@ dependencies = [ "spl-token-metadata-interface 0.2.0", "spl-transfer-hook-interface 0.3.0", "spl-type-length-value 0.3.0", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -8207,7 +8926,7 @@ dependencies = [ "spl-token-metadata-interface 0.2.0", "spl-transfer-hook-interface 0.4.1", "spl-type-length-value 0.3.0", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -8231,7 +8950,7 @@ dependencies = [ "spl-token-metadata-interface 0.3.5", "spl-transfer-hook-interface 0.6.5", "spl-type-length-value 0.4.6", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -8374,6 +9093,17 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "stream-cancel" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f9fbf9bd71e4cf18d68a8a0951c0e5b7255920c0cd992c4ff51cddd6ef514a3" +dependencies = [ + "futures-core", + "pin-project", + "tokio", +] + [[package]] name = "strsim" version = "0.8.0" @@ -8408,8 +9138,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ "heck 0.4.1", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "rustversion", "syn 1.0.109", ] @@ -8525,7 +9255,7 @@ dependencies = [ "bincode", "borsh 0.10.4", "bytemuck", - "futures", + "futures 0.3.31", "lazy_static", "libsecp256k1 0.7.1", "log", @@ -8547,14 +9277,25 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" +[[package]] +name = "syn" +version = "0.15.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +dependencies = [ + "proc-macro2 0.4.30", + "quote 0.6.13", + "unicode-xid 0.1.0", +] + [[package]] name = "syn" version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "unicode-ident", ] @@ -8564,8 +9305,8 @@ version = "2.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c786062daee0d6db1132800e623df74274a0a87322d8e183338e01b3d98d058" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "unicode-ident", ] @@ -8581,10 +9322,10 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", - "unicode-xid", + "unicode-xid 0.2.6", ] [[package]] @@ -8593,11 +9334,34 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] +[[package]] +name = "sys-info" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b3a0d0aba8bf96a0e1ddfdc352fc53b3df7f39318c71854910c3c4b024ae52c" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "sysctl" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225e483f02d0ad107168dc57381a8a40c3aeea6abe47f37506931f861643cfa8" +dependencies = [ + "bitflags 1.3.2", + "byteorder", + "libc", + "thiserror 1.0.69", + "walkdir", +] + [[package]] name = "system-configuration" version = "0.5.1" @@ -8644,7 +9408,7 @@ checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" dependencies = [ "anyhow", "fnv", - "futures", + "futures 0.3.31", "humantime", "opentelemetry", "pin-project", @@ -8652,7 +9416,7 @@ dependencies = [ "serde", "static_assertions", "tarpc-plugins", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-serde", "tokio-util 0.6.10", @@ -8666,8 +9430,8 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 1.0.109", ] @@ -8677,11 +9441,11 @@ version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "fastrand", "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -8714,9 +9478,9 @@ version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" dependencies = [ - "cfg-if", - "proc-macro2", - "quote", + "cfg-if 1.0.0", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -8726,8 +9490,8 @@ version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", "test-case-core", ] @@ -8753,7 +9517,16 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +dependencies = [ + "thiserror-impl 2.0.11", ] [[package]] @@ -8762,8 +9535,19 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", + "syn 2.0.93", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +dependencies = [ + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -8773,7 +9557,7 @@ version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "once_cell", ] @@ -8821,7 +9605,7 @@ dependencies = [ "rand 0.7.3", "rustc-hash", "sha2 0.9.9", - "thiserror", + "thiserror 1.0.69", "unicode-normalization", "wasm-bindgen", "zeroize", @@ -8859,7 +9643,9 @@ dependencies = [ "anchor-lang 0.30.1", "anyhow", "base64 0.13.1", + "clap 2.34.0", "clap 4.5.23", + "crossbeam-channel", "ellipsis-client", "env_logger 0.10.2", "hex", @@ -8878,19 +9664,27 @@ dependencies = [ "serde_json", "solana-account-decoder 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-accounts-db 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-clap-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-core", + "solana-geyser-plugin-manager", + "solana-gossip", "solana-ledger", + "solana-measure", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-program", "solana-program-test 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-rpc", "solana-rpc-client", "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", "solana-stake-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "solana-streamer", + "solana-unified-scheduler-pool", "solana-vote 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "spl-memo", "tempfile", - "thiserror", + "thiserror 1.0.69", "tokio", ] @@ -8928,8 +9722,8 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -9003,6 +9797,7 @@ checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" dependencies = [ "bytes", "futures-core", + "futures-io", "futures-sink", "log", "pin-project-lite", @@ -9095,7 +9890,7 @@ dependencies = [ "http-body", "hyper", "hyper-timeout", - "percent-encoding", + "percent-encoding 2.3.1", "pin-project", "prost", "rustls-pemfile", @@ -9115,9 +9910,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07" dependencies = [ "prettyplease 0.1.25", - "proc-macro2", + "proc-macro2 1.0.92", "prost-build", - "quote", + "quote 1.0.38", "syn 1.0.109", ] @@ -9171,8 +9966,8 @@ version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -9237,8 +10032,8 @@ dependencies = [ "rand 0.8.5", "rustls", "sha1", - "thiserror", - "url", + "thiserror 1.0.69", + "url 2.5.4", "utf-8", "webpki-roots 0.24.0", ] @@ -9255,6 +10050,12 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" + [[package]] name = "uint" version = "0.9.5" @@ -9267,6 +10068,18 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "unicase" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" + +[[package]] +name = "unicode-bidi" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" + [[package]] name = "unicode-ident" version = "1.0.14" @@ -9300,6 +10113,12 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +[[package]] +name = "unicode-xid" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -9331,6 +10150,12 @@ dependencies = [ "void", ] +[[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" @@ -9353,6 +10178,17 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "url" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" +dependencies = [ + "idna 0.1.5", + "matches", + "percent-encoding 1.0.1", +] + [[package]] name = "url" version = "2.5.4" @@ -9360,8 +10196,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", - "idna", - "percent-encoding", + "idna 1.0.3", + "percent-encoding 2.3.1", ] [[package]] @@ -9497,7 +10333,7 @@ version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "once_cell", "wasm-bindgen-macro", ] @@ -9510,8 +10346,8 @@ checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", "wasm-bindgen-shared", ] @@ -9522,7 +10358,7 @@ version = "0.4.49" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "js-sys", "once_cell", "wasm-bindgen", @@ -9535,7 +10371,7 @@ version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ - "quote", + "quote 1.0.38", "wasm-bindgen-macro-support", ] @@ -9545,8 +10381,8 @@ version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", "wasm-bindgen-backend", "wasm-bindgen-shared", @@ -9639,7 +10475,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -9829,7 +10665,7 @@ version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "cfg-if", + "cfg-if 1.0.0", "windows-sys 0.48.0", ] @@ -9868,7 +10704,7 @@ dependencies = [ "nom", "oid-registry", "rusticata-macros", - "thiserror", + "thiserror 1.0.69", "time", ] @@ -9916,8 +10752,8 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", "synstructure 0.13.1", ] @@ -9938,8 +10774,8 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -9958,8 +10794,8 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", "synstructure 0.13.1", ] @@ -9979,8 +10815,8 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] @@ -10001,8 +10837,8 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ - "proc-macro2", - "quote", + "proc-macro2 1.0.92", + "quote 1.0.38", "syn 2.0.93", ] diff --git a/Cargo.toml b/Cargo.toml index f06bb16a..a87cba48 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -68,6 +68,7 @@ spl-memo = "4.0.0" solana-account-decoder = { package = "solana-account-decoder", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } solana-metrics = { package = "solana-metrics", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } solana-accounts-db = { package = "solana-accounts-db", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } +solana-clap-utils = { package = "solana-clap-utils", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } solana-client = { package = "solana-client", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } solana-ledger = { package = "solana-ledger", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } solana-program = { package = "solana-program", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } @@ -106,6 +107,16 @@ jito-vault-core = { git = "https://github.com/jito-foundation/restaking.git", re jito-vault-program = { git = "https://github.com/jito-foundation/restaking.git", rev = "eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d", features = ["no-entrypoint"] } jito-vault-sdk = { git = "https://github.com/jito-foundation/restaking.git", rev = "eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d" } +solana-core = { package = "solana-core", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } +solana-geyser-plugin-manager = { package = "solana-geyser-plugin-manager", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } +solana-gossip = { package = "solana-gossip", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } +solana-measure = { package = "solana-measure", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } +solana-rpc = { package = "solana-rpc", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } +solana-streamer = { package = "solana-streamer", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } +solana-unified-scheduler-pool = { package = "solana-unified-scheduler-pool", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } + + + [patch.crates-io] # Force all Solana dependencies to use the Jito fork solana-program = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } @@ -115,3 +126,12 @@ solana-rpc-client = { git = "https://github.com/jito-foundation/jito-solana.git" solana-rpc-client-api = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } # necessary for ellipsis client solana-transaction-status = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } + +solana-core = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } +solana-geyser-plugin-manager = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } +solana-gossip = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } +solana-measure = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } +solana-rpc = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } +solana-streamer = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } +solana-unified-scheduler-pool = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } + diff --git a/tip-router-operator-cli/Cargo.toml b/tip-router-operator-cli/Cargo.toml index 664ffd9e..396c3ca3 100644 --- a/tip-router-operator-cli/Cargo.toml +++ b/tip-router-operator-cli/Cargo.toml @@ -9,6 +9,7 @@ anchor-lang = { workspace = true } anyhow = { workspace = true } base64 = "0.13" clap = { workspace = true } +clap_old = { package = "clap", version = "2.33.1" } ellipsis-client = "0.1" env_logger = { workspace = true } hex = "0.4" @@ -28,6 +29,7 @@ serde_json = { workspace = true } solana-account-decoder = { workspace = true } solana-accounts-db = { workspace = true } solana-client = { workspace = true } +solana-clap-utils = { workspace = true } solana-ledger = { workspace = true } solana-metrics = { workspace = true } solana-program = { workspace = true } @@ -40,6 +42,16 @@ spl-memo = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true } +crossbeam-channel = "0.5" + +solana-core = { workspace = true } +solana-geyser-plugin-manager = { workspace = true } +solana-gossip = { workspace = true } +solana-measure = { workspace = true } +solana-rpc = { workspace = true } +solana-streamer = { workspace = true } +solana-unified-scheduler-pool = { workspace = true } + [dev-dependencies] solana-program-test = { workspace = true } solana-runtime = { workspace = true, features = ["dev-context-only-utils"] } diff --git a/tip-router-operator-cli/src/arg_matches.rs b/tip-router-operator-cli/src/arg_matches.rs new file mode 100644 index 00000000..d3b9fbcc --- /dev/null +++ b/tip-router-operator-cli/src/arg_matches.rs @@ -0,0 +1,597 @@ +use std::ffi::OsString; +use std::path::PathBuf; + +use clap_old::{App, AppSettings, Arg, ArgMatches, SubCommand}; +use solana_clap_utils::{ + hidden_unless_forced, + input_validators::{ + is_parsable, is_pow2, is_pubkey, is_pubkey_or_keypair, is_slot, is_valid_percentage, + }, +}; +use solana_ledger::use_snapshot_archives_at_startup; +use solana_runtime::snapshot_utils::{ + SnapshotVersion, DEFAULT_ARCHIVE_COMPRESSION, SUPPORTED_ARCHIVE_COMPRESSION, +}; +use solana_sdk::{clock::Slot, native_token::sol_to_lamports, rent::Rent, vote::state::VoteState}; +use solana_stake_program::stake_state::StakeStateV2; + +// pub fn create_snapshot_arg_matches<'a, 'b>( +// full_snapshots_archives_dir: PathBuf, +// incremental_snapshots_archives_dir: PathBuf, +// account_paths: Vec, +// ) -> ArgMatches<'a> { +// let mut app = App::new("tip-router-operator-cli"); +// ledger_tool_arg_app(&mut app); +// let args: Vec = vec![ +// "tip-router-operator-cli".into(), +// "--full-snapshot-archive-path".into(), +// full_snapshots_archives_dir.into(), +// "--incremental-snapshot-archive-path".into(), +// incremental_snapshots_archives_dir.into(), +// "--accounts".into(), +// account_paths +// .iter() +// .map(|p| p.to_string_lossy().to_string()) +// .collect::>() +// .join(",") +// .into(), +// ]; + +// app.get_matches_from(args) +// } + +pub fn ledger_tool_arg_matches<'a>( + arg_matches: &mut ArgMatches<'a>, + full_snapshots_archives_dir: PathBuf, + incremental_snapshots_archives_dir: PathBuf, + account_paths: Vec, +) { + let rent = Rent::default(); + // let default_bootstrap_validator_lamports = sol_to_lamports(500.0) + // .max(VoteState::get_rent_exempt_reserve(&rent)) + // .to_string(); + // let default_bootstrap_validator_stake_lamports = sol_to_lamports(0.5) + // .max(rent.minimum_balance(StakeStateV2::size_of())) + // .to_string(); + + let load_genesis_config_arg = load_genesis_arg(); + let accounts_db_config_args = accounts_db_args(); + let snapshot_config_args = snapshot_args(); + + let accounts_db_test_hash_calculation_arg = Arg::with_name("accounts_db_test_hash_calculation") + .long("accounts-db-test-hash-calculation") + .help("Enable hash calculation test"); + let halt_at_slot_arg = Arg::with_name("halt_at_slot") + .long("halt-at-slot") + .value_name("SLOT") + .validator(is_slot) + .takes_value(true) + .help("Halt processing at the given slot"); + let os_memory_stats_reporting_arg = Arg::with_name("os_memory_stats_reporting") + .long("os-memory-stats-reporting") + .help("Enable reporting of OS memory statistics."); + let halt_at_slot_store_hash_raw_data = Arg::with_name("halt_at_slot_store_hash_raw_data") + .long("halt-at-slot-store-hash-raw-data") + .help( + "After halting at slot, run an accounts hash calculation and store the raw hash data \ + for debugging.", + ) + .hidden(hidden_unless_forced()); + let verify_index_arg = Arg::with_name("verify_accounts_index") + .long("verify-accounts-index") + .takes_value(false) + .help("For debugging and tests on accounts index."); + let limit_load_slot_count_from_snapshot_arg = + Arg::with_name("limit_load_slot_count_from_snapshot") + .long("limit-load-slot-count-from-snapshot") + .value_name("SLOT") + .validator(is_slot) + .takes_value(true) + .help( + "For debugging and profiling with large snapshots, artificially limit how many \ + slots are loaded from a snapshot.", + ); + let hard_forks_arg = Arg::with_name("hard_forks") + .long("hard-fork") + .value_name("SLOT") + .validator(is_slot) + .multiple(true) + .takes_value(true) + .help("Add a hard fork at this slot"); + let allow_dead_slots_arg = Arg::with_name("allow_dead_slots") + .long("allow-dead-slots") + .takes_value(false) + .help("Output dead slots as well"); + let hashes_per_tick = Arg::with_name("hashes_per_tick") + .long("hashes-per-tick") + .value_name("NUM_HASHES|\"sleep\"") + .takes_value(true) + .help( + "How many PoH hashes to roll before emitting the next tick. If \"sleep\", for \ + development sleep for the target tick duration instead of hashing", + ); + let snapshot_version_arg = Arg::with_name("snapshot_version") + .long("snapshot-version") + .value_name("SNAPSHOT_VERSION") + .validator(is_parsable::) + .takes_value(true) + .default_value(SnapshotVersion::default().into()) + .help("Output snapshot version"); + let debug_key_arg = Arg::with_name("debug_key") + .long("debug-key") + .validator(is_pubkey) + .value_name("ADDRESS") + .multiple(true) + .takes_value(true) + .help("Log when transactions are processed that reference the given key(s)."); + + let geyser_plugin_args = Arg::with_name("geyser_plugin_config") + .long("geyser-plugin-config") + .value_name("FILE") + .takes_value(true) + .multiple(true) + .help("Specify the configuration file for the Geyser plugin."); + + let log_messages_bytes_limit_arg = Arg::with_name("log_messages_bytes_limit") + .long("log-messages-bytes-limit") + .takes_value(true) + .validator(is_parsable::) + .value_name("BYTES") + .help("Maximum number of bytes written to the program log before truncation"); + + let accounts_data_encoding_arg = Arg::with_name("encoding") + .long("encoding") + .takes_value(true) + .possible_values(&["base64", "base64+zstd", "jsonParsed"]) + .default_value("base64") + .help("Print account data in specified format when printing account contents."); + + let app = App::new("tip-router-operator-cli") + .about("Tip Router Operator CLI") + .version("0.1.0") + .global_setting(AppSettings::ColoredHelp) + .global_setting(AppSettings::InferSubcommands) + .global_setting(AppSettings::UnifiedHelpMessage) + .global_setting(AppSettings::VersionlessSubcommands) + .setting(AppSettings::SubcommandRequiredElseHelp) + .arg( + Arg::with_name("ledger_path") + .short("l") + .long("ledger") + .value_name("DIR") + .takes_value(true) + .global(true) + .default_value("ledger") + .help("Use DIR as ledger location"), + ) + .arg( + Arg::with_name("wal_recovery_mode") + .long("wal-recovery-mode") + .value_name("MODE") + .takes_value(true) + .global(true) + .possible_values(&[ + "tolerate_corrupted_tail_records", + "absolute_consistency", + "point_in_time", + "skip_any_corrupted_record", + ]) + .help("Mode to recovery the ledger db write ahead log"), + ) + .arg( + Arg::with_name("force_update_to_open") + .long("force-update-to-open") + .takes_value(false) + .global(true) + .help( + "Allow commands that would otherwise not alter the blockstore to make \ + necessary updates in order to open it", + ), + ) + .arg( + Arg::with_name("ignore_ulimit_nofile_error") + .long("ignore-ulimit-nofile-error") + .takes_value(false) + .global(true) + .help( + "Allow opening the blockstore to succeed even if the desired open file \ + descriptor limit cannot be configured. Use with caution as some commands may \ + run fine with a reduced file descriptor limit while others will not", + ), + ) + .arg( + Arg::with_name("block_verification_method") + .long("block-verification-method") + .value_name("METHOD") + .takes_value(true) + // .possible_values(BlockVerificationMethod::cli_names()) + .global(true), // .help(BlockVerificationMethod::cli_message()), + ) + .arg( + Arg::with_name("unified_scheduler_handler_threads") + .long("unified-scheduler-handler-threads") + .value_name("COUNT") + .takes_value(true) + // .validator(|s| is_within_range(s, 1..)) + .global(true), // .help(DefaultSchedulerPool::cli_message()), + ) + .arg( + Arg::with_name("output_format") + .long("output") + .value_name("FORMAT") + .global(true) + .takes_value(true) + .possible_values(&["json", "json-compact"]) + .help( + "Return information in specified output format, currently only available for \ + bigtable and program subcommands", + ), + ) + .arg( + Arg::with_name("verbose") + .short("v") + .long("verbose") + .global(true) + .multiple(true) + .takes_value(false) + .help("Show additional information where supported"), + ) + .subcommand( + SubCommand::with_name("create-snapshot") + .about("Create a new ledger snapshot") + .arg(&load_genesis_config_arg) + .args(&accounts_db_config_args) + .args(&snapshot_config_args) + .arg(&hard_forks_arg) + .arg(&snapshot_version_arg) + .arg(&geyser_plugin_args) + .arg(&log_messages_bytes_limit_arg) + .arg( + Arg::with_name("snapshot_slot") + .index(1) + .value_name("SLOT") + .validator(|value| { + if value.parse::().is_ok() || value == "ROOT" { + Ok(()) + } else { + Err(format!( + "Unable to parse as a number or the keyword ROOT, provided: \ + {value}" + )) + } + }) + .takes_value(true) + .help( + "Slot at which to create the snapshot; accepts keyword ROOT for the \ + highest root", + ), + ) + .arg( + Arg::with_name("output_directory") + .index(2) + .value_name("DIR") + .takes_value(true) + .help( + "Output directory for the snapshot \ + [default: --snapshot-archive-path if present else --ledger directory]", + ), + ) + .arg( + Arg::with_name("warp_slot") + .required(false) + .long("warp-slot") + .takes_value(true) + .value_name("WARP_SLOT") + .validator(is_slot) + .help( + "After loading the snapshot slot warp the ledger to WARP_SLOT, which \ + could be a slot in a galaxy far far away", + ), + ) + .arg( + Arg::with_name("faucet_lamports") + .short("t") + .long("faucet-lamports") + .value_name("LAMPORTS") + .takes_value(true) + .requires("faucet_pubkey") + .help("Number of lamports to assign to the faucet"), + ) + .arg( + Arg::with_name("faucet_pubkey") + .short("m") + .long("faucet-pubkey") + .value_name("PUBKEY") + .takes_value(true) + .validator(is_pubkey_or_keypair) + .requires("faucet_lamports") + .help("Path to file containing the faucet's pubkey"), + ) + .arg( + Arg::with_name("bootstrap_validator") + .short("b") + .long("bootstrap-validator") + .value_name("IDENTITY_PUBKEY VOTE_PUBKEY STAKE_PUBKEY") + .takes_value(true) + .validator(is_pubkey_or_keypair) + .number_of_values(3) + .multiple(true) + .help("The bootstrap validator's identity, vote and stake pubkeys"), + ) + .arg( + Arg::with_name("bootstrap_stake_authorized_pubkey") + .long("bootstrap-stake-authorized-pubkey") + .value_name("BOOTSTRAP STAKE AUTHORIZED PUBKEY") + .takes_value(true) + .validator(is_pubkey_or_keypair) + .help( + "Path to file containing the pubkey authorized to manage the \ + bootstrap validator's stake + [default: --bootstrap-validator IDENTITY_PUBKEY]", + ), + ) + // .arg( + // Arg::with_name("bootstrap_validator_lamports") + // .long("bootstrap-validator-lamports") + // .value_name("LAMPORTS") + // .takes_value(true) + // .default_value(&default_bootstrap_validator_lamports) + // .help("Number of lamports to assign to the bootstrap validator"), + // ) + // .arg( + // Arg::with_name("bootstrap_validator_stake_lamports") + // .long("bootstrap-validator-stake-lamports") + // .value_name("LAMPORTS") + // .takes_value(true) + // .default_value(&default_bootstrap_validator_stake_lamports) + // .help( + // "Number of lamports to assign to the bootstrap validator's stake \ + // account", + // ), + // ) + .arg( + Arg::with_name("rent_burn_percentage") + .long("rent-burn-percentage") + .value_name("NUMBER") + .takes_value(true) + .help("Adjust percentage of collected rent to burn") + .validator(is_valid_percentage), + ) + .arg(&hashes_per_tick) + .arg( + Arg::with_name("accounts_to_remove") + .required(false) + .long("remove-account") + .takes_value(true) + .value_name("PUBKEY") + .validator(is_pubkey) + .multiple(true) + .help("List of accounts to remove while creating the snapshot"), + ) + .arg( + Arg::with_name("feature_gates_to_deactivate") + .required(false) + .long("deactivate-feature-gate") + .takes_value(true) + .value_name("PUBKEY") + .validator(is_pubkey) + .multiple(true) + .help("List of feature gates to deactivate while creating the snapshot"), + ) + .arg( + Arg::with_name("vote_accounts_to_destake") + .required(false) + .long("destake-vote-account") + .takes_value(true) + .value_name("PUBKEY") + .validator(is_pubkey) + .multiple(true) + .help("List of validator vote accounts to destake"), + ) + .arg( + Arg::with_name("remove_stake_accounts") + .required(false) + .long("remove-stake-accounts") + .takes_value(false) + .help("Remove all existing stake accounts from the new snapshot"), + ) + .arg( + Arg::with_name("incremental") + .long("incremental") + .takes_value(false) + .help( + "Create an incremental snapshot instead of a full snapshot. This \ + requires that the ledger is loaded from a full snapshot, which will \ + be used as the base for the incremental snapshot.", + ) + .conflicts_with("no_snapshot"), + ) + .arg( + Arg::with_name("minimized") + .long("minimized") + .takes_value(false) + .help( + "Create a minimized snapshot instead of a full snapshot. This \ + snapshot will only include information needed to replay the ledger \ + from the snapshot slot to the ending slot.", + ) + .conflicts_with("incremental") + .requires("ending_slot"), + ) + .arg( + Arg::with_name("ending_slot") + .long("ending-slot") + .takes_value(true) + .value_name("ENDING_SLOT") + .help("Ending slot for minimized snapshot creation"), + ) + .arg( + Arg::with_name("snapshot_archive_format") + .long("snapshot-archive-format") + .possible_values(SUPPORTED_ARCHIVE_COMPRESSION) + .default_value(DEFAULT_ARCHIVE_COMPRESSION) + .value_name("ARCHIVE_TYPE") + .takes_value(true) + .help("Snapshot archive format to use.") + .conflicts_with("no_snapshot"), + ) + .arg( + Arg::with_name("enable_capitalization_change") + .long("enable-capitalization-change") + .takes_value(false) + .help("If snapshot creation should succeed with a capitalization delta."), + ), + ); + + let args: Vec = vec![ + "tip-router-operator-cli".into(), + "--full-snapshot-archive-path".into(), + full_snapshots_archives_dir.into(), + "--incremental-snapshot-archive-path".into(), + incremental_snapshots_archives_dir.into(), + "--accounts".into(), + account_paths + .iter() + .map(|p| p.to_string_lossy().to_string()) + .collect::>() + .join(",") + .into(), + ]; + + *arg_matches = app.get_matches_from(args); +} + +/// Returns the arguments that configure AccountsDb +pub fn accounts_db_args<'a, 'b>() -> Box<[Arg<'a, 'b>]> { + vec![ + Arg::with_name("account_paths") + .long("accounts") + .value_name("PATHS") + .takes_value(true) + .help( + "Persistent accounts location. May be specified multiple times. \ + [default: /accounts]", + ), + Arg::with_name("accounts_index_path") + .long("accounts-index-path") + .value_name("PATH") + .takes_value(true) + .multiple(true) + .help( + "Persistent accounts-index location. May be specified multiple times. \ + [default: /accounts_index]", + ), + Arg::with_name("accounts_hash_cache_path") + .long("accounts-hash-cache-path") + .value_name("PATH") + .takes_value(true) + .help( + "Use PATH as accounts hash cache location [default: /accounts_hash_cache]", + ), + Arg::with_name("accounts_index_bins") + .long("accounts-index-bins") + .value_name("BINS") + .validator(is_pow2) + .takes_value(true) + .help("Number of bins to divide the accounts index into"), + Arg::with_name("accounts_index_memory_limit_mb") + .long("accounts-index-memory-limit-mb") + .value_name("MEGABYTES") + .validator(is_parsable::) + .takes_value(true) + .help( + "How much memory the accounts index can consume. If this is exceeded, some \ + account index entries will be stored on disk.", + ), + Arg::with_name("disable_accounts_disk_index") + .long("disable-accounts-disk-index") + .help( + "Disable the disk-based accounts index. It is enabled by default. The entire \ + accounts index will be kept in memory.", + ) + .conflicts_with("accounts_index_memory_limit_mb"), + Arg::with_name("accounts_db_skip_shrink") + .long("accounts-db-skip-shrink") + .help( + "Enables faster starting of ledger-tool by skipping shrink. This option is for \ + use during testing.", + ), + Arg::with_name("accounts_db_verify_refcounts") + .long("accounts-db-verify-refcounts") + .help( + "Debug option to scan all AppendVecs and verify account index refcounts prior to \ + clean", + ) + .hidden(hidden_unless_forced()), + Arg::with_name("accounts_db_test_skip_rewrites") + .long("accounts-db-test-skip-rewrites") + .help( + "Debug option to skip rewrites for rent-exempt accounts but still add them in \ + bank delta hash calculation", + ) + .hidden(hidden_unless_forced()), + Arg::with_name("accounts_db_skip_initial_hash_calculation") + .long("accounts-db-skip-initial-hash-calculation") + .help("Do not verify accounts hash at startup.") + .hidden(hidden_unless_forced()), + Arg::with_name("accounts_db_ancient_append_vecs") + .long("accounts-db-ancient-append-vecs") + .value_name("SLOT-OFFSET") + .validator(is_parsable::) + .takes_value(true) + .help( + "AppendVecs that are older than (slots_per_epoch - SLOT-OFFSET) are squashed \ + together.", + ) + .hidden(hidden_unless_forced()), + ] + .into_boxed_slice() +} + +// For our current version of CLAP, the value passed to Arg::default_value() +// must be a &str. But, we can't convert an integer to a &str at compile time. +// So, declare this constant and enforce equality with the following unit test +// test_max_genesis_archive_unpacked_size_constant +const MAX_GENESIS_ARCHIVE_UNPACKED_SIZE_STR: &str = "10485760"; + +/// Returns the arguments that configure loading genesis +pub fn load_genesis_arg<'a, 'b>() -> Arg<'a, 'b> { + Arg::with_name("max_genesis_archive_unpacked_size") + .long("max-genesis-archive-unpacked-size") + .value_name("NUMBER") + .takes_value(true) + .default_value(MAX_GENESIS_ARCHIVE_UNPACKED_SIZE_STR) + .help("maximum total uncompressed size of unpacked genesis archive") +} + +/// Returns the arguments that configure snapshot loading +pub fn snapshot_args<'a, 'b>() -> Box<[Arg<'a, 'b>]> { + vec![ + Arg::with_name("no_snapshot") + .long("no-snapshot") + .takes_value(false) + .help("Do not start from a local snapshot if present"), + Arg::with_name("snapshots") + .long("snapshots") + .alias("snapshot-archive-path") + .alias("full-snapshot-archive-path") + .value_name("DIR") + .takes_value(true) + .global(true) + .help("Use DIR for snapshot location [default: --ledger value]"), + Arg::with_name("incremental_snapshot_archive_path") + .long("incremental-snapshot-archive-path") + .value_name("DIR") + .takes_value(true) + .global(true) + .help("Use DIR for separate incremental snapshot location"), + Arg::with_name(use_snapshot_archives_at_startup::cli::NAME) + .long(use_snapshot_archives_at_startup::cli::LONG_ARG) + .takes_value(true) + .possible_values(use_snapshot_archives_at_startup::cli::POSSIBLE_VALUES) + .default_value(use_snapshot_archives_at_startup::cli::default_value_for_ledger_tool()) + .help(use_snapshot_archives_at_startup::cli::HELP) + .long_help(use_snapshot_archives_at_startup::cli::LONG_HELP), + ] + .into_boxed_slice() +} diff --git a/tip-router-operator-cli/src/cli.rs b/tip-router-operator-cli/src/cli.rs index 3bdb794e..99fce61b 100644 --- a/tip-router-operator-cli/src/cli.rs +++ b/tip-router-operator-cli/src/cli.rs @@ -1,9 +1,9 @@ -use std::path::PathBuf; +use std::{fmt::Display, path::PathBuf}; use clap::Parser; use solana_sdk::pubkey::Pubkey; -#[derive(Clone, Parser)] +#[derive(Clone, Parser, Debug)] #[command(author, version, about)] pub struct Cli { #[arg(short, long, env)] @@ -37,7 +37,7 @@ pub struct Cli { pub command: Commands, } -#[derive(clap::Subcommand, Clone)] +#[derive(clap::Subcommand, Clone, Debug)] pub enum Commands { Run { #[arg(short, long, env)] diff --git a/tip-router-operator-cli/src/ledger_utils.rs b/tip-router-operator-cli/src/ledger_utils.rs index 9c8586c7..f2e4c9c3 100644 --- a/tip-router-operator-cli/src/ledger_utils.rs +++ b/tip-router-operator-cli/src/ledger_utils.rs @@ -173,6 +173,26 @@ pub fn get_bank_from_ledger( ..Default::default() }; let exit = Arc::new(AtomicBool::new(false)); + + // Call ledger_utils::load_and_process_ledger here + // let LoadAndProcessLedgerOutput { + // bank_forks, + // starting_snapshot_hashes, + // accounts_background_service, + // .. + // } = match solana_ledger_tool::ledger_utils::load_and_process_ledger( + // &genesis_config, + // &blockstore, + // account_paths, + // None, + // Some(&snapshot_config), + // ) { + // Ok(res) => res, + // Err(e) => { + // panic!("Failed to load bank forks: {}", e); + // } + // }; + let (bank_forks, leader_schedule_cache, _starting_snapshot_hashes, ..) = match bank_forks_utils::load_bank_forks( &genesis_config, diff --git a/tip-router-operator-cli/src/lib.rs b/tip-router-operator-cli/src/lib.rs index 03a7f53c..1df10ccf 100644 --- a/tip-router-operator-cli/src/lib.rs +++ b/tip-router-operator-cli/src/lib.rs @@ -4,11 +4,15 @@ pub mod tip_router; pub use crate::cli::{Cli, Commands}; pub mod cli; pub use crate::process_epoch::process_epoch; +pub mod arg_matches; pub mod backup_snapshots; +mod load_and_process_ledger; pub mod process_epoch; pub mod submit; +use std::fs; use std::path::{Path, PathBuf}; +use std::process::Command; use std::time::Instant; use anchor_lang::prelude::*; @@ -186,3 +190,109 @@ pub fn get_meta_merkle_root( Ok(meta_merkle_tree) } + +fn get_validator_cmdline() -> Result { + let output = Command::new("pgrep").arg("solana-validator").output()?; + + let pid = String::from_utf8_lossy(&output.stdout).trim().to_string(); + + let cmdline = fs::read_to_string(format!("/proc/{}/cmdline", pid))?; + + Ok(cmdline.replace('\0', " ")) +} + +pub fn emit_solana_validator_args() -> std::result::Result<(), anyhow::Error> { + // Find solana-validator process and get its command line args + let validator_cmdline = match get_validator_cmdline() { + Ok(cmdline) => cmdline, + Err(_) => return Err(anyhow::anyhow!("Validator process not found")), + }; + + let validator_config: Vec = validator_cmdline + .split_whitespace() + .map(String::from) + .collect(); + + if validator_config.is_empty() { + return Err(anyhow::anyhow!("Validator process not found")); + } + + let mut limit_ledger_size = None; + let mut full_snapshot_interval = None; + let mut max_full_snapshots = None; + let mut incremental_snapshot_path = None; + let mut incremental_snapshot_interval = None; + let mut max_incremental_snapshots = None; + + for (i, arg) in validator_config.iter().enumerate() { + match arg.as_str() { + "--limit-ledger-size" => { + if let Some(value) = validator_config.get(i + 1) { + limit_ledger_size = Some(value.clone()); + } + } + "--full-snapshot-interval-slots" => { + if let Some(value) = validator_config.get(i + 1) { + full_snapshot_interval = Some(value.clone()); + } + } + "--maximum-full-snapshots-to-retain" => { + if let Some(value) = validator_config.get(i + 1) { + max_full_snapshots = Some(value.clone()); + } + } + "--incremental-snapshot-archive-path" => { + if let Some(value) = validator_config.get(i + 1) { + incremental_snapshot_path = Some(value.clone()); + } + } + "--incremental-snapshot-interval-slots" => { + if let Some(value) = validator_config.get(i + 1) { + incremental_snapshot_interval = Some(value.clone()); + } + } + "--maximum-incremental-snapshots-to-retain" => { + if let Some(value) = validator_config.get(i + 1) { + max_incremental_snapshots = Some(value.clone()); + } + } + _ => {} + } + } + + datapoint_info!( + "tip_router_cli.validator_config", + ( + "limit_ledger_size", + limit_ledger_size.unwrap_or_default(), + String + ), + ( + "full_snapshot_interval", + full_snapshot_interval.unwrap_or_default(), + String + ), + ( + "max_full_snapshots", + max_full_snapshots.unwrap_or_default(), + String + ), + ( + "incremental_snapshot_path", + incremental_snapshot_path.unwrap_or_default(), + String + ), + ( + "incremental_snapshot_interval", + incremental_snapshot_interval.unwrap_or_default(), + String + ), + ( + "max_incremental_snapshots", + max_incremental_snapshots.unwrap_or_default(), + String + ) + ); + + Ok(()) +} diff --git a/tip-router-operator-cli/src/load_and_process_ledger.rs b/tip-router-operator-cli/src/load_and_process_ledger.rs new file mode 100644 index 00000000..9c0ec9f4 --- /dev/null +++ b/tip-router-operator-cli/src/load_and_process_ledger.rs @@ -0,0 +1,586 @@ +use { + clap_old::{value_t, value_t_or_exit, values_t_or_exit, ArgMatches}, + crossbeam_channel::unbounded, + log::*, + solana_accounts_db::{ + hardened_unpack::open_genesis_config, utils::create_all_accounts_run_and_snapshot_dirs, + }, + solana_core::{ + accounts_hash_verifier::AccountsHashVerifier, validator::BlockVerificationMethod, + }, + solana_geyser_plugin_manager::geyser_plugin_service::{ + GeyserPluginService, GeyserPluginServiceError, + }, + solana_gossip::{cluster_info::ClusterInfo, contact_info::ContactInfo}, + solana_ledger::{ + bank_forks_utils::{self, BankForksUtilsError}, + blockstore::{Blockstore, BlockstoreError}, + blockstore_options::{ + AccessType, BlockstoreOptions, BlockstoreRecoveryMode, LedgerColumnOptions, + ShredStorageType, + }, + blockstore_processor::{ + self, BlockstoreProcessorError, ProcessOptions, TransactionStatusSender, + }, + use_snapshot_archives_at_startup::UseSnapshotArchivesAtStartup, + }, + solana_measure::measure, + solana_rpc::transaction_status_service::TransactionStatusService, + solana_runtime::{ + accounts_background_service::{ + AbsRequestHandlers, AbsRequestSender, AccountsBackgroundService, + PrunedBanksRequestHandler, SnapshotRequestHandler, + }, + bank_forks::BankForks, + prioritization_fee_cache::PrioritizationFeeCache, + snapshot_config::SnapshotConfig, + snapshot_hash::StartingSnapshotHashes, + snapshot_utils::{ + self, clean_orphaned_account_snapshot_dirs, move_and_async_delete_path_contents, + }, + }, + solana_sdk::{ + clock::Slot, genesis_config::GenesisConfig, pubkey::Pubkey, signature::Signer, + signer::keypair::Keypair, timing::timestamp, transaction::VersionedTransaction, + }, + solana_streamer::socket::SocketAddrSpace, + solana_unified_scheduler_pool::DefaultSchedulerPool, + std::{ + path::{Path, PathBuf}, + process::exit, + sync::{ + atomic::{AtomicBool, Ordering}, + Arc, RwLock, + }, + }, + thiserror::Error, +}; + +pub const LEDGER_TOOL_DIRECTORY: &str = "ledger_tool"; + +const PROCESS_SLOTS_HELP_STRING: &str = + "The starting slot is either the latest found snapshot slot, or genesis (slot 0) if the \ + --no-snapshot flag was specified or if no snapshots were found. \ + The ending slot is the snapshot creation slot for create-snapshot, the value for \ + --halt-at-slot if specified, or the highest slot in the blockstore."; + +#[derive(Error, Debug)] +pub(crate) enum LoadAndProcessLedgerError { + #[error("failed to clean orphaned account snapshot directories: {0}")] + CleanOrphanedAccountSnapshotDirectories(#[source] std::io::Error), + + #[error("failed to create all run and snapshot directories: {0}")] + CreateAllAccountsRunAndSnapshotDirectories(#[source] std::io::Error), + + #[error("custom accounts path is not supported with seconday blockstore access")] + CustomAccountsPathUnsupported(#[source] BlockstoreError), + + #[error( + "failed to process blockstore from starting slot {0} to ending slot {1}; the ending slot \ + is less than the starting slot. {2}" + )] + EndingSlotLessThanStartingSlot(Slot, Slot, String), + + #[error( + "failed to process blockstore from starting slot {0} to ending slot {1}; the blockstore \ + does not contain a replayable sequence of blocks between these slots. {2}" + )] + EndingSlotNotReachableFromStartingSlot(Slot, Slot, String), + + #[error("failed to setup geyser service: {0}")] + GeyserServiceSetup(#[source] GeyserPluginServiceError), + + #[error("failed to load bank forks: {0}")] + LoadBankForks(#[source] BankForksUtilsError), + + #[error("failed to process blockstore from root: {0}")] + ProcessBlockstoreFromRoot(#[source] BlockstoreProcessorError), +} + +pub fn load_and_process_ledger_or_exit( + arg_matches: &ArgMatches, + genesis_config: &GenesisConfig, + blockstore: Arc, + process_options: ProcessOptions, + snapshot_archive_path: Option, + incremental_snapshot_archive_path: Option, +) -> (Arc>, Option) { + load_and_process_ledger( + arg_matches, + genesis_config, + blockstore, + process_options, + snapshot_archive_path, + incremental_snapshot_archive_path, + ) + .unwrap_or_else(|err| { + eprintln!("Exiting. Failed to load and process ledger: {err}"); + exit(1); + }) +} + +pub fn load_and_process_ledger( + arg_matches: &ArgMatches, + genesis_config: &GenesisConfig, + blockstore: Arc, + process_options: ProcessOptions, + snapshot_archive_path: Option, + incremental_snapshot_archive_path: Option, +) -> Result<(Arc>, Option), LoadAndProcessLedgerError> { + let bank_snapshots_dir = if blockstore.is_primary_access() { + blockstore.ledger_path().join("snapshot") + } else { + blockstore + .ledger_path() + .join(LEDGER_TOOL_DIRECTORY) + .join("snapshot") + }; + + let mut starting_slot = 0; // default start check with genesis + let snapshot_config = if arg_matches.is_present("no_snapshot") { + None + } else { + let full_snapshot_archives_dir = + snapshot_archive_path.unwrap_or_else(|| blockstore.ledger_path().to_path_buf()); + let incremental_snapshot_archives_dir = + incremental_snapshot_archive_path.unwrap_or_else(|| full_snapshot_archives_dir.clone()); + if let Some(full_snapshot_slot) = snapshot_utils::get_highest_full_snapshot_archive_slot( + &full_snapshot_archives_dir, + None, + ) { + let incremental_snapshot_slot = + snapshot_utils::get_highest_incremental_snapshot_archive_slot( + &incremental_snapshot_archives_dir, + full_snapshot_slot, + None, + ) + .unwrap_or_default(); + starting_slot = std::cmp::max(full_snapshot_slot, incremental_snapshot_slot); + } + + Some(SnapshotConfig { + full_snapshot_archives_dir, + incremental_snapshot_archives_dir, + bank_snapshots_dir: bank_snapshots_dir.clone(), + ..SnapshotConfig::new_load_only() + }) + }; + + match process_options.halt_at_slot { + // Skip the following checks for sentinel values of Some(0) and None. + // For Some(0), no slots will be be replayed after starting_slot. + // For None, all available children of starting_slot will be replayed. + None | Some(0) => {} + Some(halt_slot) => { + if halt_slot < starting_slot { + return Err(LoadAndProcessLedgerError::EndingSlotLessThanStartingSlot( + starting_slot, + halt_slot, + PROCESS_SLOTS_HELP_STRING.to_string(), + )); + } + // Check if we have the slot data necessary to replay from starting_slot to >= halt_slot. + if !blockstore.slot_range_connected(starting_slot, halt_slot) { + return Err( + LoadAndProcessLedgerError::EndingSlotNotReachableFromStartingSlot( + starting_slot, + halt_slot, + PROCESS_SLOTS_HELP_STRING.to_string(), + ), + ); + } + } + } + + let account_paths = if let Some(account_paths) = arg_matches.value_of("account_paths") { + // If this blockstore access is Primary, no other process (agave-validator) can hold + // Primary access. So, allow a custom accounts path without worry of wiping the accounts + // of agave-validator. + if !blockstore.is_primary_access() { + // Attempt to open the Blockstore in Primary access; if successful, no other process + // was holding Primary so allow things to proceed with custom accounts path. Release + // the Primary access instead of holding it to give priority to agave-validator over + // agave-ledger-tool should agave-validator start before we've finished. + info!( + "Checking if another process currently holding Primary access to {:?}", + blockstore.ledger_path() + ); + Blockstore::open_with_options( + blockstore.ledger_path(), + BlockstoreOptions { + access_type: AccessType::PrimaryForMaintenance, + ..BlockstoreOptions::default() + }, + ) + // Couldn't get Primary access, error out to be defensive. + .map_err(LoadAndProcessLedgerError::CustomAccountsPathUnsupported)?; + } + account_paths.split(',').map(PathBuf::from).collect() + } else if blockstore.is_primary_access() { + vec![blockstore.ledger_path().join("accounts")] + } else { + let non_primary_accounts_path = blockstore + .ledger_path() + .join(LEDGER_TOOL_DIRECTORY) + .join("accounts"); + info!( + "Default accounts path is switched aligning with Blockstore's secondary access: {:?}", + non_primary_accounts_path + ); + vec![non_primary_accounts_path] + }; + + let (account_run_paths, account_snapshot_paths) = + create_all_accounts_run_and_snapshot_dirs(&account_paths) + .map_err(LoadAndProcessLedgerError::CreateAllAccountsRunAndSnapshotDirectories)?; + // From now on, use run/ paths in the same way as the previous account_paths. + let account_paths = account_run_paths; + + let (_, measure_clean_account_paths) = measure!( + account_paths.iter().for_each(|path| { + if path.exists() { + info!("Cleaning contents of account path: {}", path.display()); + move_and_async_delete_path_contents(path); + } + }), + "Cleaning account paths" + ); + info!("{measure_clean_account_paths}"); + + snapshot_utils::purge_incomplete_bank_snapshots(&bank_snapshots_dir); + + info!("Cleaning contents of account snapshot paths: {account_snapshot_paths:?}"); + clean_orphaned_account_snapshot_dirs(&bank_snapshots_dir, &account_snapshot_paths) + .map_err(LoadAndProcessLedgerError::CleanOrphanedAccountSnapshotDirectories)?; + + let geyser_plugin_active = arg_matches.is_present("geyser_plugin_config"); + let (accounts_update_notifier, transaction_notifier) = if geyser_plugin_active { + let geyser_config_files = vec![]; // values_t_or_exit!(arg_matches, "geyser_plugin_config", String) + // .into_iter() + // .map(PathBuf::from) + // .collect::>(); + + let (confirmed_bank_sender, confirmed_bank_receiver) = unbounded(); + drop(confirmed_bank_sender); + let geyser_service = + GeyserPluginService::new(confirmed_bank_receiver, &geyser_config_files) + .map_err(LoadAndProcessLedgerError::GeyserServiceSetup)?; + ( + geyser_service.get_accounts_update_notifier(), + geyser_service.get_transaction_notifier(), + ) + } else { + (None, None) + }; + + let exit = Arc::new(AtomicBool::new(false)); + let (bank_forks, leader_schedule_cache, starting_snapshot_hashes, ..) = + bank_forks_utils::load_bank_forks( + genesis_config, + blockstore.as_ref(), + account_paths, + None, + snapshot_config.as_ref(), + &process_options, + None, + None, // Maybe support this later, though + accounts_update_notifier, + exit.clone(), + false, + ) + .map_err(LoadAndProcessLedgerError::LoadBankForks)?; + let block_verification_method = BlockVerificationMethod::default(); + // let block_verification_method = value_t!( + // arg_matches, + // "block_verification_method", + // BlockVerificationMethod + // ) + // .unwrap_or_default(); + info!( + "Using: block-verification-method: {}", + block_verification_method, + ); + match block_verification_method { + BlockVerificationMethod::BlockstoreProcessor => { + info!("no scheduler pool is installed for block verification..."); + } + BlockVerificationMethod::UnifiedScheduler => { + let no_transaction_status_sender = None; + let no_replay_vote_sender = None; + let ignored_prioritization_fee_cache = Arc::new(PrioritizationFeeCache::new(0u64)); + bank_forks + .write() + .unwrap() + .install_scheduler_pool(DefaultSchedulerPool::new_dyn( + process_options.runtime_config.log_messages_bytes_limit, + no_transaction_status_sender, + no_replay_vote_sender, + ignored_prioritization_fee_cache, + )); + } + } + + let node_id = Arc::new(Keypair::new()); + let cluster_info = Arc::new(ClusterInfo::new( + ContactInfo::new_localhost(&node_id.pubkey(), timestamp()), + Arc::clone(&node_id), + SocketAddrSpace::Unspecified, + )); + let (accounts_package_sender, accounts_package_receiver) = crossbeam_channel::unbounded(); + let accounts_hash_verifier = AccountsHashVerifier::new( + accounts_package_sender.clone(), + accounts_package_receiver, + None, + exit.clone(), + cluster_info, + None, + SnapshotConfig::new_load_only(), + ); + let (snapshot_request_sender, snapshot_request_receiver) = crossbeam_channel::unbounded(); + let accounts_background_request_sender = AbsRequestSender::new(snapshot_request_sender.clone()); + let snapshot_request_handler = SnapshotRequestHandler { + snapshot_config: SnapshotConfig::new_load_only(), + snapshot_request_sender, + snapshot_request_receiver, + accounts_package_sender, + }; + let pruned_banks_receiver = + AccountsBackgroundService::setup_bank_drop_callback(bank_forks.clone()); + let pruned_banks_request_handler = PrunedBanksRequestHandler { + pruned_banks_receiver, + }; + let abs_request_handler = AbsRequestHandlers { + snapshot_request_handler, + pruned_banks_request_handler, + }; + let accounts_background_service = AccountsBackgroundService::new( + bank_forks.clone(), + exit.clone(), + abs_request_handler, + process_options.accounts_db_test_hash_calculation, + starting_snapshot_hashes.map(|x| x.full.0 .0), + ); + + let enable_rpc_transaction_history = arg_matches.is_present("enable_rpc_transaction_history"); + + let (transaction_status_sender, transaction_status_service) = if geyser_plugin_active + || enable_rpc_transaction_history + { + // Need Primary (R/W) access to insert transaction data; + // obtain Primary access if we do not already have it + let tss_blockstore = if enable_rpc_transaction_history && !blockstore.is_primary_access() { + Arc::new(open_blockstore( + blockstore.ledger_path(), + arg_matches, + AccessType::PrimaryForMaintenance, + )) + } else { + blockstore.clone() + }; + + let (transaction_status_sender, transaction_status_receiver) = unbounded(); + let transaction_status_service = TransactionStatusService::new( + transaction_status_receiver, + Arc::default(), + enable_rpc_transaction_history, + transaction_notifier, + tss_blockstore, + false, + exit.clone(), + ); + ( + Some(TransactionStatusSender { + sender: transaction_status_sender, + }), + Some(transaction_status_service), + ) + } else { + (None, None) + }; + + let result = blockstore_processor::process_blockstore_from_root( + blockstore.as_ref(), + &bank_forks, + &leader_schedule_cache, + &process_options, + transaction_status_sender.as_ref(), + None, + None, // Maybe support this later, though + &accounts_background_request_sender, + ) + .map(|_| (bank_forks, starting_snapshot_hashes)) + .map_err(LoadAndProcessLedgerError::ProcessBlockstoreFromRoot); + + exit.store(true, Ordering::Relaxed); + accounts_background_service.join().unwrap(); + accounts_hash_verifier.join().unwrap(); + if let Some(service) = transaction_status_service { + service.join().unwrap(); + } + + result +} + +pub fn open_blockstore( + ledger_path: &Path, + matches: &ArgMatches, + access_type: AccessType, +) -> Blockstore { + let wal_recovery_mode = matches + .value_of("wal_recovery_mode") + .map(BlockstoreRecoveryMode::from); + let force_update_to_open = matches.is_present("force_update_to_open"); + let enforce_ulimit_nofile = !matches.is_present("ignore_ulimit_nofile_error"); + let shred_storage_type = get_shred_storage_type( + ledger_path, + &format!( + "Shred storage type cannot be inferred for ledger at {ledger_path:?}, using default \ + RocksLevel", + ), + ); + + match Blockstore::open_with_options( + ledger_path, + BlockstoreOptions { + access_type: access_type.clone(), + recovery_mode: wal_recovery_mode.clone(), + enforce_ulimit_nofile, + column_options: LedgerColumnOptions { + shred_storage_type, + ..LedgerColumnOptions::default() + }, + }, + ) { + Ok(blockstore) => blockstore, + Err(BlockstoreError::RocksDb(err)) => { + // Missing essential file, indicative of blockstore not existing + let missing_blockstore = err + .to_string() + .starts_with("IO error: No such file or directory:"); + // Missing column in blockstore that is expected by software + let missing_column = err + .to_string() + .starts_with("Invalid argument: Column family not found:"); + // The blockstore settings with Primary access can resolve the + // above issues automatically, so only emit the help messages + // if access type is Secondary + let is_secondary = access_type == AccessType::Secondary; + + if missing_blockstore && is_secondary { + eprintln!( + "Failed to open blockstore at {ledger_path:?}, it is missing at least one \ + critical file: {err:?}" + ); + } else if missing_column && is_secondary { + eprintln!( + "Failed to open blockstore at {ledger_path:?}, it does not have all necessary \ + columns: {err:?}" + ); + } else { + eprintln!("Failed to open blockstore at {ledger_path:?}: {err:?}"); + exit(1); + } + if !force_update_to_open { + eprintln!("Use --force-update-to-open flag to attempt to update the blockstore"); + exit(1); + } + open_blockstore_with_temporary_primary_access( + ledger_path, + access_type, + wal_recovery_mode, + ) + .unwrap_or_else(|err| { + eprintln!( + "Failed to open blockstore (with --force-update-to-open) at {:?}: {:?}", + ledger_path, err + ); + exit(1); + }) + } + Err(err) => { + eprintln!("Failed to open blockstore at {ledger_path:?}: {err:?}"); + exit(1); + } + } +} + +pub fn get_shred_storage_type(ledger_path: &Path, message: &str) -> ShredStorageType { + // TODO: the following shred_storage_type inference must be updated once + // the rocksdb options can be constructed via load_options_file() as the + // value picked by passing None for `max_shred_storage_size` could affect + // the persisted rocksdb options file. + match ShredStorageType::from_ledger_path(ledger_path, None) { + Some(s) => s, + None => { + info!("{}", message); + ShredStorageType::RocksLevel + } + } +} + +/// Open blockstore with temporary primary access to allow necessary, +/// persistent changes to be made to the blockstore (such as creation of new +/// column family(s)). Then, continue opening with `original_access_type` +fn open_blockstore_with_temporary_primary_access( + ledger_path: &Path, + original_access_type: AccessType, + wal_recovery_mode: Option, +) -> Result { + // Open with Primary will allow any configuration that automatically + // updates to take effect + info!("Attempting to temporarily open blockstore with Primary access in order to update"); + { + let _ = Blockstore::open_with_options( + ledger_path, + BlockstoreOptions { + access_type: AccessType::PrimaryForMaintenance, + recovery_mode: wal_recovery_mode.clone(), + enforce_ulimit_nofile: true, + ..BlockstoreOptions::default() + }, + )?; + } + // Now, attempt to open the blockstore with original AccessType + info!( + "Blockstore forced open succeeded, retrying with original access: {:?}", + original_access_type + ); + Blockstore::open_with_options( + ledger_path, + BlockstoreOptions { + access_type: original_access_type, + recovery_mode: wal_recovery_mode, + enforce_ulimit_nofile: true, + ..BlockstoreOptions::default() + }, + ) +} + +pub fn open_genesis_config_by(ledger_path: &Path, matches: &ArgMatches<'_>) -> GenesisConfig { + const MAX_GENESIS_ARCHIVE_UNPACKED_SIZE: u64 = 10 * 1024 * 1024; // 10 MiB + let max_genesis_archive_unpacked_size = MAX_GENESIS_ARCHIVE_UNPACKED_SIZE; + + open_genesis_config(ledger_path, max_genesis_archive_unpacked_size).unwrap_or_else(|err| { + eprintln!("Exiting. Failed to open genesis config: {err}"); + exit(1); + }) +} + +pub fn get_program_ids(tx: &VersionedTransaction) -> impl Iterator + '_ { + let message = &tx.message; + let account_keys = message.static_account_keys(); + + message + .instructions() + .iter() + .map(|ix| ix.program_id(account_keys)) +} + +/// Get the AccessType required, based on `process_options` +pub(crate) fn get_access_type(process_options: &ProcessOptions) -> AccessType { + match process_options.use_snapshot_archives_at_startup { + UseSnapshotArchivesAtStartup::Always => AccessType::Secondary, + UseSnapshotArchivesAtStartup::Never => AccessType::PrimaryForMaintenance, + UseSnapshotArchivesAtStartup::WhenNewest => AccessType::PrimaryForMaintenance, + } +} diff --git a/tip-router-operator-cli/src/main.rs b/tip-router-operator-cli/src/main.rs index 05ef079e..5842ae60 100644 --- a/tip-router-operator-cli/src/main.rs +++ b/tip-router-operator-cli/src/main.rs @@ -3,7 +3,7 @@ use ::{ clap::Parser, ellipsis_client::{ClientSubset, EllipsisClient}, log::{error, info}, - solana_metrics::set_host_id, + solana_metrics::{datapoint_info, set_host_id}, solana_rpc_client::rpc_client::RpcClient, solana_sdk::{ clock::DEFAULT_SLOTS_PER_EPOCH, @@ -40,23 +40,7 @@ async fn main() -> Result<()> { let tx = Transaction::new_with_payer(&[ix], Some(&keypair.pubkey())); rpc_client.process_transaction(tx, &[&keypair]).await?; - info!( - "CLI Arguments: - keypair_path: {} - operator_address: {} - rpc_url: {} - ledger_path: {} - account_paths: {:?} - full_snapshots_path: {:?} - snapshot_output_dir: {}", - cli.keypair_path, - cli.operator_address, - cli.rpc_url, - cli.ledger_path.display(), - cli.account_paths, - cli.full_snapshots_path, - cli.snapshot_output_dir.display() - ); + info!("CLI Arguments: {:?}", cli); match cli.command { Commands::Run { From 26dc401763bcf8de6a205038b326b7348bf4861b Mon Sep 17 00:00:00 2001 From: Evan Batsell Date: Mon, 27 Jan 2025 16:54:56 -0500 Subject: [PATCH 6/6] Revert "copy over ledger utils fn" This reverts commit fe39a974edfd89e8d553256341818578b182376d. --- Cargo.lock | 1762 +++++------------ Cargo.toml | 20 - tip-router-operator-cli/Cargo.toml | 12 - tip-router-operator-cli/src/arg_matches.rs | 597 ------ tip-router-operator-cli/src/cli.rs | 6 +- tip-router-operator-cli/src/ledger_utils.rs | 20 - tip-router-operator-cli/src/lib.rs | 110 - .../src/load_and_process_ledger.rs | 586 ------ tip-router-operator-cli/src/main.rs | 20 +- 9 files changed, 484 insertions(+), 2649 deletions(-) delete mode 100644 tip-router-operator-cli/src/arg_matches.rs delete mode 100644 tip-router-operator-cli/src/load_and_process_ledger.rs diff --git a/Cargo.lock b/Cargo.lock index 3306828f..2667e172 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -42,7 +42,7 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cipher", "cpufeatures", "opaque-debug", @@ -80,7 +80,7 @@ version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "getrandom 0.2.15", "once_cell", "version_check", @@ -124,8 +124,8 @@ source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0 dependencies = [ "anchor-syn 0.24.2", "anyhow", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "regex", "syn 1.0.109", ] @@ -137,8 +137,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47fe28365b33e8334dd70ae2f34a43892363012fe239cf37d2ee91693575b1f8" dependencies = [ "anchor-syn 0.30.1", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -150,8 +150,8 @@ dependencies = [ "anchor-syn 0.24.2", "anyhow", "bs58 0.4.0", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "rustversion", "syn 1.0.109", ] @@ -164,8 +164,8 @@ checksum = "3c288d496168268d198d9b53ee9f4f9d260a55ba4df9877ea1d4486ad6109e0f" dependencies = [ "anchor-syn 0.30.1", "bs58 0.5.1", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -175,7 +175,7 @@ version = "0.24.2" source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" dependencies = [ "anchor-syn 0.24.2", - "proc-macro2 1.0.92", + "proc-macro2", "syn 1.0.109", ] @@ -186,7 +186,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49b77b6948d0eeaaa129ce79eea5bbbb9937375a9241d909ca8fb9e006bb6e90" dependencies = [ "anchor-syn 0.30.1", - "quote 1.0.38", + "quote", "syn 1.0.109", ] @@ -196,8 +196,8 @@ version = "0.24.2" source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" dependencies = [ "anchor-syn 0.24.2", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -208,7 +208,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d20bb569c5a557c86101b944721d865e1fd0a4c67c381d31a44a84f07f84828" dependencies = [ "anchor-syn 0.30.1", - "quote 1.0.38", + "quote", "syn 1.0.109", ] @@ -219,8 +219,8 @@ source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0 dependencies = [ "anchor-syn 0.24.2", "anyhow", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -231,8 +231,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cebd8d0671a3a9dc3160c48598d652c34c77de6be4d44345b8b514323284d57" dependencies = [ "anchor-syn 0.30.1", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -244,8 +244,8 @@ dependencies = [ "anchor-syn 0.24.2", "anyhow", "heck 0.3.3", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -256,8 +256,8 @@ source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0 dependencies = [ "anchor-syn 0.24.2", "anyhow", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -272,8 +272,8 @@ dependencies = [ "anyhow", "bs58 0.5.1", "heck 0.3.3", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "serde_json", "syn 1.0.109", ] @@ -285,8 +285,8 @@ source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0 dependencies = [ "anchor-syn 0.24.2", "anyhow", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -297,8 +297,8 @@ source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0 dependencies = [ "anchor-syn 0.24.2", "anyhow", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -309,7 +309,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "04368b5abef4266250ca8d1d12f4dff860242681e4ec22b885dcfe354fd35aa1" dependencies = [ "anchor-syn 0.30.1", - "quote 1.0.38", + "quote", "syn 1.0.109", ] @@ -321,8 +321,8 @@ checksum = "e0bb0e0911ad4a70cab880cdd6287fe1e880a1a9d8e4e6defa8e9044b9796a6c" dependencies = [ "anchor-syn 0.30.1", "borsh-derive-internal 0.10.4", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -332,8 +332,8 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ef415ff156dc82e9ecb943189b0cb241b3a6bfc26a180234dc21bd3ef3ce0cb" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -357,7 +357,7 @@ dependencies = [ "borsh 0.10.4", "bytemuck", "solana-program", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -383,7 +383,7 @@ dependencies = [ "bytemuck", "getrandom 0.2.15", "solana-program", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -419,14 +419,14 @@ dependencies = [ "anyhow", "bs58 0.3.1", "heck 0.3.3", - "proc-macro2 1.0.92", + "proc-macro2", "proc-macro2-diagnostics", - "quote 1.0.38", + "quote", "serde", "serde_json", "sha2 0.9.9", "syn 1.0.109", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -439,13 +439,13 @@ dependencies = [ "bs58 0.5.1", "cargo_toml 0.19.2", "heck 0.3.3", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "serde", "serde_json", "sha2 0.10.8", "syn 1.0.109", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -536,8 +536,8 @@ dependencies = [ "include_dir", "itertools 0.10.5", "proc-macro-error", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -601,7 +601,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" dependencies = [ - "quote 1.0.38", + "quote", "syn 1.0.109", ] @@ -613,8 +613,8 @@ checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ "num-bigint 0.4.6", "num-traits", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -649,8 +649,8 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -694,7 +694,7 @@ dependencies = [ "nom", "num-traits", "rusticata-macros", - "thiserror 1.0.69", + "thiserror", "time", ] @@ -704,8 +704,8 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", "synstructure 0.12.6", ] @@ -716,8 +716,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -778,8 +778,8 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -789,8 +789,8 @@ version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -838,7 +838,7 @@ dependencies = [ "matchit", "memchr", "mime", - "percent-encoding 2.3.1", + "percent-encoding", "pin-project-lite", "rustversion", "serde", @@ -886,7 +886,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cfg-if 1.0.0", + "cfg-if", "libc", "miniz_oxide", "object", @@ -946,8 +946,8 @@ dependencies = [ "lazycell", "peeking_take_while", "prettyplease 0.2.25", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "regex", "rustc-hash", "shlex", @@ -999,7 +999,7 @@ dependencies = [ "arrayref", "arrayvec", "cc", - "cfg-if 1.0.0", + "cfg-if", "constant_time_eq", "digest 0.10.7", ] @@ -1046,7 +1046,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "115e54d64eb62cdebad391c19efc9dce4981c690c85a33a12199d99bb9546fee" dependencies = [ "borsh-derive 0.10.4", - "hashbrown 0.13.2", + "hashbrown 0.12.3", ] [[package]] @@ -1068,7 +1068,7 @@ dependencies = [ "borsh-derive-internal 0.9.3", "borsh-schema-derive-internal 0.9.3", "proc-macro-crate 0.1.5", - "proc-macro2 1.0.92", + "proc-macro2", "syn 1.0.109", ] @@ -1081,7 +1081,7 @@ dependencies = [ "borsh-derive-internal 0.10.4", "borsh-schema-derive-internal 0.10.4", "proc-macro-crate 0.1.5", - "proc-macro2 1.0.92", + "proc-macro2", "syn 1.0.109", ] @@ -1093,8 +1093,8 @@ checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" dependencies = [ "once_cell", "proc-macro-crate 3.2.0", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -1104,8 +1104,8 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -1115,8 +1115,8 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65d6ba50644c98714aa2a70d13d7df3cd75cd2b523a2b452bf010443800976b3" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -1126,8 +1126,8 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -1137,8 +1137,8 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "276691d96f063427be83e6692b86148e488ebba9f48f77788724ca027ba3b6d4" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -1184,16 +1184,6 @@ dependencies = [ "tinyvec", ] -[[package]] -name = "bstr" -version = "1.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0" -dependencies = [ - "memchr", - "serde", -] - [[package]] name = "bumpalo" version = "3.16.0" @@ -1227,8 +1217,8 @@ version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -1247,8 +1237,8 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -1292,7 +1282,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "190baaad529bcfbde9e1a19022c42781bdb6ff9de25721abdb8fd98c0807730b" dependencies = [ "libc", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -1335,12 +1325,6 @@ dependencies = [ "nom", ] -[[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" @@ -1394,7 +1378,7 @@ checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", - "libloading 0.8.6", + "libloading", ] [[package]] @@ -1466,8 +1450,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck 0.5.0", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -1533,7 +1517,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "wasm-bindgen", ] @@ -1568,12 +1552,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" -[[package]] -name = "convert_case" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" - [[package]] name = "core-foundation" version = "0.9.4" @@ -1617,7 +1595,7 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -1721,8 +1699,8 @@ checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "strsim 0.11.1", "syn 2.0.93", ] @@ -1734,7 +1712,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", - "quote 1.0.38", + "quote", "syn 2.0.93", ] @@ -1744,7 +1722,7 @@ version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "hashbrown 0.14.5", "lock_api", "once_cell", @@ -1758,17 +1736,6 @@ version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" -[[package]] -name = "default-env" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f753eb82d29277e79efc625e84aecacfd4851ee50e05a8573a4740239a77bfd3" -dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "syn 0.15.44", -] - [[package]] name = "der" version = "0.5.1" @@ -1814,24 +1781,11 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] -[[package]] -name = "derive_more" -version = "0.99.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" -dependencies = [ - "convert_case", - "proc-macro2 1.0.92", - "quote 1.0.38", - "rustc_version", - "syn 2.0.93", -] - [[package]] name = "dialoguer" version = "0.10.4" @@ -1888,16 +1842,6 @@ dependencies = [ "dirs-sys", ] -[[package]] -name = "dirs-next" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" -dependencies = [ - "cfg-if 1.0.0", - "dirs-sys-next", -] - [[package]] name = "dirs-sys" version = "0.3.7" @@ -1909,25 +1853,14 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "dirs-sys-next" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" -dependencies = [ - "libc", - "redox_users", - "winapi 0.3.9", -] - [[package]] name = "displaydoc" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -1949,8 +1882,8 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -2014,8 +1947,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" dependencies = [ "enum-ordinalize", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -2042,7 +1975,7 @@ dependencies = [ "solana-program-test 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", "solana-transaction-status", - "thiserror 1.0.69", + "thiserror", "tokio", ] @@ -2058,7 +1991,7 @@ version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -2076,8 +2009,8 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -2089,8 +2022,8 @@ checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" dependencies = [ "num-bigint 0.4.6", "num-traits", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -2152,23 +2085,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.59.0", -] - -[[package]] -name = "etcd-client" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4b0ea5ef6dc2388a4b1669fa32097249bc03a15417b97cb75e38afb309e4a89" -dependencies = [ - "http", - "prost", - "tokio", - "tokio-stream", - "tonic", - "tonic-build", - "tower", - "tower-service", + "windows-sys 0.52.0", ] [[package]] @@ -2204,7 +2121,7 @@ version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "libredox", "windows-sys 0.59.0", @@ -2262,7 +2179,7 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ - "percent-encoding 2.3.1", + "percent-encoding", ] [[package]] @@ -2283,12 +2200,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" -[[package]] -name = "futures" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" - [[package]] name = "futures" version = "0.3.31" @@ -2329,7 +2240,6 @@ dependencies = [ "futures-core", "futures-task", "futures-util", - "num_cpus", ] [[package]] @@ -2344,8 +2254,8 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -2367,7 +2277,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ - "futures 0.1.31", "futures-channel", "futures-core", "futures-io", @@ -2407,7 +2316,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "libc", "wasi 0.9.0+wasi-snapshot-preview1", @@ -2420,7 +2329,7 @@ version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", @@ -2439,19 +2348,6 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" -[[package]] -name = "globset" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" -dependencies = [ - "aho-corasick", - "bstr", - "log", - "regex-automata", - "regex-syntax", -] - [[package]] name = "goauth" version = "0.13.1" @@ -2459,7 +2355,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8af59a261bcf42f45d1b261232847b9b850ba0a1419d6100698246fb66e9240" dependencies = [ "arc-swap", - "futures 0.3.31", + "futures", "log", "reqwest", "serde", @@ -2740,7 +2636,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca815a891b24fdfb243fa3239c86154392b0953ee584aa1a2a1f66d20cbe75cc" dependencies = [ "bytes", - "futures 0.3.31", + "futures", "headers", "http", "hyper", @@ -2926,8 +2822,8 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -2937,17 +2833,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" -[[package]] -name = "idna" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "idna" version = "1.0.3" @@ -3006,8 +2891,8 @@ version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", ] [[package]] @@ -3058,7 +2943,7 @@ version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", ] [[package]] @@ -3113,8 +2998,8 @@ name = "jito-account-traits-derive" version = "0.0.3" source = "git+https://github.com/jito-foundation/restaking.git?rev=eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d#eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -3142,32 +3027,7 @@ dependencies = [ "spl-associated-token-account", "spl-token 4.0.0", "spl-token-2022 3.0.5", - "thiserror 1.0.69", -] - -[[package]] -name = "jito-programs-vote-state" -version = "0.1.5" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" -dependencies = [ - "anchor-lang 0.24.2", - "bincode", - "serde", - "serde_derive", - "solana-program", -] - -[[package]] -name = "jito-protos" -version = "1.18.26" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" -dependencies = [ - "bytes", - "prost", - "prost-types", - "protobuf-src", - "tonic", - "tonic-build", + "thiserror", ] [[package]] @@ -3184,7 +3044,7 @@ dependencies = [ "serde_with 3.12.0", "solana-program", "solana-sdk", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -3201,7 +3061,7 @@ dependencies = [ "solana-program", "spl-associated-token-account", "spl-token 4.0.0", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -3210,7 +3070,7 @@ version = "0.0.3" source = "git+https://github.com/jito-foundation/restaking.git?rev=eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d#eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d" dependencies = [ "borsh 0.10.4", - "cfg-if 1.0.0", + "cfg-if", "const_str_to_pubkey", "jito-bytemuck", "jito-jsm-core", @@ -3223,7 +3083,7 @@ dependencies = [ "spl-associated-token-account", "spl-token 4.0.0", "spl-token-2022 3.0.5", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -3234,19 +3094,7 @@ dependencies = [ "borsh 0.10.4", "shank", "solana-program", - "thiserror 1.0.69", -] - -[[package]] -name = "jito-tip-distribution" -version = "0.1.5" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" -dependencies = [ - "anchor-lang 0.24.2", - "default-env", - "jito-programs-vote-state", - "solana-program", - "solana-security-txt", + "thiserror", ] [[package]] @@ -3256,16 +3104,6 @@ dependencies = [ "anchor-lang 0.30.1", ] -[[package]] -name = "jito-tip-payment" -version = "0.1.5" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" -dependencies = [ - "anchor-lang 0.24.2", - "default-env", - "solana-security-txt", -] - [[package]] name = "jito-tip-payment-sdk" version = "0.0.1" @@ -3286,7 +3124,7 @@ dependencies = [ "clap-markdown", "dotenv", "env_logger 0.10.2", - "futures 0.3.31", + "futures", "jito-bytemuck", "jito-jsm-core", "jito-restaking-client", @@ -3312,7 +3150,7 @@ dependencies = [ "spl-associated-token-account", "spl-stake-pool", "spl-token 4.0.0", - "thiserror 1.0.69", + "thiserror", "tokio", ] @@ -3330,7 +3168,7 @@ dependencies = [ "serde_with 3.12.0", "solana-program", "solana-sdk", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -3354,7 +3192,7 @@ dependencies = [ "spl-associated-token-account", "spl-math", "spl-token 4.0.0", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -3386,7 +3224,7 @@ dependencies = [ "spl-associated-token-account", "spl-stake-pool", "spl-token 4.0.0", - "thiserror 1.0.69", + "thiserror", "tokio", ] @@ -3397,7 +3235,7 @@ dependencies = [ "assert_matches", "borsh 0.10.4", "bytemuck", - "cfg-if 1.0.0", + "cfg-if", "const_str_to_pubkey", "jito-bytemuck", "jito-jsm-core", @@ -3416,7 +3254,7 @@ dependencies = [ "spl-stake-pool", "spl-token 4.0.0", "switchboard-on-demand", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -3446,7 +3284,7 @@ dependencies = [ "serde_with 3.12.0", "solana-program", "solana-sdk", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -3464,7 +3302,7 @@ dependencies = [ "spl-associated-token-account", "spl-token 4.0.0", "spl-token-2022 3.0.5", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -3473,7 +3311,7 @@ version = "0.0.3" source = "git+https://github.com/jito-foundation/restaking.git?rev=eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d#eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d" dependencies = [ "borsh 0.10.4", - "cfg-if 1.0.0", + "cfg-if", "const_str_to_pubkey", "jito-bytemuck", "jito-jsm-core", @@ -3486,7 +3324,7 @@ dependencies = [ "spl-associated-token-account", "spl-token 4.0.0", "spl-token-2022 3.0.5", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -3498,7 +3336,7 @@ dependencies = [ "shank", "solana-program", "spl-token 4.0.0", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -3520,43 +3358,13 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "json5" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" -dependencies = [ - "pest", - "pest_derive", - "serde", -] - -[[package]] -name = "jsonrpc-client-transports" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b99d4207e2a04fb4581746903c2bb7eb376f88de9c699d0f3e10feeac0cd3a" -dependencies = [ - "derive_more", - "futures 0.3.31", - "jsonrpc-core", - "jsonrpc-pubsub", - "jsonrpc-server-utils", - "log", - "parity-tokio-ipc", - "serde", - "serde_json", - "tokio", - "url 1.7.2", -] - [[package]] name = "jsonrpc-core" version = "18.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14f7f76aef2d054868398427f6c54943cf3d1caa9a7ec7d0c38d69df97a965eb" dependencies = [ - "futures 0.3.31", + "futures", "futures-executor", "futures-util", "log", @@ -3565,92 +3373,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "jsonrpc-core-client" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b51da17abecbdab3e3d4f26b01c5ec075e88d3abe3ab3b05dc9aa69392764ec0" -dependencies = [ - "futures 0.3.31", - "jsonrpc-client-transports", -] - -[[package]] -name = "jsonrpc-derive" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b939a78fa820cdfcb7ee7484466746a7377760970f6f9c6fe19f9edcc8a38d2" -dependencies = [ - "proc-macro-crate 0.1.5", - "proc-macro2 1.0.92", - "quote 1.0.38", - "syn 1.0.109", -] - -[[package]] -name = "jsonrpc-http-server" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1dea6e07251d9ce6a552abfb5d7ad6bc290a4596c8dcc3d795fae2bbdc1f3ff" -dependencies = [ - "futures 0.3.31", - "hyper", - "jsonrpc-core", - "jsonrpc-server-utils", - "log", - "net2", - "parking_lot 0.11.2", - "unicase", -] - -[[package]] -name = "jsonrpc-ipc-server" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382bb0206323ca7cda3dcd7e245cea86d37d02457a02a975e3378fb149a48845" -dependencies = [ - "futures 0.3.31", - "jsonrpc-core", - "jsonrpc-server-utils", - "log", - "parity-tokio-ipc", - "parking_lot 0.11.2", - "tower-service", -] - -[[package]] -name = "jsonrpc-pubsub" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "240f87695e6c6f62fb37f05c02c04953cf68d6408b8c1c89de85c7a0125b1011" -dependencies = [ - "futures 0.3.31", - "jsonrpc-core", - "lazy_static", - "log", - "parking_lot 0.11.2", - "rand 0.7.3", - "serde", -] - -[[package]] -name = "jsonrpc-server-utils" -version = "18.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4fdea130485b572c39a460d50888beb00afb3e35de23ccd7fad8ff19f0e0d4" -dependencies = [ - "bytes", - "futures 0.3.31", - "globset", - "jsonrpc-core", - "lazy_static", - "log", - "tokio", - "tokio-stream", - "tokio-util 0.6.10", - "unicase", -] - [[package]] name = "keccak" version = "0.1.5" @@ -3688,24 +3410,14 @@ version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if 1.0.0", - "winapi 0.3.9", -] - [[package]] name = "libloading" version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ - "cfg-if 1.0.0", - "windows-targets 0.52.6", + "cfg-if", + "windows-targets 0.48.5", ] [[package]] @@ -3856,7 +3568,7 @@ dependencies = [ "ark-bn254", "ark-ff", "num-bigint 0.4.6", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -3918,12 +3630,6 @@ dependencies = [ "libc", ] -[[package]] -name = "matches" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" - [[package]] name = "matchit" version = "0.7.3" @@ -4002,7 +3708,7 @@ dependencies = [ "spl-associated-token-account", "spl-math", "spl-token 4.0.0", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -4011,12 +3717,6 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" -[[package]] -name = "min-max-heap" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2687e6cf9c00f48e9284cf9fd15f2ef341d03cc7743abf9df4c5f07fdee50b18" - [[package]] name = "minimal-lexical" version = "0.2.1" @@ -4049,7 +3749,7 @@ version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "downcast", "fragile", "lazy_static", @@ -4064,9 +3764,9 @@ version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" dependencies = [ - "cfg-if 1.0.0", - "proc-macro2 1.0.92", - "quote 1.0.38", + "cfg-if", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -4086,8 +3786,8 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a7d5f7076603ebc68de2dc6a650ec331a062a13abaa346975be747bbfa4b789" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -4114,17 +3814,6 @@ dependencies = [ "tempfile", ] -[[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 0.3.9", -] - [[package]] name = "nix" version = "0.26.4" @@ -4132,7 +3821,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" dependencies = [ "bitflags 1.3.2", - "cfg-if 1.0.0", + "cfg-if", "libc", "memoffset 0.7.1", "pin-utils", @@ -4234,8 +3923,8 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -4245,8 +3934,8 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -4346,8 +4035,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -4358,8 +4047,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -4369,9 +4058,9 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ - "proc-macro-crate 3.2.0", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro-crate 1.3.1", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -4418,7 +4107,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ "bitflags 2.6.0", - "cfg-if 1.0.0", + "cfg-if", "foreign-types", "libc", "once_cell", @@ -4432,8 +4121,8 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -4478,10 +4167,10 @@ dependencies = [ "futures-util", "js-sys", "lazy_static", - "percent-encoding 2.3.1", + "percent-encoding", "pin-project", "rand 0.8.5", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -4508,25 +4197,11 @@ checksum = "5f7d21ccd03305a674437ee1248f3ab5d4b1db095cf1caf49f1713ddf61956b7" dependencies = [ "Inflector", "proc-macro-error", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] -[[package]] -name = "parity-tokio-ipc" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9981e32fb75e004cc148f5fb70342f393830e0a4aa62e3cc93b50976218d42b6" -dependencies = [ - "futures 0.3.31", - "libc", - "log", - "rand 0.7.3", - "tokio", - "winapi 0.3.9", -] - [[package]] name = "parking_lot" version = "0.11.2" @@ -4554,7 +4229,7 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "instant", "libc", "redox_syscall 0.2.16", @@ -4568,7 +4243,7 @@ version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "libc", "redox_syscall 0.5.8", "smallvec", @@ -4614,12 +4289,6 @@ dependencies = [ "base64 0.13.1", ] -[[package]] -name = "percent-encoding" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" - [[package]] name = "percent-encoding" version = "2.3.1" @@ -4636,77 +4305,32 @@ dependencies = [ ] [[package]] -name = "pest" -version = "2.7.15" +name = "petgraph" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ - "memchr", - "thiserror 2.0.11", - "ucd-trie", + "fixedbitset", + "indexmap 2.7.0", ] [[package]] -name = "pest_derive" -version = "2.7.15" +name = "pin-project" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e" +checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" dependencies = [ - "pest", - "pest_generator", + "pin-project-internal", ] [[package]] -name = "pest_generator" -version = "2.7.15" +name = "pin-project-internal" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b" +checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ - "pest", - "pest_meta", - "proc-macro2 1.0.92", - "quote 1.0.38", - "syn 2.0.93", -] - -[[package]] -name = "pest_meta" -version = "2.7.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea" -dependencies = [ - "once_cell", - "pest", - "sha2 0.10.8", -] - -[[package]] -name = "petgraph" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" -dependencies = [ - "fixedbitset", - "indexmap 2.7.0", -] - -[[package]] -name = "pin-project" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be57f64e946e500c8ee36ef6331845d40a93055567ec57e8fae13efd33759b95" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" -dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -4751,7 +4375,7 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "opaque-debug", "universal-hash", @@ -4814,7 +4438,7 @@ version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" dependencies = [ - "proc-macro2 1.0.92", + "proc-macro2", "syn 1.0.109", ] @@ -4824,16 +4448,10 @@ version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ - "proc-macro2 1.0.92", + "proc-macro2", "syn 2.0.93", ] -[[package]] -name = "prio-graph" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6492a75ca57066a4479af45efa302bed448680182b0563f96300645d5f896097" - [[package]] name = "proc-macro-crate" version = "0.1.5" @@ -4869,8 +4487,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", "version_check", ] @@ -4881,20 +4499,11 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "version_check", ] -[[package]] -name = "proc-macro2" -version = "0.4.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" -dependencies = [ - "unicode-xid 0.1.0", -] - [[package]] name = "proc-macro2" version = "1.0.92" @@ -4910,8 +4519,8 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4bf29726d67464d49fa6224a1d07936a8c08bb3fba727c7493f6cf1616fdaada" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", "version_check", "yansi", @@ -4957,8 +4566,8 @@ checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", "itertools 0.10.5", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -4995,8 +4604,8 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -5006,7 +4615,7 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d464fae65fff2680baf48019211ce37aaec0c78e9264c84a3e484717f965104e" dependencies = [ - "percent-encoding 2.3.1", + "percent-encoding", ] [[package]] @@ -5015,8 +4624,8 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -5032,7 +4641,7 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "thiserror 1.0.69", + "thiserror", "tokio", "tracing", ] @@ -5050,7 +4659,7 @@ dependencies = [ "rustls", "rustls-native-certs", "slab", - "thiserror 1.0.69", + "thiserror", "tinyvec", "tracing", ] @@ -5068,22 +4677,13 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "quote" -version = "0.6.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" -dependencies = [ - "proc-macro2 0.4.30", -] - [[package]] name = "quote" version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ - "proc-macro2 1.0.92", + "proc-macro2", ] [[package]] @@ -5230,7 +4830,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom 0.2.15", "libredox", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -5310,7 +4910,7 @@ dependencies = [ "mime", "native-tls", "once_cell", - "percent-encoding 2.3.1", + "percent-encoding", "pin-project-lite", "rustls", "rustls-pemfile", @@ -5324,7 +4924,7 @@ dependencies = [ "tokio-rustls", "tokio-util 0.7.13", "tower-service", - "url 2.5.4", + "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -5354,7 +4954,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", - "cfg-if 1.0.0", + "cfg-if", "getrandom 0.2.15", "libc", "spin 0.9.8", @@ -5386,8 +4986,8 @@ version = "0.7.45" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -5401,15 +5001,6 @@ dependencies = [ "librocksdb-sys", ] -[[package]] -name = "rolling-file" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8395b4f860856b740f20a296ea2cd4d823e81a2658cf05ef61be22916026a906" -dependencies = [ - "chrono", -] - [[package]] name = "rpassword" version = "7.3.1" @@ -5487,7 +5078,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -5584,8 +5175,8 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -5676,8 +5267,8 @@ version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -5758,8 +5349,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "881b6f881b17d13214e5d494c939ebab463d01264ce1811e9d4ac3a882e7695f" dependencies = [ "darling", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -5770,44 +5361,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d00caa5193a3c8362ac2b73be6b9e768aa5a4b2f721d8f4b339600c3cb51f8e" dependencies = [ "darling", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] -[[package]] -name = "serde_yaml" -version = "0.9.34+deprecated" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" -dependencies = [ - "indexmap 2.7.0", - "itoa", - "ryu", - "serde", - "unsafe-libyaml", -] - -[[package]] -name = "sha-1" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if 1.0.0", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - [[package]] name = "sha1" version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest 0.10.7", ] @@ -5819,7 +5384,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" dependencies = [ "block-buffer 0.9.0", - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest 0.9.0", "opaque-debug", @@ -5831,7 +5396,7 @@ version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "cpufeatures", "digest 0.10.7", ] @@ -5888,8 +5453,8 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9bf2645f8eebde043da69200195058e7b59806705104f908a31d05ca82844ce" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "shank_macro_impl", "shank_render", "syn 1.0.109", @@ -5902,8 +5467,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "93d0593f48acb0a722906416b1f6b8926f6571eb9af16d566a7c65427f269f50" dependencies = [ "anyhow", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "serde", "syn 1.0.109", ] @@ -5914,8 +5479,8 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "121175ba61809189f888dc5822ebfd30fa0d91e1e1f61d25a4d40b0847b3075e" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "shank_macro_impl", ] @@ -6042,21 +5607,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "soketto" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" -dependencies = [ - "base64 0.13.1", - "bytes", - "futures 0.3.31", - "httparse", - "log", - "rand 0.8.5", - "sha-1", -] - [[package]] name = "solana-account-decoder" version = "1.18.26" @@ -6078,7 +5628,7 @@ dependencies = [ "spl-token-2022 1.0.0", "spl-token-group-interface 0.1.0", "spl-token-metadata-interface 0.2.0", - "thiserror 1.0.69", + "thiserror", "zstd", ] @@ -6102,7 +5652,7 @@ dependencies = [ "spl-token-2022 1.0.0", "spl-token-group-interface 0.1.0", "spl-token-metadata-interface 0.2.0", - "thiserror 1.0.69", + "thiserror", "zstd", ] @@ -6150,7 +5700,7 @@ dependencies = [ "solana-config-program 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-frozen-abi 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-frozen-abi-macro 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-measure", + "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-nohash-hasher", "solana-program-runtime 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -6164,7 +5714,7 @@ dependencies = [ "strum_macros", "tar", "tempfile", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -6210,7 +5760,7 @@ dependencies = [ "solana-config-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-frozen-abi 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-nohash-hasher", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", @@ -6224,7 +5774,7 @@ dependencies = [ "strum_macros", "tar", "tempfile", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -6245,7 +5795,7 @@ dependencies = [ "solana-program", "solana-program-runtime 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -6265,7 +5815,7 @@ dependencies = [ "solana-program", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -6275,12 +5825,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e58fa66e1e240097665e7f87b267aa8e976ea3fcbd86918c8fd218c875395ada" dependencies = [ "borsh 1.5.3", - "futures 0.3.31", + "futures", "solana-banks-interface 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-program", "solana-sdk", "tarpc", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-serde", ] @@ -6291,12 +5841,12 @@ version = "1.18.26" source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" dependencies = [ "borsh 1.5.3", - "futures 0.3.31", + "futures", "solana-banks-interface 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-program", "solana-sdk", "tarpc", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-serde", ] @@ -6330,7 +5880,7 @@ checksum = "8cbe287a0f859362de9b155fabd44e479eba26d5d80e07a7d021297b7b06ecba" dependencies = [ "bincode", "crossbeam-channel", - "futures 0.3.31", + "futures", "solana-accounts-db 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-banks-interface 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -6349,7 +5899,7 @@ source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0 dependencies = [ "bincode", "crossbeam-channel", - "futures 0.3.31", + "futures", "solana-accounts-db 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-banks-interface 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", @@ -6391,12 +5941,12 @@ dependencies = [ "libsecp256k1 0.6.0", "log", "scopeguard", - "solana-measure", + "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-program-runtime 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", "solana-zk-token-sdk 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana_rbpf", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -6409,12 +5959,12 @@ dependencies = [ "libsecp256k1 0.6.0", "log", "scopeguard", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", "solana-zk-token-sdk 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana_rbpf", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -6430,7 +5980,7 @@ dependencies = [ "modular-bitfield", "num_enum 0.7.3", "rand 0.8.5", - "solana-measure", + "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", "tempfile", ] @@ -6447,7 +5997,7 @@ dependencies = [ "modular-bitfield", "num_enum 0.7.3", "rand 0.8.5", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", "tempfile", ] @@ -6464,13 +6014,13 @@ dependencies = [ "solana-accounts-db 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-ledger", "solana-logger 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-poh", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", "solana-transaction-status", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -6484,10 +6034,10 @@ dependencies = [ "rpassword", "solana-remote-wallet 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", - "thiserror 1.0.69", + "thiserror", "tiny-bip39", "uriparse", - "url 2.5.4", + "url", ] [[package]] @@ -6500,25 +6050,10 @@ dependencies = [ "rpassword", "solana-remote-wallet 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "thiserror 1.0.69", + "thiserror", "tiny-bip39", "uriparse", - "url 2.5.4", -] - -[[package]] -name = "solana-cli-config" -version = "1.18.26" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" -dependencies = [ - "dirs-next", - "lazy_static", - "serde", - "serde_derive", - "serde_yaml", - "solana-clap-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-sdk", - "url 2.5.4", + "url", ] [[package]] @@ -6530,7 +6065,7 @@ dependencies = [ "async-trait", "bincode", "dashmap", - "futures 0.3.31", + "futures", "futures-util", "indexmap 2.7.0", "indicatif", @@ -6538,7 +6073,7 @@ dependencies = [ "quinn", "rayon", "solana-connection-cache 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-measure", + "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-pubsub-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-quic-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -6546,11 +6081,11 @@ dependencies = [ "solana-rpc-client-api", "solana-rpc-client-nonce-utils 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", - "solana-streamer", + "solana-streamer 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-thin-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-tpu-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-udp-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.69", + "thiserror", "tokio", ] @@ -6562,7 +6097,7 @@ dependencies = [ "async-trait", "bincode", "dashmap", - "futures 0.3.31", + "futures", "futures-util", "indexmap 2.7.0", "indicatif", @@ -6570,7 +6105,7 @@ dependencies = [ "quinn", "rayon", "solana-connection-cache 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-pubsub-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-quic-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", @@ -6578,11 +6113,11 @@ dependencies = [ "solana-rpc-client-api", "solana-rpc-client-nonce-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "solana-streamer", + "solana-streamer 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-thin-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-tpu-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-udp-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "thiserror 1.0.69", + "thiserror", "tokio", ] @@ -6647,10 +6182,10 @@ dependencies = [ "rand 0.8.5", "rayon", "rcgen", - "solana-measure", + "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", - "thiserror 1.0.69", + "thiserror", "tokio", ] @@ -6668,97 +6203,11 @@ dependencies = [ "rand 0.8.5", "rayon", "rcgen", - "solana-measure", - "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-sdk", - "thiserror 1.0.69", - "tokio", -] - -[[package]] -name = "solana-core" -version = "1.18.26" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" -dependencies = [ - "anchor-lang 0.24.2", - "base64 0.21.7", - "bincode", - "bs58 0.4.0", - "bytes", - "chrono", - "crossbeam-channel", - "dashmap", - "eager", - "etcd-client", - "futures 0.3.31", - "histogram", - "itertools 0.10.5", - "jito-protos", - "jito-tip-distribution", - "jito-tip-payment", - "lazy_static", - "log", - "lru", - "min-max-heap", - "num_enum 0.7.3", - "prio-graph", - "prost", - "prost-types", - "quinn", - "rand 0.8.5", - "rand_chacha 0.3.1", - "rayon", - "rcgen", - "rolling-file", - "rustc_version", - "rustls", - "serde", - "serde_bytes", - "serde_derive", - "solana-accounts-db 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-bloom", - "solana-bundle", - "solana-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-cost-model 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-entry", - "solana-frozen-abi 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-geyser-plugin-manager", - "solana-gossip", - "solana-ledger", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-net-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-poh", - "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-quic-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-rayon-threadlimit 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-rpc", - "solana-rpc-client-api", - "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-runtime-plugin", "solana-sdk", - "solana-send-transaction-service 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-streamer", - "solana-tpu-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-transaction-status", - "solana-turbine", - "solana-unified-scheduler-pool", - "solana-version 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-vote 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-vote-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-wen-restart", - "strum", - "strum_macros", - "sys-info", - "sysctl", - "tempfile", - "thiserror 1.0.69", + "thiserror", "tokio", - "tonic", - "tonic-build", - "trees", ] [[package]] @@ -6821,7 +6270,7 @@ dependencies = [ "rand 0.8.5", "rayon", "serde", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-merkle-tree", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", @@ -6829,29 +6278,6 @@ dependencies = [ "solana-sdk", ] -[[package]] -name = "solana-faucet" -version = "1.18.26" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" -dependencies = [ - "bincode", - "byteorder", - "clap 2.34.0", - "crossbeam-channel", - "log", - "serde", - "serde_derive", - "solana-clap-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-cli-config", - "solana-logger 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-sdk", - "solana-version 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "spl-memo", - "thiserror 1.0.69", - "tokio", -] - [[package]] name = "solana-frozen-abi" version = "1.18.26" @@ -6874,7 +6300,7 @@ dependencies = [ "sha2 0.10.8", "solana-frozen-abi-macro 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "subtle", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -6898,7 +6324,7 @@ dependencies = [ "sha2 0.10.8", "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "subtle", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -6907,8 +6333,8 @@ version = "1.18.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c142f779c3633ac83c84d04ff06c70e1f558c876f13358bed77ba629c7417932" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "rustc_version", "syn 2.0.93", ] @@ -6918,49 +6344,12 @@ name = "solana-frozen-abi-macro" version = "1.18.26" source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "rustc_version", "syn 2.0.93", ] -[[package]] -name = "solana-geyser-plugin-interface" -version = "1.18.26" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" -dependencies = [ - "log", - "solana-sdk", - "solana-transaction-status", - "thiserror 1.0.69", -] - -[[package]] -name = "solana-geyser-plugin-manager" -version = "1.18.26" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" -dependencies = [ - "bs58 0.4.0", - "crossbeam-channel", - "json5", - "jsonrpc-core", - "jsonrpc-server-utils", - "libloading 0.7.4", - "log", - "serde_json", - "solana-accounts-db 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-entry", - "solana-geyser-plugin-interface", - "solana-ledger", - "solana-measure", - "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-rpc", - "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-sdk", - "solana-transaction-status", - "thiserror 1.0.69", -] - [[package]] name = "solana-gossip" version = "1.18.26" @@ -6993,21 +6382,21 @@ dependencies = [ "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-ledger", "solana-logger 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-net-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-rayon-threadlimit 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "solana-streamer", + "solana-streamer 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-thin-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-tpu-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-version 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-vote 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-vote-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "static_assertions", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -7024,7 +6413,7 @@ dependencies = [ "crossbeam-channel", "dashmap", "fs_extra", - "futures 0.3.31", + "futures", "itertools 0.10.5", "lazy_static", "libc", @@ -7052,7 +6441,7 @@ dependencies = [ "solana-entry", "solana-frozen-abi 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", @@ -7071,7 +6460,7 @@ dependencies = [ "strum", "strum_macros", "tempfile", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-stream", "trees", @@ -7084,7 +6473,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b58f70f5883b0f26a6011ed23f76c493a3f22df63aec46cfe8e1b9bf82b5cc" dependencies = [ "log", - "solana-measure", + "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-program-runtime 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", "solana_rbpf", @@ -7096,7 +6485,7 @@ version = "1.18.26" source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" dependencies = [ "log", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", "solana_rbpf", @@ -7123,6 +6512,16 @@ dependencies = [ "log", ] +[[package]] +name = "solana-measure" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c01a7f9cdc9d9d37a3d5651b2fe7ec9d433c2a3470b9f35897e373b421f0737" +dependencies = [ + "log", + "solana-sdk", +] + [[package]] name = "solana-measure" version = "1.18.26" @@ -7153,7 +6552,7 @@ dependencies = [ "log", "reqwest", "solana-sdk", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -7167,7 +6566,7 @@ dependencies = [ "log", "reqwest", "solana-sdk", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -7189,7 +6588,7 @@ dependencies = [ "solana-sdk", "solana-version 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "tokio", - "url 2.5.4", + "url", ] [[package]] @@ -7210,7 +6609,7 @@ dependencies = [ "solana-sdk", "solana-version 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "tokio", - "url 2.5.4", + "url", ] [[package]] @@ -7286,11 +6685,11 @@ dependencies = [ "log", "solana-entry", "solana-ledger", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -7341,7 +6740,7 @@ dependencies = [ "solana-frozen-abi 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk-macro", - "thiserror 1.0.69", + "thiserror", "tiny-bip39", "wasm-bindgen", "zeroize", @@ -7368,11 +6767,11 @@ dependencies = [ "serde", "solana-frozen-abi 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-frozen-abi-macro 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-measure", + "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", "solana_rbpf", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -7395,11 +6794,11 @@ dependencies = [ "serde", "solana-frozen-abi 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", "solana_rbpf", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -7428,7 +6827,7 @@ dependencies = [ "solana-vote-program 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana_rbpf", "test-case", - "thiserror 1.0.69", + "thiserror", "tokio", ] @@ -7457,7 +6856,7 @@ dependencies = [ "solana-vote-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana_rbpf", "test-case", - "thiserror 1.0.69", + "thiserror", "tokio", ] @@ -7478,12 +6877,12 @@ dependencies = [ "solana-account-decoder 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-rpc-client-api", "solana-sdk", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-stream", "tokio-tungstenite", "tungstenite", - "url 2.5.4", + "url", ] [[package]] @@ -7502,12 +6901,12 @@ dependencies = [ "solana-account-decoder 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-rpc-client-api", "solana-sdk", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-stream", "tokio-tungstenite", "tungstenite", - "url 2.5.4", + "url", ] [[package]] @@ -7518,7 +6917,7 @@ checksum = "5a90e40ee593f6e9ddd722d296df56743514ae804975a76d47e7afed4e3da244" dependencies = [ "async-mutex", "async-trait", - "futures 0.3.31", + "futures", "itertools 0.10.5", "lazy_static", "log", @@ -7527,13 +6926,13 @@ dependencies = [ "rcgen", "rustls", "solana-connection-cache 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-measure", + "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-net-utils 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-rpc-client-api", "solana-sdk", - "solana-streamer", - "thiserror 1.0.69", + "solana-streamer 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror", "tokio", ] @@ -7544,7 +6943,7 @@ source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0 dependencies = [ "async-mutex", "async-trait", - "futures 0.3.31", + "futures", "itertools 0.10.5", "lazy_static", "log", @@ -7553,13 +6952,13 @@ dependencies = [ "rcgen", "rustls", "solana-connection-cache 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-net-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-rpc-client-api", "solana-sdk", - "solana-streamer", - "thiserror 1.0.69", + "solana-streamer 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "thiserror", "tokio", ] @@ -7597,7 +6996,7 @@ dependencies = [ "qstring", "semver", "solana-sdk", - "thiserror 1.0.69", + "thiserror", "uriparse", ] @@ -7615,68 +7014,10 @@ dependencies = [ "qstring", "semver", "solana-sdk", - "thiserror 1.0.69", + "thiserror", "uriparse", ] -[[package]] -name = "solana-rpc" -version = "1.18.26" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" -dependencies = [ - "base64 0.21.7", - "bincode", - "bs58 0.4.0", - "crossbeam-channel", - "dashmap", - "itertools 0.10.5", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "jsonrpc-http-server", - "jsonrpc-pubsub", - "libc", - "log", - "rayon", - "regex", - "serde", - "serde_derive", - "serde_json", - "soketto", - "solana-account-decoder 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-accounts-db 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-bundle", - "solana-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-entry", - "solana-faucet", - "solana-gossip", - "solana-ledger", - "solana-measure", - "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-poh", - "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-rayon-threadlimit 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-rpc-client-api", - "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-sdk", - "solana-send-transaction-service 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-stake-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-storage-bigtable", - "solana-streamer", - "solana-tpu-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-transaction-status", - "solana-version 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-vote 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-vote-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "spl-token 4.0.0", - "spl-token-2022 1.0.0", - "stream-cancel", - "thiserror 1.0.69", - "tokio", - "tokio-util 0.6.10", -] - [[package]] name = "solana-rpc-client" version = "1.18.26" @@ -7722,7 +7063,7 @@ dependencies = [ "solana-transaction-status", "solana-version 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "spl-token-2022 1.0.0", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -7735,7 +7076,7 @@ dependencies = [ "solana-clap-utils 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-rpc-client", "solana-sdk", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -7747,7 +7088,7 @@ dependencies = [ "solana-clap-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-rpc-client", "solana-sdk", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -7804,7 +7145,7 @@ dependencies = [ "solana-frozen-abi 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-frozen-abi-macro 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-loader-v4-program 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-measure", + "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-perf 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-program-runtime 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", @@ -7823,7 +7164,7 @@ dependencies = [ "symlink", "tar", "tempfile", - "thiserror 1.0.69", + "thiserror", "zstd", ] @@ -7880,7 +7221,7 @@ dependencies = [ "solana-frozen-abi 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-loader-v4-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", @@ -7899,29 +7240,10 @@ dependencies = [ "symlink", "tar", "tempfile", - "thiserror 1.0.69", + "thiserror", "zstd", ] -[[package]] -name = "solana-runtime-plugin" -version = "1.18.26" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" -dependencies = [ - "crossbeam-channel", - "json5", - "jsonrpc-core", - "jsonrpc-core-client", - "jsonrpc-derive", - "jsonrpc-ipc-server", - "jsonrpc-server-utils", - "libloading 0.7.4", - "log", - "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-sdk", - "thiserror 1.0.69", -] - [[package]] name = "solana-sdk" version = "1.18.26" @@ -7972,7 +7294,7 @@ dependencies = [ "solana-logger 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-program", "solana-sdk-macro", - "thiserror 1.0.69", + "thiserror", "uriparse", "wasm-bindgen", ] @@ -7983,8 +7305,8 @@ version = "1.18.26" source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" dependencies = [ "bs58 0.4.0", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "rustversion", "syn 2.0.93", ] @@ -8004,7 +7326,7 @@ dependencies = [ "crossbeam-channel", "log", "solana-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-measure", + "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-runtime 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", @@ -8020,7 +7342,7 @@ dependencies = [ "log", "solana-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-gossip", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", @@ -8067,7 +7389,7 @@ dependencies = [ "bzip2", "enum-iterator", "flate2", - "futures 0.3.31", + "futures", "goauth", "http", "hyper", @@ -8083,7 +7405,7 @@ dependencies = [ "solana-sdk", "solana-storage-proto", "solana-transaction-status", - "thiserror 1.0.69", + "thiserror", "tokio", "tonic", "zstd", @@ -8105,6 +7427,39 @@ dependencies = [ "tonic-build", ] +[[package]] +name = "solana-streamer" +version = "1.18.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8476e41ad94fe492e8c06697ee35912cf3080aae0c9e9ac6430835256ccf056" +dependencies = [ + "async-channel", + "bytes", + "crossbeam-channel", + "futures-util", + "histogram", + "indexmap 2.7.0", + "itertools 0.10.5", + "libc", + "log", + "nix", + "pem", + "percentage", + "pkcs8", + "quinn", + "quinn-proto", + "rand 0.8.5", + "rcgen", + "rustls", + "smallvec", + "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-perf 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "solana-sdk", + "thiserror", + "tokio", + "x509-parser", +] + [[package]] name = "solana-streamer" version = "1.18.26" @@ -8132,7 +7487,7 @@ dependencies = [ "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "thiserror 1.0.69", + "thiserror", "tokio", "x509-parser", ] @@ -8207,13 +7562,13 @@ dependencies = [ "log", "rayon", "solana-connection-cache 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-measure", + "solana-measure 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-metrics 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-pubsub-client 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", - "thiserror 1.0.69", + "thiserror", "tokio", ] @@ -8230,13 +7585,13 @@ dependencies = [ "log", "rayon", "solana-connection-cache 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-measure", + "solana-measure 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-pubsub-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-rpc-client", "solana-rpc-client-api", "solana-sdk", - "thiserror 1.0.69", + "thiserror", "tokio", ] @@ -8261,43 +7616,7 @@ dependencies = [ "spl-memo", "spl-token 4.0.0", "spl-token-2022 1.0.0", - "thiserror 1.0.69", -] - -[[package]] -name = "solana-turbine" -version = "1.18.26" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" -dependencies = [ - "bincode", - "bytes", - "crossbeam-channel", - "futures 0.3.31", - "itertools 0.10.5", - "log", - "lru", - "quinn", - "rand 0.8.5", - "rand_chacha 0.3.1", - "rayon", - "rcgen", - "rustls", - "solana-entry", - "solana-gossip", - "solana-ledger", - "solana-measure", - "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-perf 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-poh", - "solana-quic-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-rayon-threadlimit 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-rpc", - "solana-rpc-client-api", - "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-sdk", - "solana-streamer", - "thiserror 1.0.69", - "tokio", + "thiserror", ] [[package]] @@ -8310,8 +7629,8 @@ dependencies = [ "solana-connection-cache 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-net-utils 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", - "solana-streamer", - "thiserror 1.0.69", + "solana-streamer 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror", "tokio", ] @@ -8324,29 +7643,11 @@ dependencies = [ "solana-connection-cache 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-net-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "solana-streamer", - "thiserror 1.0.69", + "solana-streamer 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "thiserror", "tokio", ] -[[package]] -name = "solana-unified-scheduler-logic" -version = "1.18.26" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" - -[[package]] -name = "solana-unified-scheduler-pool" -version = "1.18.26" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" -dependencies = [ - "solana-ledger", - "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-sdk", - "solana-unified-scheduler-logic", - "solana-vote 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", -] - [[package]] name = "solana-version" version = "1.18.26" @@ -8394,7 +7695,7 @@ dependencies = [ "solana-frozen-abi-macro 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", "solana-vote-program 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -8412,7 +7713,7 @@ dependencies = [ "solana-frozen-abi-macro 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", "solana-vote-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -8434,7 +7735,7 @@ dependencies = [ "solana-program", "solana-program-runtime 1.18.26 (registry+https://github.com/rust-lang/crates.io-index)", "solana-sdk", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -8455,27 +7756,7 @@ dependencies = [ "solana-program", "solana-program-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", - "thiserror 1.0.69", -] - -[[package]] -name = "solana-wen-restart" -version = "1.18.26" -source = "git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5#0bbcbe476c0e728907ac01135115e661c16538e5" -dependencies = [ - "log", - "prost", - "prost-build", - "prost-types", - "protobuf-src", - "rustc_version", - "solana-gossip", - "solana-ledger", - "solana-logger 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-program", - "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-sdk", - "solana-vote-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", + "thiserror", ] [[package]] @@ -8530,7 +7811,7 @@ dependencies = [ "solana-program", "solana-sdk", "subtle", - "thiserror 1.0.69", + "thiserror", "zeroize", ] @@ -8558,7 +7839,7 @@ dependencies = [ "solana-program", "solana-sdk", "subtle", - "thiserror 1.0.69", + "thiserror", "zeroize", ] @@ -8577,7 +7858,7 @@ dependencies = [ "rand 0.8.5", "rustc-demangle", "scroll", - "thiserror 1.0.69", + "thiserror", "winapi 0.3.9", ] @@ -8616,7 +7897,7 @@ dependencies = [ "solana-program", "spl-token 4.0.0", "spl-token-2022 1.0.0", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -8647,7 +7928,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ - "quote 1.0.38", + "quote", "spl-discriminator-syn 0.1.2", "syn 2.0.93", ] @@ -8658,7 +7939,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ - "quote 1.0.38", + "quote", "spl-discriminator-syn 0.2.0", "syn 2.0.93", ] @@ -8669,11 +7950,11 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18fea7be851bd98d10721782ea958097c03a0c2a07d8d4997041d0ece6319a63" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "sha2 0.10.8", "syn 2.0.93", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -8682,11 +7963,11 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c1f05593b7ca9eac7caca309720f2eafb96355e037e6d373b909a80fe7b69b9" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "sha2 0.10.8", "syn 2.0.93", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -8699,7 +7980,7 @@ dependencies = [ "num-derive 0.3.3", "num-traits", "solana-program", - "thiserror 1.0.69", + "thiserror", "uint", ] @@ -8748,7 +8029,7 @@ dependencies = [ "num-traits", "solana-program", "spl-program-error-derive 0.3.2", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -8761,7 +8042,7 @@ dependencies = [ "num-traits", "solana-program", "spl-program-error-derive 0.4.1", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -8770,8 +8051,8 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1845dfe71fd68f70382232742e758557afe973ae19e6c06807b2c30f5d5cb474" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "sha2 0.10.8", "syn 2.0.93", ] @@ -8782,8 +8063,8 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d375dd76c517836353e093c2dbb490938ff72821ab568b545fd30ab3256b3e" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "sha2 0.10.8", "syn 2.0.93", ] @@ -8808,7 +8089,7 @@ dependencies = [ "spl-math", "spl-pod 0.1.0", "spl-token-2022 0.9.0", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -8865,7 +8146,7 @@ dependencies = [ "num-traits", "num_enum 0.5.11", "solana-program", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -8880,7 +8161,7 @@ dependencies = [ "num-traits", "num_enum 0.6.1", "solana-program", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -8902,7 +8183,7 @@ dependencies = [ "spl-token-metadata-interface 0.2.0", "spl-transfer-hook-interface 0.3.0", "spl-type-length-value 0.3.0", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -8926,7 +8207,7 @@ dependencies = [ "spl-token-metadata-interface 0.2.0", "spl-transfer-hook-interface 0.4.1", "spl-type-length-value 0.3.0", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -8950,7 +8231,7 @@ dependencies = [ "spl-token-metadata-interface 0.3.5", "spl-transfer-hook-interface 0.6.5", "spl-type-length-value 0.4.6", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -9093,17 +8374,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -[[package]] -name = "stream-cancel" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9fbf9bd71e4cf18d68a8a0951c0e5b7255920c0cd992c4ff51cddd6ef514a3" -dependencies = [ - "futures-core", - "pin-project", - "tokio", -] - [[package]] name = "strsim" version = "0.8.0" @@ -9138,8 +8408,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ "heck 0.4.1", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "rustversion", "syn 1.0.109", ] @@ -9255,7 +8525,7 @@ dependencies = [ "bincode", "borsh 0.10.4", "bytemuck", - "futures 0.3.31", + "futures", "lazy_static", "libsecp256k1 0.7.1", "log", @@ -9277,25 +8547,14 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" -[[package]] -name = "syn" -version = "0.15.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" -dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "unicode-xid 0.1.0", -] - [[package]] name = "syn" version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "unicode-ident", ] @@ -9305,8 +8564,8 @@ version = "2.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c786062daee0d6db1132800e623df74274a0a87322d8e183338e01b3d98d058" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "unicode-ident", ] @@ -9322,10 +8581,10 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", - "unicode-xid 0.2.6", + "unicode-xid", ] [[package]] @@ -9334,34 +8593,11 @@ version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] -[[package]] -name = "sys-info" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b3a0d0aba8bf96a0e1ddfdc352fc53b3df7f39318c71854910c3c4b024ae52c" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "sysctl" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225e483f02d0ad107168dc57381a8a40c3aeea6abe47f37506931f861643cfa8" -dependencies = [ - "bitflags 1.3.2", - "byteorder", - "libc", - "thiserror 1.0.69", - "walkdir", -] - [[package]] name = "system-configuration" version = "0.5.1" @@ -9408,7 +8644,7 @@ checksum = "1c38a012bed6fb9681d3bf71ffaa4f88f3b4b9ed3198cda6e4c8462d24d4bb80" dependencies = [ "anyhow", "fnv", - "futures 0.3.31", + "futures", "humantime", "opentelemetry", "pin-project", @@ -9416,7 +8652,7 @@ dependencies = [ "serde", "static_assertions", "tarpc-plugins", - "thiserror 1.0.69", + "thiserror", "tokio", "tokio-serde", "tokio-util 0.6.10", @@ -9430,8 +8666,8 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ee42b4e559f17bce0385ebf511a7beb67d5cc33c12c96b7f4e9789919d9c10f" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 1.0.109", ] @@ -9441,11 +8677,11 @@ version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "fastrand", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.52.0", ] [[package]] @@ -9478,9 +8714,9 @@ version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adcb7fd841cd518e279be3d5a3eb0636409487998a4aff22f3de87b81e88384f" dependencies = [ - "cfg-if 1.0.0", - "proc-macro2 1.0.92", - "quote 1.0.38", + "cfg-if", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -9490,8 +8726,8 @@ version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", "test-case-core", ] @@ -9517,16 +8753,7 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" -dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl", ] [[package]] @@ -9535,19 +8762,8 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", - "syn 2.0.93", -] - -[[package]] -name = "thiserror-impl" -version = "2.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" -dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -9557,7 +8773,7 @@ version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "once_cell", ] @@ -9605,7 +8821,7 @@ dependencies = [ "rand 0.7.3", "rustc-hash", "sha2 0.9.9", - "thiserror 1.0.69", + "thiserror", "unicode-normalization", "wasm-bindgen", "zeroize", @@ -9643,9 +8859,7 @@ dependencies = [ "anchor-lang 0.30.1", "anyhow", "base64 0.13.1", - "clap 2.34.0", "clap 4.5.23", - "crossbeam-channel", "ellipsis-client", "env_logger 0.10.2", "hex", @@ -9664,27 +8878,19 @@ dependencies = [ "serde_json", "solana-account-decoder 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-accounts-db 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-clap-utils 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-client 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-core", - "solana-geyser-plugin-manager", - "solana-gossip", "solana-ledger", - "solana-measure", "solana-metrics 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-program", "solana-program-test 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-rpc", "solana-rpc-client", "solana-runtime 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "solana-sdk", "solana-stake-program 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", - "solana-streamer", - "solana-unified-scheduler-pool", "solana-vote 1.18.26 (git+https://github.com/jito-foundation/jito-solana.git?rev=0bbcbe476c0e728907ac01135115e661c16538e5)", "spl-memo", "tempfile", - "thiserror 1.0.69", + "thiserror", "tokio", ] @@ -9722,8 +8928,8 @@ version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -9797,7 +9003,6 @@ checksum = "36943ee01a6d67977dd3f84a5a1d2efeb4ada3a1ae771cadfaa535d9d9fc6507" dependencies = [ "bytes", "futures-core", - "futures-io", "futures-sink", "log", "pin-project-lite", @@ -9890,7 +9095,7 @@ dependencies = [ "http-body", "hyper", "hyper-timeout", - "percent-encoding 2.3.1", + "percent-encoding", "pin-project", "prost", "rustls-pemfile", @@ -9910,9 +9115,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6fdaae4c2c638bb70fe42803a26fbd6fc6ac8c72f5c59f67ecc2a2dcabf4b07" dependencies = [ "prettyplease 0.1.25", - "proc-macro2 1.0.92", + "proc-macro2", "prost-build", - "quote 1.0.38", + "quote", "syn 1.0.109", ] @@ -9966,8 +9171,8 @@ version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -10032,8 +9237,8 @@ dependencies = [ "rand 0.8.5", "rustls", "sha1", - "thiserror 1.0.69", - "url 2.5.4", + "thiserror", + "url", "utf-8", "webpki-roots 0.24.0", ] @@ -10050,12 +9255,6 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[package]] -name = "ucd-trie" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" - [[package]] name = "uint" version = "0.9.5" @@ -10068,18 +9267,6 @@ dependencies = [ "static_assertions", ] -[[package]] -name = "unicase" -version = "2.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" - -[[package]] -name = "unicode-bidi" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" - [[package]] name = "unicode-ident" version = "1.0.14" @@ -10113,12 +9300,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" -[[package]] -name = "unicode-xid" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" - [[package]] name = "unicode-xid" version = "0.2.6" @@ -10150,12 +9331,6 @@ dependencies = [ "void", ] -[[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" @@ -10178,17 +9353,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "url" -version = "1.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" -dependencies = [ - "idna 0.1.5", - "matches", - "percent-encoding 1.0.1", -] - [[package]] name = "url" version = "2.5.4" @@ -10196,8 +9360,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", - "idna 1.0.3", - "percent-encoding 2.3.1", + "idna", + "percent-encoding", ] [[package]] @@ -10333,7 +9497,7 @@ version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "once_cell", "wasm-bindgen-macro", ] @@ -10346,8 +9510,8 @@ checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", "wasm-bindgen-shared", ] @@ -10358,7 +9522,7 @@ version = "0.4.49" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "js-sys", "once_cell", "wasm-bindgen", @@ -10371,7 +9535,7 @@ version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ - "quote 1.0.38", + "quote", "wasm-bindgen-macro-support", ] @@ -10381,8 +9545,8 @@ version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", "wasm-bindgen-backend", "wasm-bindgen-shared", @@ -10475,7 +9639,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] @@ -10665,7 +9829,7 @@ version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "cfg-if 1.0.0", + "cfg-if", "windows-sys 0.48.0", ] @@ -10704,7 +9868,7 @@ dependencies = [ "nom", "oid-registry", "rusticata-macros", - "thiserror 1.0.69", + "thiserror", "time", ] @@ -10752,8 +9916,8 @@ version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", "synstructure 0.13.1", ] @@ -10774,8 +9938,8 @@ version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -10794,8 +9958,8 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", "synstructure 0.13.1", ] @@ -10815,8 +9979,8 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] @@ -10837,8 +10001,8 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ - "proc-macro2 1.0.92", - "quote 1.0.38", + "proc-macro2", + "quote", "syn 2.0.93", ] diff --git a/Cargo.toml b/Cargo.toml index a87cba48..f06bb16a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -68,7 +68,6 @@ spl-memo = "4.0.0" solana-account-decoder = { package = "solana-account-decoder", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } solana-metrics = { package = "solana-metrics", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } solana-accounts-db = { package = "solana-accounts-db", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } -solana-clap-utils = { package = "solana-clap-utils", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } solana-client = { package = "solana-client", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } solana-ledger = { package = "solana-ledger", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } solana-program = { package = "solana-program", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } @@ -107,16 +106,6 @@ jito-vault-core = { git = "https://github.com/jito-foundation/restaking.git", re jito-vault-program = { git = "https://github.com/jito-foundation/restaking.git", rev = "eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d", features = ["no-entrypoint"] } jito-vault-sdk = { git = "https://github.com/jito-foundation/restaking.git", rev = "eaf88e7e5ca2845fe3108c4fc4a06a25f9a8514d" } -solana-core = { package = "solana-core", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } -solana-geyser-plugin-manager = { package = "solana-geyser-plugin-manager", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } -solana-gossip = { package = "solana-gossip", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } -solana-measure = { package = "solana-measure", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } -solana-rpc = { package = "solana-rpc", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } -solana-streamer = { package = "solana-streamer", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } -solana-unified-scheduler-pool = { package = "solana-unified-scheduler-pool", git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } - - - [patch.crates-io] # Force all Solana dependencies to use the Jito fork solana-program = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } @@ -126,12 +115,3 @@ solana-rpc-client = { git = "https://github.com/jito-foundation/jito-solana.git" solana-rpc-client-api = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } # necessary for ellipsis client solana-transaction-status = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } - -solana-core = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } -solana-geyser-plugin-manager = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } -solana-gossip = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } -solana-measure = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } -solana-rpc = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } -solana-streamer = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } -solana-unified-scheduler-pool = { git = "https://github.com/jito-foundation/jito-solana.git", rev = "0bbcbe476c0e728907ac01135115e661c16538e5" } - diff --git a/tip-router-operator-cli/Cargo.toml b/tip-router-operator-cli/Cargo.toml index 396c3ca3..664ffd9e 100644 --- a/tip-router-operator-cli/Cargo.toml +++ b/tip-router-operator-cli/Cargo.toml @@ -9,7 +9,6 @@ anchor-lang = { workspace = true } anyhow = { workspace = true } base64 = "0.13" clap = { workspace = true } -clap_old = { package = "clap", version = "2.33.1" } ellipsis-client = "0.1" env_logger = { workspace = true } hex = "0.4" @@ -29,7 +28,6 @@ serde_json = { workspace = true } solana-account-decoder = { workspace = true } solana-accounts-db = { workspace = true } solana-client = { workspace = true } -solana-clap-utils = { workspace = true } solana-ledger = { workspace = true } solana-metrics = { workspace = true } solana-program = { workspace = true } @@ -42,16 +40,6 @@ spl-memo = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true } -crossbeam-channel = "0.5" - -solana-core = { workspace = true } -solana-geyser-plugin-manager = { workspace = true } -solana-gossip = { workspace = true } -solana-measure = { workspace = true } -solana-rpc = { workspace = true } -solana-streamer = { workspace = true } -solana-unified-scheduler-pool = { workspace = true } - [dev-dependencies] solana-program-test = { workspace = true } solana-runtime = { workspace = true, features = ["dev-context-only-utils"] } diff --git a/tip-router-operator-cli/src/arg_matches.rs b/tip-router-operator-cli/src/arg_matches.rs deleted file mode 100644 index d3b9fbcc..00000000 --- a/tip-router-operator-cli/src/arg_matches.rs +++ /dev/null @@ -1,597 +0,0 @@ -use std::ffi::OsString; -use std::path::PathBuf; - -use clap_old::{App, AppSettings, Arg, ArgMatches, SubCommand}; -use solana_clap_utils::{ - hidden_unless_forced, - input_validators::{ - is_parsable, is_pow2, is_pubkey, is_pubkey_or_keypair, is_slot, is_valid_percentage, - }, -}; -use solana_ledger::use_snapshot_archives_at_startup; -use solana_runtime::snapshot_utils::{ - SnapshotVersion, DEFAULT_ARCHIVE_COMPRESSION, SUPPORTED_ARCHIVE_COMPRESSION, -}; -use solana_sdk::{clock::Slot, native_token::sol_to_lamports, rent::Rent, vote::state::VoteState}; -use solana_stake_program::stake_state::StakeStateV2; - -// pub fn create_snapshot_arg_matches<'a, 'b>( -// full_snapshots_archives_dir: PathBuf, -// incremental_snapshots_archives_dir: PathBuf, -// account_paths: Vec, -// ) -> ArgMatches<'a> { -// let mut app = App::new("tip-router-operator-cli"); -// ledger_tool_arg_app(&mut app); -// let args: Vec = vec![ -// "tip-router-operator-cli".into(), -// "--full-snapshot-archive-path".into(), -// full_snapshots_archives_dir.into(), -// "--incremental-snapshot-archive-path".into(), -// incremental_snapshots_archives_dir.into(), -// "--accounts".into(), -// account_paths -// .iter() -// .map(|p| p.to_string_lossy().to_string()) -// .collect::>() -// .join(",") -// .into(), -// ]; - -// app.get_matches_from(args) -// } - -pub fn ledger_tool_arg_matches<'a>( - arg_matches: &mut ArgMatches<'a>, - full_snapshots_archives_dir: PathBuf, - incremental_snapshots_archives_dir: PathBuf, - account_paths: Vec, -) { - let rent = Rent::default(); - // let default_bootstrap_validator_lamports = sol_to_lamports(500.0) - // .max(VoteState::get_rent_exempt_reserve(&rent)) - // .to_string(); - // let default_bootstrap_validator_stake_lamports = sol_to_lamports(0.5) - // .max(rent.minimum_balance(StakeStateV2::size_of())) - // .to_string(); - - let load_genesis_config_arg = load_genesis_arg(); - let accounts_db_config_args = accounts_db_args(); - let snapshot_config_args = snapshot_args(); - - let accounts_db_test_hash_calculation_arg = Arg::with_name("accounts_db_test_hash_calculation") - .long("accounts-db-test-hash-calculation") - .help("Enable hash calculation test"); - let halt_at_slot_arg = Arg::with_name("halt_at_slot") - .long("halt-at-slot") - .value_name("SLOT") - .validator(is_slot) - .takes_value(true) - .help("Halt processing at the given slot"); - let os_memory_stats_reporting_arg = Arg::with_name("os_memory_stats_reporting") - .long("os-memory-stats-reporting") - .help("Enable reporting of OS memory statistics."); - let halt_at_slot_store_hash_raw_data = Arg::with_name("halt_at_slot_store_hash_raw_data") - .long("halt-at-slot-store-hash-raw-data") - .help( - "After halting at slot, run an accounts hash calculation and store the raw hash data \ - for debugging.", - ) - .hidden(hidden_unless_forced()); - let verify_index_arg = Arg::with_name("verify_accounts_index") - .long("verify-accounts-index") - .takes_value(false) - .help("For debugging and tests on accounts index."); - let limit_load_slot_count_from_snapshot_arg = - Arg::with_name("limit_load_slot_count_from_snapshot") - .long("limit-load-slot-count-from-snapshot") - .value_name("SLOT") - .validator(is_slot) - .takes_value(true) - .help( - "For debugging and profiling with large snapshots, artificially limit how many \ - slots are loaded from a snapshot.", - ); - let hard_forks_arg = Arg::with_name("hard_forks") - .long("hard-fork") - .value_name("SLOT") - .validator(is_slot) - .multiple(true) - .takes_value(true) - .help("Add a hard fork at this slot"); - let allow_dead_slots_arg = Arg::with_name("allow_dead_slots") - .long("allow-dead-slots") - .takes_value(false) - .help("Output dead slots as well"); - let hashes_per_tick = Arg::with_name("hashes_per_tick") - .long("hashes-per-tick") - .value_name("NUM_HASHES|\"sleep\"") - .takes_value(true) - .help( - "How many PoH hashes to roll before emitting the next tick. If \"sleep\", for \ - development sleep for the target tick duration instead of hashing", - ); - let snapshot_version_arg = Arg::with_name("snapshot_version") - .long("snapshot-version") - .value_name("SNAPSHOT_VERSION") - .validator(is_parsable::) - .takes_value(true) - .default_value(SnapshotVersion::default().into()) - .help("Output snapshot version"); - let debug_key_arg = Arg::with_name("debug_key") - .long("debug-key") - .validator(is_pubkey) - .value_name("ADDRESS") - .multiple(true) - .takes_value(true) - .help("Log when transactions are processed that reference the given key(s)."); - - let geyser_plugin_args = Arg::with_name("geyser_plugin_config") - .long("geyser-plugin-config") - .value_name("FILE") - .takes_value(true) - .multiple(true) - .help("Specify the configuration file for the Geyser plugin."); - - let log_messages_bytes_limit_arg = Arg::with_name("log_messages_bytes_limit") - .long("log-messages-bytes-limit") - .takes_value(true) - .validator(is_parsable::) - .value_name("BYTES") - .help("Maximum number of bytes written to the program log before truncation"); - - let accounts_data_encoding_arg = Arg::with_name("encoding") - .long("encoding") - .takes_value(true) - .possible_values(&["base64", "base64+zstd", "jsonParsed"]) - .default_value("base64") - .help("Print account data in specified format when printing account contents."); - - let app = App::new("tip-router-operator-cli") - .about("Tip Router Operator CLI") - .version("0.1.0") - .global_setting(AppSettings::ColoredHelp) - .global_setting(AppSettings::InferSubcommands) - .global_setting(AppSettings::UnifiedHelpMessage) - .global_setting(AppSettings::VersionlessSubcommands) - .setting(AppSettings::SubcommandRequiredElseHelp) - .arg( - Arg::with_name("ledger_path") - .short("l") - .long("ledger") - .value_name("DIR") - .takes_value(true) - .global(true) - .default_value("ledger") - .help("Use DIR as ledger location"), - ) - .arg( - Arg::with_name("wal_recovery_mode") - .long("wal-recovery-mode") - .value_name("MODE") - .takes_value(true) - .global(true) - .possible_values(&[ - "tolerate_corrupted_tail_records", - "absolute_consistency", - "point_in_time", - "skip_any_corrupted_record", - ]) - .help("Mode to recovery the ledger db write ahead log"), - ) - .arg( - Arg::with_name("force_update_to_open") - .long("force-update-to-open") - .takes_value(false) - .global(true) - .help( - "Allow commands that would otherwise not alter the blockstore to make \ - necessary updates in order to open it", - ), - ) - .arg( - Arg::with_name("ignore_ulimit_nofile_error") - .long("ignore-ulimit-nofile-error") - .takes_value(false) - .global(true) - .help( - "Allow opening the blockstore to succeed even if the desired open file \ - descriptor limit cannot be configured. Use with caution as some commands may \ - run fine with a reduced file descriptor limit while others will not", - ), - ) - .arg( - Arg::with_name("block_verification_method") - .long("block-verification-method") - .value_name("METHOD") - .takes_value(true) - // .possible_values(BlockVerificationMethod::cli_names()) - .global(true), // .help(BlockVerificationMethod::cli_message()), - ) - .arg( - Arg::with_name("unified_scheduler_handler_threads") - .long("unified-scheduler-handler-threads") - .value_name("COUNT") - .takes_value(true) - // .validator(|s| is_within_range(s, 1..)) - .global(true), // .help(DefaultSchedulerPool::cli_message()), - ) - .arg( - Arg::with_name("output_format") - .long("output") - .value_name("FORMAT") - .global(true) - .takes_value(true) - .possible_values(&["json", "json-compact"]) - .help( - "Return information in specified output format, currently only available for \ - bigtable and program subcommands", - ), - ) - .arg( - Arg::with_name("verbose") - .short("v") - .long("verbose") - .global(true) - .multiple(true) - .takes_value(false) - .help("Show additional information where supported"), - ) - .subcommand( - SubCommand::with_name("create-snapshot") - .about("Create a new ledger snapshot") - .arg(&load_genesis_config_arg) - .args(&accounts_db_config_args) - .args(&snapshot_config_args) - .arg(&hard_forks_arg) - .arg(&snapshot_version_arg) - .arg(&geyser_plugin_args) - .arg(&log_messages_bytes_limit_arg) - .arg( - Arg::with_name("snapshot_slot") - .index(1) - .value_name("SLOT") - .validator(|value| { - if value.parse::().is_ok() || value == "ROOT" { - Ok(()) - } else { - Err(format!( - "Unable to parse as a number or the keyword ROOT, provided: \ - {value}" - )) - } - }) - .takes_value(true) - .help( - "Slot at which to create the snapshot; accepts keyword ROOT for the \ - highest root", - ), - ) - .arg( - Arg::with_name("output_directory") - .index(2) - .value_name("DIR") - .takes_value(true) - .help( - "Output directory for the snapshot \ - [default: --snapshot-archive-path if present else --ledger directory]", - ), - ) - .arg( - Arg::with_name("warp_slot") - .required(false) - .long("warp-slot") - .takes_value(true) - .value_name("WARP_SLOT") - .validator(is_slot) - .help( - "After loading the snapshot slot warp the ledger to WARP_SLOT, which \ - could be a slot in a galaxy far far away", - ), - ) - .arg( - Arg::with_name("faucet_lamports") - .short("t") - .long("faucet-lamports") - .value_name("LAMPORTS") - .takes_value(true) - .requires("faucet_pubkey") - .help("Number of lamports to assign to the faucet"), - ) - .arg( - Arg::with_name("faucet_pubkey") - .short("m") - .long("faucet-pubkey") - .value_name("PUBKEY") - .takes_value(true) - .validator(is_pubkey_or_keypair) - .requires("faucet_lamports") - .help("Path to file containing the faucet's pubkey"), - ) - .arg( - Arg::with_name("bootstrap_validator") - .short("b") - .long("bootstrap-validator") - .value_name("IDENTITY_PUBKEY VOTE_PUBKEY STAKE_PUBKEY") - .takes_value(true) - .validator(is_pubkey_or_keypair) - .number_of_values(3) - .multiple(true) - .help("The bootstrap validator's identity, vote and stake pubkeys"), - ) - .arg( - Arg::with_name("bootstrap_stake_authorized_pubkey") - .long("bootstrap-stake-authorized-pubkey") - .value_name("BOOTSTRAP STAKE AUTHORIZED PUBKEY") - .takes_value(true) - .validator(is_pubkey_or_keypair) - .help( - "Path to file containing the pubkey authorized to manage the \ - bootstrap validator's stake - [default: --bootstrap-validator IDENTITY_PUBKEY]", - ), - ) - // .arg( - // Arg::with_name("bootstrap_validator_lamports") - // .long("bootstrap-validator-lamports") - // .value_name("LAMPORTS") - // .takes_value(true) - // .default_value(&default_bootstrap_validator_lamports) - // .help("Number of lamports to assign to the bootstrap validator"), - // ) - // .arg( - // Arg::with_name("bootstrap_validator_stake_lamports") - // .long("bootstrap-validator-stake-lamports") - // .value_name("LAMPORTS") - // .takes_value(true) - // .default_value(&default_bootstrap_validator_stake_lamports) - // .help( - // "Number of lamports to assign to the bootstrap validator's stake \ - // account", - // ), - // ) - .arg( - Arg::with_name("rent_burn_percentage") - .long("rent-burn-percentage") - .value_name("NUMBER") - .takes_value(true) - .help("Adjust percentage of collected rent to burn") - .validator(is_valid_percentage), - ) - .arg(&hashes_per_tick) - .arg( - Arg::with_name("accounts_to_remove") - .required(false) - .long("remove-account") - .takes_value(true) - .value_name("PUBKEY") - .validator(is_pubkey) - .multiple(true) - .help("List of accounts to remove while creating the snapshot"), - ) - .arg( - Arg::with_name("feature_gates_to_deactivate") - .required(false) - .long("deactivate-feature-gate") - .takes_value(true) - .value_name("PUBKEY") - .validator(is_pubkey) - .multiple(true) - .help("List of feature gates to deactivate while creating the snapshot"), - ) - .arg( - Arg::with_name("vote_accounts_to_destake") - .required(false) - .long("destake-vote-account") - .takes_value(true) - .value_name("PUBKEY") - .validator(is_pubkey) - .multiple(true) - .help("List of validator vote accounts to destake"), - ) - .arg( - Arg::with_name("remove_stake_accounts") - .required(false) - .long("remove-stake-accounts") - .takes_value(false) - .help("Remove all existing stake accounts from the new snapshot"), - ) - .arg( - Arg::with_name("incremental") - .long("incremental") - .takes_value(false) - .help( - "Create an incremental snapshot instead of a full snapshot. This \ - requires that the ledger is loaded from a full snapshot, which will \ - be used as the base for the incremental snapshot.", - ) - .conflicts_with("no_snapshot"), - ) - .arg( - Arg::with_name("minimized") - .long("minimized") - .takes_value(false) - .help( - "Create a minimized snapshot instead of a full snapshot. This \ - snapshot will only include information needed to replay the ledger \ - from the snapshot slot to the ending slot.", - ) - .conflicts_with("incremental") - .requires("ending_slot"), - ) - .arg( - Arg::with_name("ending_slot") - .long("ending-slot") - .takes_value(true) - .value_name("ENDING_SLOT") - .help("Ending slot for minimized snapshot creation"), - ) - .arg( - Arg::with_name("snapshot_archive_format") - .long("snapshot-archive-format") - .possible_values(SUPPORTED_ARCHIVE_COMPRESSION) - .default_value(DEFAULT_ARCHIVE_COMPRESSION) - .value_name("ARCHIVE_TYPE") - .takes_value(true) - .help("Snapshot archive format to use.") - .conflicts_with("no_snapshot"), - ) - .arg( - Arg::with_name("enable_capitalization_change") - .long("enable-capitalization-change") - .takes_value(false) - .help("If snapshot creation should succeed with a capitalization delta."), - ), - ); - - let args: Vec = vec![ - "tip-router-operator-cli".into(), - "--full-snapshot-archive-path".into(), - full_snapshots_archives_dir.into(), - "--incremental-snapshot-archive-path".into(), - incremental_snapshots_archives_dir.into(), - "--accounts".into(), - account_paths - .iter() - .map(|p| p.to_string_lossy().to_string()) - .collect::>() - .join(",") - .into(), - ]; - - *arg_matches = app.get_matches_from(args); -} - -/// Returns the arguments that configure AccountsDb -pub fn accounts_db_args<'a, 'b>() -> Box<[Arg<'a, 'b>]> { - vec![ - Arg::with_name("account_paths") - .long("accounts") - .value_name("PATHS") - .takes_value(true) - .help( - "Persistent accounts location. May be specified multiple times. \ - [default: /accounts]", - ), - Arg::with_name("accounts_index_path") - .long("accounts-index-path") - .value_name("PATH") - .takes_value(true) - .multiple(true) - .help( - "Persistent accounts-index location. May be specified multiple times. \ - [default: /accounts_index]", - ), - Arg::with_name("accounts_hash_cache_path") - .long("accounts-hash-cache-path") - .value_name("PATH") - .takes_value(true) - .help( - "Use PATH as accounts hash cache location [default: /accounts_hash_cache]", - ), - Arg::with_name("accounts_index_bins") - .long("accounts-index-bins") - .value_name("BINS") - .validator(is_pow2) - .takes_value(true) - .help("Number of bins to divide the accounts index into"), - Arg::with_name("accounts_index_memory_limit_mb") - .long("accounts-index-memory-limit-mb") - .value_name("MEGABYTES") - .validator(is_parsable::) - .takes_value(true) - .help( - "How much memory the accounts index can consume. If this is exceeded, some \ - account index entries will be stored on disk.", - ), - Arg::with_name("disable_accounts_disk_index") - .long("disable-accounts-disk-index") - .help( - "Disable the disk-based accounts index. It is enabled by default. The entire \ - accounts index will be kept in memory.", - ) - .conflicts_with("accounts_index_memory_limit_mb"), - Arg::with_name("accounts_db_skip_shrink") - .long("accounts-db-skip-shrink") - .help( - "Enables faster starting of ledger-tool by skipping shrink. This option is for \ - use during testing.", - ), - Arg::with_name("accounts_db_verify_refcounts") - .long("accounts-db-verify-refcounts") - .help( - "Debug option to scan all AppendVecs and verify account index refcounts prior to \ - clean", - ) - .hidden(hidden_unless_forced()), - Arg::with_name("accounts_db_test_skip_rewrites") - .long("accounts-db-test-skip-rewrites") - .help( - "Debug option to skip rewrites for rent-exempt accounts but still add them in \ - bank delta hash calculation", - ) - .hidden(hidden_unless_forced()), - Arg::with_name("accounts_db_skip_initial_hash_calculation") - .long("accounts-db-skip-initial-hash-calculation") - .help("Do not verify accounts hash at startup.") - .hidden(hidden_unless_forced()), - Arg::with_name("accounts_db_ancient_append_vecs") - .long("accounts-db-ancient-append-vecs") - .value_name("SLOT-OFFSET") - .validator(is_parsable::) - .takes_value(true) - .help( - "AppendVecs that are older than (slots_per_epoch - SLOT-OFFSET) are squashed \ - together.", - ) - .hidden(hidden_unless_forced()), - ] - .into_boxed_slice() -} - -// For our current version of CLAP, the value passed to Arg::default_value() -// must be a &str. But, we can't convert an integer to a &str at compile time. -// So, declare this constant and enforce equality with the following unit test -// test_max_genesis_archive_unpacked_size_constant -const MAX_GENESIS_ARCHIVE_UNPACKED_SIZE_STR: &str = "10485760"; - -/// Returns the arguments that configure loading genesis -pub fn load_genesis_arg<'a, 'b>() -> Arg<'a, 'b> { - Arg::with_name("max_genesis_archive_unpacked_size") - .long("max-genesis-archive-unpacked-size") - .value_name("NUMBER") - .takes_value(true) - .default_value(MAX_GENESIS_ARCHIVE_UNPACKED_SIZE_STR) - .help("maximum total uncompressed size of unpacked genesis archive") -} - -/// Returns the arguments that configure snapshot loading -pub fn snapshot_args<'a, 'b>() -> Box<[Arg<'a, 'b>]> { - vec![ - Arg::with_name("no_snapshot") - .long("no-snapshot") - .takes_value(false) - .help("Do not start from a local snapshot if present"), - Arg::with_name("snapshots") - .long("snapshots") - .alias("snapshot-archive-path") - .alias("full-snapshot-archive-path") - .value_name("DIR") - .takes_value(true) - .global(true) - .help("Use DIR for snapshot location [default: --ledger value]"), - Arg::with_name("incremental_snapshot_archive_path") - .long("incremental-snapshot-archive-path") - .value_name("DIR") - .takes_value(true) - .global(true) - .help("Use DIR for separate incremental snapshot location"), - Arg::with_name(use_snapshot_archives_at_startup::cli::NAME) - .long(use_snapshot_archives_at_startup::cli::LONG_ARG) - .takes_value(true) - .possible_values(use_snapshot_archives_at_startup::cli::POSSIBLE_VALUES) - .default_value(use_snapshot_archives_at_startup::cli::default_value_for_ledger_tool()) - .help(use_snapshot_archives_at_startup::cli::HELP) - .long_help(use_snapshot_archives_at_startup::cli::LONG_HELP), - ] - .into_boxed_slice() -} diff --git a/tip-router-operator-cli/src/cli.rs b/tip-router-operator-cli/src/cli.rs index 99fce61b..3bdb794e 100644 --- a/tip-router-operator-cli/src/cli.rs +++ b/tip-router-operator-cli/src/cli.rs @@ -1,9 +1,9 @@ -use std::{fmt::Display, path::PathBuf}; +use std::path::PathBuf; use clap::Parser; use solana_sdk::pubkey::Pubkey; -#[derive(Clone, Parser, Debug)] +#[derive(Clone, Parser)] #[command(author, version, about)] pub struct Cli { #[arg(short, long, env)] @@ -37,7 +37,7 @@ pub struct Cli { pub command: Commands, } -#[derive(clap::Subcommand, Clone, Debug)] +#[derive(clap::Subcommand, Clone)] pub enum Commands { Run { #[arg(short, long, env)] diff --git a/tip-router-operator-cli/src/ledger_utils.rs b/tip-router-operator-cli/src/ledger_utils.rs index f2e4c9c3..9c8586c7 100644 --- a/tip-router-operator-cli/src/ledger_utils.rs +++ b/tip-router-operator-cli/src/ledger_utils.rs @@ -173,26 +173,6 @@ pub fn get_bank_from_ledger( ..Default::default() }; let exit = Arc::new(AtomicBool::new(false)); - - // Call ledger_utils::load_and_process_ledger here - // let LoadAndProcessLedgerOutput { - // bank_forks, - // starting_snapshot_hashes, - // accounts_background_service, - // .. - // } = match solana_ledger_tool::ledger_utils::load_and_process_ledger( - // &genesis_config, - // &blockstore, - // account_paths, - // None, - // Some(&snapshot_config), - // ) { - // Ok(res) => res, - // Err(e) => { - // panic!("Failed to load bank forks: {}", e); - // } - // }; - let (bank_forks, leader_schedule_cache, _starting_snapshot_hashes, ..) = match bank_forks_utils::load_bank_forks( &genesis_config, diff --git a/tip-router-operator-cli/src/lib.rs b/tip-router-operator-cli/src/lib.rs index 1df10ccf..03a7f53c 100644 --- a/tip-router-operator-cli/src/lib.rs +++ b/tip-router-operator-cli/src/lib.rs @@ -4,15 +4,11 @@ pub mod tip_router; pub use crate::cli::{Cli, Commands}; pub mod cli; pub use crate::process_epoch::process_epoch; -pub mod arg_matches; pub mod backup_snapshots; -mod load_and_process_ledger; pub mod process_epoch; pub mod submit; -use std::fs; use std::path::{Path, PathBuf}; -use std::process::Command; use std::time::Instant; use anchor_lang::prelude::*; @@ -190,109 +186,3 @@ pub fn get_meta_merkle_root( Ok(meta_merkle_tree) } - -fn get_validator_cmdline() -> Result { - let output = Command::new("pgrep").arg("solana-validator").output()?; - - let pid = String::from_utf8_lossy(&output.stdout).trim().to_string(); - - let cmdline = fs::read_to_string(format!("/proc/{}/cmdline", pid))?; - - Ok(cmdline.replace('\0', " ")) -} - -pub fn emit_solana_validator_args() -> std::result::Result<(), anyhow::Error> { - // Find solana-validator process and get its command line args - let validator_cmdline = match get_validator_cmdline() { - Ok(cmdline) => cmdline, - Err(_) => return Err(anyhow::anyhow!("Validator process not found")), - }; - - let validator_config: Vec = validator_cmdline - .split_whitespace() - .map(String::from) - .collect(); - - if validator_config.is_empty() { - return Err(anyhow::anyhow!("Validator process not found")); - } - - let mut limit_ledger_size = None; - let mut full_snapshot_interval = None; - let mut max_full_snapshots = None; - let mut incremental_snapshot_path = None; - let mut incremental_snapshot_interval = None; - let mut max_incremental_snapshots = None; - - for (i, arg) in validator_config.iter().enumerate() { - match arg.as_str() { - "--limit-ledger-size" => { - if let Some(value) = validator_config.get(i + 1) { - limit_ledger_size = Some(value.clone()); - } - } - "--full-snapshot-interval-slots" => { - if let Some(value) = validator_config.get(i + 1) { - full_snapshot_interval = Some(value.clone()); - } - } - "--maximum-full-snapshots-to-retain" => { - if let Some(value) = validator_config.get(i + 1) { - max_full_snapshots = Some(value.clone()); - } - } - "--incremental-snapshot-archive-path" => { - if let Some(value) = validator_config.get(i + 1) { - incremental_snapshot_path = Some(value.clone()); - } - } - "--incremental-snapshot-interval-slots" => { - if let Some(value) = validator_config.get(i + 1) { - incremental_snapshot_interval = Some(value.clone()); - } - } - "--maximum-incremental-snapshots-to-retain" => { - if let Some(value) = validator_config.get(i + 1) { - max_incremental_snapshots = Some(value.clone()); - } - } - _ => {} - } - } - - datapoint_info!( - "tip_router_cli.validator_config", - ( - "limit_ledger_size", - limit_ledger_size.unwrap_or_default(), - String - ), - ( - "full_snapshot_interval", - full_snapshot_interval.unwrap_or_default(), - String - ), - ( - "max_full_snapshots", - max_full_snapshots.unwrap_or_default(), - String - ), - ( - "incremental_snapshot_path", - incremental_snapshot_path.unwrap_or_default(), - String - ), - ( - "incremental_snapshot_interval", - incremental_snapshot_interval.unwrap_or_default(), - String - ), - ( - "max_incremental_snapshots", - max_incremental_snapshots.unwrap_or_default(), - String - ) - ); - - Ok(()) -} diff --git a/tip-router-operator-cli/src/load_and_process_ledger.rs b/tip-router-operator-cli/src/load_and_process_ledger.rs deleted file mode 100644 index 9c0ec9f4..00000000 --- a/tip-router-operator-cli/src/load_and_process_ledger.rs +++ /dev/null @@ -1,586 +0,0 @@ -use { - clap_old::{value_t, value_t_or_exit, values_t_or_exit, ArgMatches}, - crossbeam_channel::unbounded, - log::*, - solana_accounts_db::{ - hardened_unpack::open_genesis_config, utils::create_all_accounts_run_and_snapshot_dirs, - }, - solana_core::{ - accounts_hash_verifier::AccountsHashVerifier, validator::BlockVerificationMethod, - }, - solana_geyser_plugin_manager::geyser_plugin_service::{ - GeyserPluginService, GeyserPluginServiceError, - }, - solana_gossip::{cluster_info::ClusterInfo, contact_info::ContactInfo}, - solana_ledger::{ - bank_forks_utils::{self, BankForksUtilsError}, - blockstore::{Blockstore, BlockstoreError}, - blockstore_options::{ - AccessType, BlockstoreOptions, BlockstoreRecoveryMode, LedgerColumnOptions, - ShredStorageType, - }, - blockstore_processor::{ - self, BlockstoreProcessorError, ProcessOptions, TransactionStatusSender, - }, - use_snapshot_archives_at_startup::UseSnapshotArchivesAtStartup, - }, - solana_measure::measure, - solana_rpc::transaction_status_service::TransactionStatusService, - solana_runtime::{ - accounts_background_service::{ - AbsRequestHandlers, AbsRequestSender, AccountsBackgroundService, - PrunedBanksRequestHandler, SnapshotRequestHandler, - }, - bank_forks::BankForks, - prioritization_fee_cache::PrioritizationFeeCache, - snapshot_config::SnapshotConfig, - snapshot_hash::StartingSnapshotHashes, - snapshot_utils::{ - self, clean_orphaned_account_snapshot_dirs, move_and_async_delete_path_contents, - }, - }, - solana_sdk::{ - clock::Slot, genesis_config::GenesisConfig, pubkey::Pubkey, signature::Signer, - signer::keypair::Keypair, timing::timestamp, transaction::VersionedTransaction, - }, - solana_streamer::socket::SocketAddrSpace, - solana_unified_scheduler_pool::DefaultSchedulerPool, - std::{ - path::{Path, PathBuf}, - process::exit, - sync::{ - atomic::{AtomicBool, Ordering}, - Arc, RwLock, - }, - }, - thiserror::Error, -}; - -pub const LEDGER_TOOL_DIRECTORY: &str = "ledger_tool"; - -const PROCESS_SLOTS_HELP_STRING: &str = - "The starting slot is either the latest found snapshot slot, or genesis (slot 0) if the \ - --no-snapshot flag was specified or if no snapshots were found. \ - The ending slot is the snapshot creation slot for create-snapshot, the value for \ - --halt-at-slot if specified, or the highest slot in the blockstore."; - -#[derive(Error, Debug)] -pub(crate) enum LoadAndProcessLedgerError { - #[error("failed to clean orphaned account snapshot directories: {0}")] - CleanOrphanedAccountSnapshotDirectories(#[source] std::io::Error), - - #[error("failed to create all run and snapshot directories: {0}")] - CreateAllAccountsRunAndSnapshotDirectories(#[source] std::io::Error), - - #[error("custom accounts path is not supported with seconday blockstore access")] - CustomAccountsPathUnsupported(#[source] BlockstoreError), - - #[error( - "failed to process blockstore from starting slot {0} to ending slot {1}; the ending slot \ - is less than the starting slot. {2}" - )] - EndingSlotLessThanStartingSlot(Slot, Slot, String), - - #[error( - "failed to process blockstore from starting slot {0} to ending slot {1}; the blockstore \ - does not contain a replayable sequence of blocks between these slots. {2}" - )] - EndingSlotNotReachableFromStartingSlot(Slot, Slot, String), - - #[error("failed to setup geyser service: {0}")] - GeyserServiceSetup(#[source] GeyserPluginServiceError), - - #[error("failed to load bank forks: {0}")] - LoadBankForks(#[source] BankForksUtilsError), - - #[error("failed to process blockstore from root: {0}")] - ProcessBlockstoreFromRoot(#[source] BlockstoreProcessorError), -} - -pub fn load_and_process_ledger_or_exit( - arg_matches: &ArgMatches, - genesis_config: &GenesisConfig, - blockstore: Arc, - process_options: ProcessOptions, - snapshot_archive_path: Option, - incremental_snapshot_archive_path: Option, -) -> (Arc>, Option) { - load_and_process_ledger( - arg_matches, - genesis_config, - blockstore, - process_options, - snapshot_archive_path, - incremental_snapshot_archive_path, - ) - .unwrap_or_else(|err| { - eprintln!("Exiting. Failed to load and process ledger: {err}"); - exit(1); - }) -} - -pub fn load_and_process_ledger( - arg_matches: &ArgMatches, - genesis_config: &GenesisConfig, - blockstore: Arc, - process_options: ProcessOptions, - snapshot_archive_path: Option, - incremental_snapshot_archive_path: Option, -) -> Result<(Arc>, Option), LoadAndProcessLedgerError> { - let bank_snapshots_dir = if blockstore.is_primary_access() { - blockstore.ledger_path().join("snapshot") - } else { - blockstore - .ledger_path() - .join(LEDGER_TOOL_DIRECTORY) - .join("snapshot") - }; - - let mut starting_slot = 0; // default start check with genesis - let snapshot_config = if arg_matches.is_present("no_snapshot") { - None - } else { - let full_snapshot_archives_dir = - snapshot_archive_path.unwrap_or_else(|| blockstore.ledger_path().to_path_buf()); - let incremental_snapshot_archives_dir = - incremental_snapshot_archive_path.unwrap_or_else(|| full_snapshot_archives_dir.clone()); - if let Some(full_snapshot_slot) = snapshot_utils::get_highest_full_snapshot_archive_slot( - &full_snapshot_archives_dir, - None, - ) { - let incremental_snapshot_slot = - snapshot_utils::get_highest_incremental_snapshot_archive_slot( - &incremental_snapshot_archives_dir, - full_snapshot_slot, - None, - ) - .unwrap_or_default(); - starting_slot = std::cmp::max(full_snapshot_slot, incremental_snapshot_slot); - } - - Some(SnapshotConfig { - full_snapshot_archives_dir, - incremental_snapshot_archives_dir, - bank_snapshots_dir: bank_snapshots_dir.clone(), - ..SnapshotConfig::new_load_only() - }) - }; - - match process_options.halt_at_slot { - // Skip the following checks for sentinel values of Some(0) and None. - // For Some(0), no slots will be be replayed after starting_slot. - // For None, all available children of starting_slot will be replayed. - None | Some(0) => {} - Some(halt_slot) => { - if halt_slot < starting_slot { - return Err(LoadAndProcessLedgerError::EndingSlotLessThanStartingSlot( - starting_slot, - halt_slot, - PROCESS_SLOTS_HELP_STRING.to_string(), - )); - } - // Check if we have the slot data necessary to replay from starting_slot to >= halt_slot. - if !blockstore.slot_range_connected(starting_slot, halt_slot) { - return Err( - LoadAndProcessLedgerError::EndingSlotNotReachableFromStartingSlot( - starting_slot, - halt_slot, - PROCESS_SLOTS_HELP_STRING.to_string(), - ), - ); - } - } - } - - let account_paths = if let Some(account_paths) = arg_matches.value_of("account_paths") { - // If this blockstore access is Primary, no other process (agave-validator) can hold - // Primary access. So, allow a custom accounts path without worry of wiping the accounts - // of agave-validator. - if !blockstore.is_primary_access() { - // Attempt to open the Blockstore in Primary access; if successful, no other process - // was holding Primary so allow things to proceed with custom accounts path. Release - // the Primary access instead of holding it to give priority to agave-validator over - // agave-ledger-tool should agave-validator start before we've finished. - info!( - "Checking if another process currently holding Primary access to {:?}", - blockstore.ledger_path() - ); - Blockstore::open_with_options( - blockstore.ledger_path(), - BlockstoreOptions { - access_type: AccessType::PrimaryForMaintenance, - ..BlockstoreOptions::default() - }, - ) - // Couldn't get Primary access, error out to be defensive. - .map_err(LoadAndProcessLedgerError::CustomAccountsPathUnsupported)?; - } - account_paths.split(',').map(PathBuf::from).collect() - } else if blockstore.is_primary_access() { - vec![blockstore.ledger_path().join("accounts")] - } else { - let non_primary_accounts_path = blockstore - .ledger_path() - .join(LEDGER_TOOL_DIRECTORY) - .join("accounts"); - info!( - "Default accounts path is switched aligning with Blockstore's secondary access: {:?}", - non_primary_accounts_path - ); - vec![non_primary_accounts_path] - }; - - let (account_run_paths, account_snapshot_paths) = - create_all_accounts_run_and_snapshot_dirs(&account_paths) - .map_err(LoadAndProcessLedgerError::CreateAllAccountsRunAndSnapshotDirectories)?; - // From now on, use run/ paths in the same way as the previous account_paths. - let account_paths = account_run_paths; - - let (_, measure_clean_account_paths) = measure!( - account_paths.iter().for_each(|path| { - if path.exists() { - info!("Cleaning contents of account path: {}", path.display()); - move_and_async_delete_path_contents(path); - } - }), - "Cleaning account paths" - ); - info!("{measure_clean_account_paths}"); - - snapshot_utils::purge_incomplete_bank_snapshots(&bank_snapshots_dir); - - info!("Cleaning contents of account snapshot paths: {account_snapshot_paths:?}"); - clean_orphaned_account_snapshot_dirs(&bank_snapshots_dir, &account_snapshot_paths) - .map_err(LoadAndProcessLedgerError::CleanOrphanedAccountSnapshotDirectories)?; - - let geyser_plugin_active = arg_matches.is_present("geyser_plugin_config"); - let (accounts_update_notifier, transaction_notifier) = if geyser_plugin_active { - let geyser_config_files = vec![]; // values_t_or_exit!(arg_matches, "geyser_plugin_config", String) - // .into_iter() - // .map(PathBuf::from) - // .collect::>(); - - let (confirmed_bank_sender, confirmed_bank_receiver) = unbounded(); - drop(confirmed_bank_sender); - let geyser_service = - GeyserPluginService::new(confirmed_bank_receiver, &geyser_config_files) - .map_err(LoadAndProcessLedgerError::GeyserServiceSetup)?; - ( - geyser_service.get_accounts_update_notifier(), - geyser_service.get_transaction_notifier(), - ) - } else { - (None, None) - }; - - let exit = Arc::new(AtomicBool::new(false)); - let (bank_forks, leader_schedule_cache, starting_snapshot_hashes, ..) = - bank_forks_utils::load_bank_forks( - genesis_config, - blockstore.as_ref(), - account_paths, - None, - snapshot_config.as_ref(), - &process_options, - None, - None, // Maybe support this later, though - accounts_update_notifier, - exit.clone(), - false, - ) - .map_err(LoadAndProcessLedgerError::LoadBankForks)?; - let block_verification_method = BlockVerificationMethod::default(); - // let block_verification_method = value_t!( - // arg_matches, - // "block_verification_method", - // BlockVerificationMethod - // ) - // .unwrap_or_default(); - info!( - "Using: block-verification-method: {}", - block_verification_method, - ); - match block_verification_method { - BlockVerificationMethod::BlockstoreProcessor => { - info!("no scheduler pool is installed for block verification..."); - } - BlockVerificationMethod::UnifiedScheduler => { - let no_transaction_status_sender = None; - let no_replay_vote_sender = None; - let ignored_prioritization_fee_cache = Arc::new(PrioritizationFeeCache::new(0u64)); - bank_forks - .write() - .unwrap() - .install_scheduler_pool(DefaultSchedulerPool::new_dyn( - process_options.runtime_config.log_messages_bytes_limit, - no_transaction_status_sender, - no_replay_vote_sender, - ignored_prioritization_fee_cache, - )); - } - } - - let node_id = Arc::new(Keypair::new()); - let cluster_info = Arc::new(ClusterInfo::new( - ContactInfo::new_localhost(&node_id.pubkey(), timestamp()), - Arc::clone(&node_id), - SocketAddrSpace::Unspecified, - )); - let (accounts_package_sender, accounts_package_receiver) = crossbeam_channel::unbounded(); - let accounts_hash_verifier = AccountsHashVerifier::new( - accounts_package_sender.clone(), - accounts_package_receiver, - None, - exit.clone(), - cluster_info, - None, - SnapshotConfig::new_load_only(), - ); - let (snapshot_request_sender, snapshot_request_receiver) = crossbeam_channel::unbounded(); - let accounts_background_request_sender = AbsRequestSender::new(snapshot_request_sender.clone()); - let snapshot_request_handler = SnapshotRequestHandler { - snapshot_config: SnapshotConfig::new_load_only(), - snapshot_request_sender, - snapshot_request_receiver, - accounts_package_sender, - }; - let pruned_banks_receiver = - AccountsBackgroundService::setup_bank_drop_callback(bank_forks.clone()); - let pruned_banks_request_handler = PrunedBanksRequestHandler { - pruned_banks_receiver, - }; - let abs_request_handler = AbsRequestHandlers { - snapshot_request_handler, - pruned_banks_request_handler, - }; - let accounts_background_service = AccountsBackgroundService::new( - bank_forks.clone(), - exit.clone(), - abs_request_handler, - process_options.accounts_db_test_hash_calculation, - starting_snapshot_hashes.map(|x| x.full.0 .0), - ); - - let enable_rpc_transaction_history = arg_matches.is_present("enable_rpc_transaction_history"); - - let (transaction_status_sender, transaction_status_service) = if geyser_plugin_active - || enable_rpc_transaction_history - { - // Need Primary (R/W) access to insert transaction data; - // obtain Primary access if we do not already have it - let tss_blockstore = if enable_rpc_transaction_history && !blockstore.is_primary_access() { - Arc::new(open_blockstore( - blockstore.ledger_path(), - arg_matches, - AccessType::PrimaryForMaintenance, - )) - } else { - blockstore.clone() - }; - - let (transaction_status_sender, transaction_status_receiver) = unbounded(); - let transaction_status_service = TransactionStatusService::new( - transaction_status_receiver, - Arc::default(), - enable_rpc_transaction_history, - transaction_notifier, - tss_blockstore, - false, - exit.clone(), - ); - ( - Some(TransactionStatusSender { - sender: transaction_status_sender, - }), - Some(transaction_status_service), - ) - } else { - (None, None) - }; - - let result = blockstore_processor::process_blockstore_from_root( - blockstore.as_ref(), - &bank_forks, - &leader_schedule_cache, - &process_options, - transaction_status_sender.as_ref(), - None, - None, // Maybe support this later, though - &accounts_background_request_sender, - ) - .map(|_| (bank_forks, starting_snapshot_hashes)) - .map_err(LoadAndProcessLedgerError::ProcessBlockstoreFromRoot); - - exit.store(true, Ordering::Relaxed); - accounts_background_service.join().unwrap(); - accounts_hash_verifier.join().unwrap(); - if let Some(service) = transaction_status_service { - service.join().unwrap(); - } - - result -} - -pub fn open_blockstore( - ledger_path: &Path, - matches: &ArgMatches, - access_type: AccessType, -) -> Blockstore { - let wal_recovery_mode = matches - .value_of("wal_recovery_mode") - .map(BlockstoreRecoveryMode::from); - let force_update_to_open = matches.is_present("force_update_to_open"); - let enforce_ulimit_nofile = !matches.is_present("ignore_ulimit_nofile_error"); - let shred_storage_type = get_shred_storage_type( - ledger_path, - &format!( - "Shred storage type cannot be inferred for ledger at {ledger_path:?}, using default \ - RocksLevel", - ), - ); - - match Blockstore::open_with_options( - ledger_path, - BlockstoreOptions { - access_type: access_type.clone(), - recovery_mode: wal_recovery_mode.clone(), - enforce_ulimit_nofile, - column_options: LedgerColumnOptions { - shred_storage_type, - ..LedgerColumnOptions::default() - }, - }, - ) { - Ok(blockstore) => blockstore, - Err(BlockstoreError::RocksDb(err)) => { - // Missing essential file, indicative of blockstore not existing - let missing_blockstore = err - .to_string() - .starts_with("IO error: No such file or directory:"); - // Missing column in blockstore that is expected by software - let missing_column = err - .to_string() - .starts_with("Invalid argument: Column family not found:"); - // The blockstore settings with Primary access can resolve the - // above issues automatically, so only emit the help messages - // if access type is Secondary - let is_secondary = access_type == AccessType::Secondary; - - if missing_blockstore && is_secondary { - eprintln!( - "Failed to open blockstore at {ledger_path:?}, it is missing at least one \ - critical file: {err:?}" - ); - } else if missing_column && is_secondary { - eprintln!( - "Failed to open blockstore at {ledger_path:?}, it does not have all necessary \ - columns: {err:?}" - ); - } else { - eprintln!("Failed to open blockstore at {ledger_path:?}: {err:?}"); - exit(1); - } - if !force_update_to_open { - eprintln!("Use --force-update-to-open flag to attempt to update the blockstore"); - exit(1); - } - open_blockstore_with_temporary_primary_access( - ledger_path, - access_type, - wal_recovery_mode, - ) - .unwrap_or_else(|err| { - eprintln!( - "Failed to open blockstore (with --force-update-to-open) at {:?}: {:?}", - ledger_path, err - ); - exit(1); - }) - } - Err(err) => { - eprintln!("Failed to open blockstore at {ledger_path:?}: {err:?}"); - exit(1); - } - } -} - -pub fn get_shred_storage_type(ledger_path: &Path, message: &str) -> ShredStorageType { - // TODO: the following shred_storage_type inference must be updated once - // the rocksdb options can be constructed via load_options_file() as the - // value picked by passing None for `max_shred_storage_size` could affect - // the persisted rocksdb options file. - match ShredStorageType::from_ledger_path(ledger_path, None) { - Some(s) => s, - None => { - info!("{}", message); - ShredStorageType::RocksLevel - } - } -} - -/// Open blockstore with temporary primary access to allow necessary, -/// persistent changes to be made to the blockstore (such as creation of new -/// column family(s)). Then, continue opening with `original_access_type` -fn open_blockstore_with_temporary_primary_access( - ledger_path: &Path, - original_access_type: AccessType, - wal_recovery_mode: Option, -) -> Result { - // Open with Primary will allow any configuration that automatically - // updates to take effect - info!("Attempting to temporarily open blockstore with Primary access in order to update"); - { - let _ = Blockstore::open_with_options( - ledger_path, - BlockstoreOptions { - access_type: AccessType::PrimaryForMaintenance, - recovery_mode: wal_recovery_mode.clone(), - enforce_ulimit_nofile: true, - ..BlockstoreOptions::default() - }, - )?; - } - // Now, attempt to open the blockstore with original AccessType - info!( - "Blockstore forced open succeeded, retrying with original access: {:?}", - original_access_type - ); - Blockstore::open_with_options( - ledger_path, - BlockstoreOptions { - access_type: original_access_type, - recovery_mode: wal_recovery_mode, - enforce_ulimit_nofile: true, - ..BlockstoreOptions::default() - }, - ) -} - -pub fn open_genesis_config_by(ledger_path: &Path, matches: &ArgMatches<'_>) -> GenesisConfig { - const MAX_GENESIS_ARCHIVE_UNPACKED_SIZE: u64 = 10 * 1024 * 1024; // 10 MiB - let max_genesis_archive_unpacked_size = MAX_GENESIS_ARCHIVE_UNPACKED_SIZE; - - open_genesis_config(ledger_path, max_genesis_archive_unpacked_size).unwrap_or_else(|err| { - eprintln!("Exiting. Failed to open genesis config: {err}"); - exit(1); - }) -} - -pub fn get_program_ids(tx: &VersionedTransaction) -> impl Iterator + '_ { - let message = &tx.message; - let account_keys = message.static_account_keys(); - - message - .instructions() - .iter() - .map(|ix| ix.program_id(account_keys)) -} - -/// Get the AccessType required, based on `process_options` -pub(crate) fn get_access_type(process_options: &ProcessOptions) -> AccessType { - match process_options.use_snapshot_archives_at_startup { - UseSnapshotArchivesAtStartup::Always => AccessType::Secondary, - UseSnapshotArchivesAtStartup::Never => AccessType::PrimaryForMaintenance, - UseSnapshotArchivesAtStartup::WhenNewest => AccessType::PrimaryForMaintenance, - } -} diff --git a/tip-router-operator-cli/src/main.rs b/tip-router-operator-cli/src/main.rs index 5842ae60..05ef079e 100644 --- a/tip-router-operator-cli/src/main.rs +++ b/tip-router-operator-cli/src/main.rs @@ -3,7 +3,7 @@ use ::{ clap::Parser, ellipsis_client::{ClientSubset, EllipsisClient}, log::{error, info}, - solana_metrics::{datapoint_info, set_host_id}, + solana_metrics::set_host_id, solana_rpc_client::rpc_client::RpcClient, solana_sdk::{ clock::DEFAULT_SLOTS_PER_EPOCH, @@ -40,7 +40,23 @@ async fn main() -> Result<()> { let tx = Transaction::new_with_payer(&[ix], Some(&keypair.pubkey())); rpc_client.process_transaction(tx, &[&keypair]).await?; - info!("CLI Arguments: {:?}", cli); + info!( + "CLI Arguments: + keypair_path: {} + operator_address: {} + rpc_url: {} + ledger_path: {} + account_paths: {:?} + full_snapshots_path: {:?} + snapshot_output_dir: {}", + cli.keypair_path, + cli.operator_address, + cli.rpc_url, + cli.ledger_path.display(), + cli.account_paths, + cli.full_snapshots_path, + cli.snapshot_output_dir.display() + ); match cli.command { Commands::Run {